go.temporal.io/server@v1.23.0/common/persistence/serialization/task_serializer.go (about) 1 // The MIT License 2 // 3 // Copyright (c) 2020 Temporal Technologies Inc. All rights reserved. 4 // 5 // Copyright (c) 2020 Uber Technologies, Inc. 6 // 7 // Permission is hereby granted, free of charge, to any person obtaining a copy 8 // of this software and associated documentation files (the "Software"), to deal 9 // in the Software without restriction, including without limitation the rights 10 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 // copies of the Software, and to permit persons to whom the Software is 12 // furnished to do so, subject to the following conditions: 13 // 14 // The above copyright notice and this permission notice shall be included in 15 // all copies or substantial portions of the Software. 16 // 17 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 // THE SOFTWARE. 24 25 package serialization 26 27 import ( 28 "fmt" 29 "time" 30 31 commonpb "go.temporal.io/api/common/v1" 32 enumspb "go.temporal.io/api/enums/v1" 33 "go.temporal.io/api/serviceerror" 34 "google.golang.org/protobuf/types/known/timestamppb" 35 36 enumsspb "go.temporal.io/server/api/enums/v1" 37 persistencespb "go.temporal.io/server/api/persistence/v1" 38 "go.temporal.io/server/common/definition" 39 "go.temporal.io/server/service/history/tasks" 40 ) 41 42 type ( 43 TaskSerializer struct { 44 } 45 ) 46 47 func NewTaskSerializer() *TaskSerializer { 48 return &TaskSerializer{} 49 } 50 51 func (s *TaskSerializer) SerializeTask( 52 task tasks.Task, 53 ) (*commonpb.DataBlob, error) { 54 category := task.GetCategory() 55 switch category.ID() { 56 case tasks.CategoryIDTransfer: 57 return s.serializeTransferTask(task) 58 case tasks.CategoryIDTimer: 59 return s.serializeTimerTask(task) 60 case tasks.CategoryIDVisibility: 61 return s.serializeVisibilityTask(task) 62 case tasks.CategoryIDReplication: 63 return s.serializeReplicationTask(task) 64 case tasks.CategoryIDArchival: 65 return s.serializeArchivalTask(task) 66 default: 67 return nil, serviceerror.NewInternal(fmt.Sprintf("Unknown task category: %v", category)) 68 } 69 } 70 71 func (s *TaskSerializer) DeserializeTask( 72 category tasks.Category, 73 blob *commonpb.DataBlob, 74 ) (tasks.Task, error) { 75 switch category.ID() { 76 case tasks.CategoryIDTransfer: 77 return s.deserializeTransferTasks(blob) 78 case tasks.CategoryIDTimer: 79 return s.deserializeTimerTasks(blob) 80 case tasks.CategoryIDVisibility: 81 return s.deserializeVisibilityTasks(blob) 82 case tasks.CategoryIDReplication: 83 return s.deserializeReplicationTasks(blob) 84 case tasks.CategoryIDArchival: 85 return s.deserializeArchivalTasks(blob) 86 default: 87 return nil, serviceerror.NewInternal(fmt.Sprintf("Unknown task category: %v", category)) 88 } 89 } 90 91 func (s *TaskSerializer) serializeTransferTask( 92 task tasks.Task, 93 ) (*commonpb.DataBlob, error) { 94 var transferTask *persistencespb.TransferTaskInfo 95 switch task := task.(type) { 96 case *tasks.WorkflowTask: 97 transferTask = s.transferWorkflowTaskToProto(task) 98 case *tasks.ActivityTask: 99 transferTask = s.transferActivityTaskToProto(task) 100 case *tasks.CancelExecutionTask: 101 transferTask = s.transferRequestCancelTaskToProto(task) 102 case *tasks.SignalExecutionTask: 103 transferTask = s.transferSignalTaskToProto(task) 104 case *tasks.StartChildExecutionTask: 105 transferTask = s.transferChildWorkflowTaskToProto(task) 106 case *tasks.CloseExecutionTask: 107 transferTask = s.transferCloseTaskToProto(task) 108 case *tasks.ResetWorkflowTask: 109 transferTask = s.transferResetTaskToProto(task) 110 case *tasks.DeleteExecutionTask: 111 transferTask = s.transferDeleteExecutionTaskToProto(task) 112 default: 113 return nil, serviceerror.NewInternal(fmt.Sprintf("Unknown transfer task type: %v", task)) 114 } 115 116 return TransferTaskInfoToBlob(transferTask) 117 } 118 119 func (s *TaskSerializer) deserializeTransferTasks( 120 blob *commonpb.DataBlob, 121 ) (tasks.Task, error) { 122 transferTask, err := TransferTaskInfoFromBlob(blob.Data, blob.EncodingType.String()) 123 if err != nil { 124 return nil, err 125 } 126 127 var task tasks.Task 128 switch transferTask.TaskType { 129 case enumsspb.TASK_TYPE_TRANSFER_WORKFLOW_TASK: 130 task = s.transferWorkflowTaskFromProto(transferTask) 131 case enumsspb.TASK_TYPE_TRANSFER_ACTIVITY_TASK: 132 task = s.transferActivityTaskFromProto(transferTask) 133 case enumsspb.TASK_TYPE_TRANSFER_CANCEL_EXECUTION: 134 task = s.transferRequestCancelTaskFromProto(transferTask) 135 case enumsspb.TASK_TYPE_TRANSFER_SIGNAL_EXECUTION: 136 task = s.transferSignalTaskFromProto(transferTask) 137 case enumsspb.TASK_TYPE_TRANSFER_START_CHILD_EXECUTION: 138 task = s.transferChildWorkflowTaskFromProto(transferTask) 139 case enumsspb.TASK_TYPE_TRANSFER_CLOSE_EXECUTION: 140 task = s.transferCloseTaskFromProto(transferTask) 141 case enumsspb.TASK_TYPE_TRANSFER_RESET_WORKFLOW: 142 task = s.transferResetTaskFromProto(transferTask) 143 case enumsspb.TASK_TYPE_TRANSFER_DELETE_EXECUTION: 144 task = s.transferDeleteExecutionTaskFromProto(transferTask) 145 default: 146 return nil, serviceerror.NewInternal(fmt.Sprintf("Unknown transfer task type: %v", transferTask.TaskType)) 147 } 148 return task, nil 149 } 150 151 func (s *TaskSerializer) serializeTimerTask( 152 task tasks.Task, 153 ) (*commonpb.DataBlob, error) { 154 var timerTask *persistencespb.TimerTaskInfo 155 switch task := task.(type) { 156 case *tasks.WorkflowTaskTimeoutTask: 157 timerTask = s.timerWorkflowTaskToProto(task) 158 case *tasks.WorkflowBackoffTimerTask: 159 timerTask = s.timerWorkflowDelayTaskToProto(task) 160 case *tasks.ActivityTimeoutTask: 161 timerTask = s.timerActivityTaskToProto(task) 162 case *tasks.ActivityRetryTimerTask: 163 timerTask = s.timerActivityRetryTaskToProto(task) 164 case *tasks.UserTimerTask: 165 timerTask = s.timerUserTaskToProto(task) 166 case *tasks.WorkflowTimeoutTask: 167 timerTask = s.timerWorkflowRunToProto(task) 168 case *tasks.DeleteHistoryEventTask: 169 timerTask = s.timerWorkflowCleanupTaskToProto(task) 170 default: 171 return nil, serviceerror.NewInternal(fmt.Sprintf("Unknown timer task type: %v", task)) 172 } 173 174 return TimerTaskInfoToBlob(timerTask) 175 } 176 177 func (s *TaskSerializer) deserializeTimerTasks( 178 blob *commonpb.DataBlob, 179 ) (tasks.Task, error) { 180 timerTask, err := TimerTaskInfoFromBlob(blob.Data, blob.EncodingType.String()) 181 if err != nil { 182 return nil, err 183 } 184 185 var timer tasks.Task 186 switch timerTask.TaskType { 187 case enumsspb.TASK_TYPE_WORKFLOW_TASK_TIMEOUT: 188 timer = s.timerWorkflowTaskFromProto(timerTask) 189 case enumsspb.TASK_TYPE_WORKFLOW_BACKOFF_TIMER: 190 timer = s.timerWorkflowDelayTaskFromProto(timerTask) 191 case enumsspb.TASK_TYPE_ACTIVITY_TIMEOUT: 192 timer = s.timerActivityTaskFromProto(timerTask) 193 case enumsspb.TASK_TYPE_ACTIVITY_RETRY_TIMER: 194 timer = s.timerActivityRetryTaskFromProto(timerTask) 195 case enumsspb.TASK_TYPE_USER_TIMER: 196 timer = s.timerUserTaskFromProto(timerTask) 197 case enumsspb.TASK_TYPE_WORKFLOW_RUN_TIMEOUT: 198 timer = s.timerWorkflowRunFromProto(timerTask) 199 case enumsspb.TASK_TYPE_DELETE_HISTORY_EVENT: 200 timer = s.timerWorkflowCleanupTaskFromProto(timerTask) 201 default: 202 return nil, serviceerror.NewInternal(fmt.Sprintf("Unknown timer task type: %v", timerTask.TaskType)) 203 } 204 return timer, nil 205 } 206 207 func (s *TaskSerializer) serializeVisibilityTask( 208 task tasks.Task, 209 ) (*commonpb.DataBlob, error) { 210 var visibilityTask *persistencespb.VisibilityTaskInfo 211 switch task := task.(type) { 212 case *tasks.StartExecutionVisibilityTask: 213 visibilityTask = s.visibilityStartTaskToProto(task) 214 case *tasks.UpsertExecutionVisibilityTask: 215 visibilityTask = s.visibilityUpsertTaskToProto(task) 216 case *tasks.CloseExecutionVisibilityTask: 217 visibilityTask = s.visibilityCloseTaskToProto(task) 218 case *tasks.DeleteExecutionVisibilityTask: 219 visibilityTask = s.visibilityDeleteTaskToProto(task) 220 default: 221 return nil, serviceerror.NewInternal(fmt.Sprintf("Unknown visibility task type: %v", task)) 222 } 223 224 return VisibilityTaskInfoToBlob(visibilityTask) 225 } 226 227 func (s *TaskSerializer) deserializeVisibilityTasks( 228 blob *commonpb.DataBlob, 229 ) (tasks.Task, error) { 230 visibilityTask, err := VisibilityTaskInfoFromBlob(blob.Data, blob.EncodingType.String()) 231 if err != nil { 232 return nil, err 233 } 234 235 var visibility tasks.Task 236 switch visibilityTask.TaskType { 237 case enumsspb.TASK_TYPE_VISIBILITY_START_EXECUTION: 238 visibility = s.visibilityStartTaskFromProto(visibilityTask) 239 case enumsspb.TASK_TYPE_VISIBILITY_UPSERT_EXECUTION: 240 visibility = s.visibilityUpsertTaskFromProto(visibilityTask) 241 case enumsspb.TASK_TYPE_VISIBILITY_CLOSE_EXECUTION: 242 visibility = s.visibilityCloseTaskFromProto(visibilityTask) 243 case enumsspb.TASK_TYPE_VISIBILITY_DELETE_EXECUTION: 244 visibility = s.visibilityDeleteTaskFromProto(visibilityTask) 245 default: 246 return nil, serviceerror.NewInternal(fmt.Sprintf("Unknown visibility task type: %v", visibilityTask.TaskType)) 247 } 248 return visibility, nil 249 } 250 251 func (s *TaskSerializer) serializeReplicationTask( 252 task tasks.Task, 253 ) (*commonpb.DataBlob, error) { 254 var replicationTask *persistencespb.ReplicationTaskInfo 255 switch task := task.(type) { 256 case *tasks.SyncActivityTask: 257 replicationTask = s.replicationActivityTaskToProto(task) 258 case *tasks.HistoryReplicationTask: 259 replicationTask = s.replicationHistoryTaskToProto(task) 260 case *tasks.SyncWorkflowStateTask: 261 replicationTask = s.replicationSyncWorkflowStateTaskToProto(task) 262 default: 263 return nil, serviceerror.NewInternal(fmt.Sprintf("Unknown repication task type: %v", task)) 264 } 265 266 return ReplicationTaskInfoToBlob(replicationTask) 267 } 268 269 func (s *TaskSerializer) deserializeReplicationTasks( 270 blob *commonpb.DataBlob, 271 ) (tasks.Task, error) { 272 replicationTask, err := ReplicationTaskInfoFromBlob(blob.Data, blob.EncodingType.String()) 273 if err != nil { 274 return nil, err 275 } 276 return s.ParseReplicationTask(replicationTask) 277 } 278 279 func (s *TaskSerializer) ParseReplicationTask(replicationTask *persistencespb.ReplicationTaskInfo) (tasks.Task, error) { 280 switch replicationTask.TaskType { 281 case enumsspb.TASK_TYPE_REPLICATION_SYNC_ACTIVITY: 282 return s.replicationActivityTaskFromProto(replicationTask), nil 283 case enumsspb.TASK_TYPE_REPLICATION_HISTORY: 284 return s.replicationHistoryTaskFromProto(replicationTask), nil 285 case enumsspb.TASK_TYPE_REPLICATION_SYNC_WORKFLOW_STATE: 286 return s.replicationSyncWorkflowStateTaskFromProto(replicationTask), nil 287 default: 288 return nil, serviceerror.NewInternal(fmt.Sprintf("Unknown replication task type: %v", replicationTask.TaskType)) 289 } 290 } 291 292 func (s *TaskSerializer) serializeArchivalTask( 293 task tasks.Task, 294 ) (*commonpb.DataBlob, error) { 295 var archivalTaskInfo *persistencespb.ArchivalTaskInfo 296 switch task := task.(type) { 297 case *tasks.ArchiveExecutionTask: 298 archivalTaskInfo = s.archiveExecutionTaskToProto(task) 299 default: 300 return nil, serviceerror.NewInternal(fmt.Sprintf( 301 "Unknown archival task type while serializing: %v", task)) 302 } 303 304 return ArchivalTaskInfoToBlob(archivalTaskInfo) 305 } 306 307 func (s *TaskSerializer) deserializeArchivalTasks( 308 blob *commonpb.DataBlob, 309 ) (tasks.Task, error) { 310 archivalTask, err := ArchivalTaskInfoFromBlob(blob.Data, blob.EncodingType.String()) 311 if err != nil { 312 return nil, err 313 } 314 var task tasks.Task 315 switch archivalTask.TaskType { 316 case enumsspb.TASK_TYPE_ARCHIVAL_ARCHIVE_EXECUTION: 317 task = s.archiveExecutionTaskFromProto(archivalTask) 318 default: 319 return nil, serviceerror.NewInternal(fmt.Sprintf("Unknown archival task type while deserializing: %v", task)) 320 } 321 return task, nil 322 } 323 324 func (s *TaskSerializer) transferActivityTaskToProto( 325 activityTask *tasks.ActivityTask, 326 ) *persistencespb.TransferTaskInfo { 327 return &persistencespb.TransferTaskInfo{ 328 NamespaceId: activityTask.WorkflowKey.NamespaceID, 329 WorkflowId: activityTask.WorkflowKey.WorkflowID, 330 RunId: activityTask.WorkflowKey.RunID, 331 TaskType: enumsspb.TASK_TYPE_TRANSFER_ACTIVITY_TASK, 332 TargetNamespaceId: activityTask.WorkflowKey.NamespaceID, 333 TargetWorkflowId: "", 334 TargetRunId: "", 335 TargetChildWorkflowOnly: false, 336 TaskQueue: activityTask.TaskQueue, 337 ScheduledEventId: activityTask.ScheduledEventID, 338 Version: activityTask.Version, 339 TaskId: activityTask.TaskID, 340 VisibilityTime: timestamppb.New(activityTask.VisibilityTimestamp), 341 } 342 } 343 344 func (s *TaskSerializer) transferActivityTaskFromProto( 345 activityTask *persistencespb.TransferTaskInfo, 346 ) *tasks.ActivityTask { 347 return &tasks.ActivityTask{ 348 WorkflowKey: definition.NewWorkflowKey( 349 activityTask.NamespaceId, 350 activityTask.WorkflowId, 351 activityTask.RunId, 352 ), 353 VisibilityTimestamp: activityTask.VisibilityTime.AsTime(), 354 TaskID: activityTask.TaskId, 355 TaskQueue: activityTask.TaskQueue, 356 ScheduledEventID: activityTask.ScheduledEventId, 357 Version: activityTask.Version, 358 } 359 } 360 361 func (s *TaskSerializer) transferWorkflowTaskToProto( 362 workflowTask *tasks.WorkflowTask, 363 ) *persistencespb.TransferTaskInfo { 364 return &persistencespb.TransferTaskInfo{ 365 NamespaceId: workflowTask.WorkflowKey.NamespaceID, 366 WorkflowId: workflowTask.WorkflowKey.WorkflowID, 367 RunId: workflowTask.WorkflowKey.RunID, 368 TaskType: enumsspb.TASK_TYPE_TRANSFER_WORKFLOW_TASK, 369 TargetNamespaceId: workflowTask.NamespaceID, 370 TargetWorkflowId: "", 371 TargetRunId: "", 372 TargetChildWorkflowOnly: false, 373 TaskQueue: workflowTask.TaskQueue, 374 ScheduledEventId: workflowTask.ScheduledEventID, 375 Version: workflowTask.Version, 376 TaskId: workflowTask.TaskID, 377 VisibilityTime: timestamppb.New(workflowTask.VisibilityTimestamp), 378 } 379 } 380 381 func (s *TaskSerializer) transferWorkflowTaskFromProto( 382 workflowTask *persistencespb.TransferTaskInfo, 383 ) *tasks.WorkflowTask { 384 return &tasks.WorkflowTask{ 385 WorkflowKey: definition.NewWorkflowKey( 386 workflowTask.NamespaceId, 387 workflowTask.WorkflowId, 388 workflowTask.RunId, 389 ), 390 VisibilityTimestamp: workflowTask.VisibilityTime.AsTime(), 391 TaskID: workflowTask.TaskId, 392 TaskQueue: workflowTask.TaskQueue, 393 ScheduledEventID: workflowTask.ScheduledEventId, 394 Version: workflowTask.Version, 395 } 396 } 397 398 func (s *TaskSerializer) transferRequestCancelTaskToProto( 399 requestCancelTask *tasks.CancelExecutionTask, 400 ) *persistencespb.TransferTaskInfo { 401 return &persistencespb.TransferTaskInfo{ 402 NamespaceId: requestCancelTask.WorkflowKey.NamespaceID, 403 WorkflowId: requestCancelTask.WorkflowKey.WorkflowID, 404 RunId: requestCancelTask.WorkflowKey.RunID, 405 TaskType: enumsspb.TASK_TYPE_TRANSFER_CANCEL_EXECUTION, 406 TargetNamespaceId: requestCancelTask.TargetNamespaceID, 407 TargetWorkflowId: requestCancelTask.TargetWorkflowID, 408 TargetRunId: requestCancelTask.TargetRunID, 409 TargetChildWorkflowOnly: requestCancelTask.TargetChildWorkflowOnly, 410 TaskQueue: "", 411 ScheduledEventId: requestCancelTask.InitiatedEventID, 412 Version: requestCancelTask.Version, 413 TaskId: requestCancelTask.TaskID, 414 VisibilityTime: timestamppb.New(requestCancelTask.VisibilityTimestamp), 415 } 416 } 417 418 func (s *TaskSerializer) transferRequestCancelTaskFromProto( 419 requestCancelTask *persistencespb.TransferTaskInfo, 420 ) *tasks.CancelExecutionTask { 421 return &tasks.CancelExecutionTask{ 422 WorkflowKey: definition.NewWorkflowKey( 423 requestCancelTask.NamespaceId, 424 requestCancelTask.WorkflowId, 425 requestCancelTask.RunId, 426 ), 427 VisibilityTimestamp: requestCancelTask.VisibilityTime.AsTime(), 428 TaskID: requestCancelTask.TaskId, 429 TargetNamespaceID: requestCancelTask.TargetNamespaceId, 430 TargetWorkflowID: requestCancelTask.TargetWorkflowId, 431 TargetRunID: requestCancelTask.TargetRunId, 432 TargetChildWorkflowOnly: requestCancelTask.TargetChildWorkflowOnly, 433 InitiatedEventID: requestCancelTask.ScheduledEventId, 434 Version: requestCancelTask.Version, 435 } 436 } 437 438 func (s *TaskSerializer) transferSignalTaskToProto( 439 signalTask *tasks.SignalExecutionTask, 440 ) *persistencespb.TransferTaskInfo { 441 return &persistencespb.TransferTaskInfo{ 442 NamespaceId: signalTask.WorkflowKey.NamespaceID, 443 WorkflowId: signalTask.WorkflowKey.WorkflowID, 444 RunId: signalTask.WorkflowKey.RunID, 445 TaskType: enumsspb.TASK_TYPE_TRANSFER_SIGNAL_EXECUTION, 446 TargetNamespaceId: signalTask.TargetNamespaceID, 447 TargetWorkflowId: signalTask.TargetWorkflowID, 448 TargetRunId: signalTask.TargetRunID, 449 TargetChildWorkflowOnly: signalTask.TargetChildWorkflowOnly, 450 TaskQueue: "", 451 ScheduledEventId: signalTask.InitiatedEventID, 452 Version: signalTask.Version, 453 TaskId: signalTask.TaskID, 454 VisibilityTime: timestamppb.New(signalTask.VisibilityTimestamp), 455 } 456 } 457 458 func (s *TaskSerializer) transferSignalTaskFromProto( 459 signalTask *persistencespb.TransferTaskInfo, 460 ) *tasks.SignalExecutionTask { 461 return &tasks.SignalExecutionTask{ 462 WorkflowKey: definition.NewWorkflowKey( 463 signalTask.NamespaceId, 464 signalTask.WorkflowId, 465 signalTask.RunId, 466 ), 467 VisibilityTimestamp: signalTask.VisibilityTime.AsTime(), 468 TaskID: signalTask.TaskId, 469 TargetNamespaceID: signalTask.TargetNamespaceId, 470 TargetWorkflowID: signalTask.TargetWorkflowId, 471 TargetRunID: signalTask.TargetRunId, 472 TargetChildWorkflowOnly: signalTask.TargetChildWorkflowOnly, 473 InitiatedEventID: signalTask.ScheduledEventId, 474 Version: signalTask.Version, 475 } 476 } 477 478 func (s *TaskSerializer) transferChildWorkflowTaskToProto( 479 childWorkflowTask *tasks.StartChildExecutionTask, 480 ) *persistencespb.TransferTaskInfo { 481 return &persistencespb.TransferTaskInfo{ 482 NamespaceId: childWorkflowTask.WorkflowKey.NamespaceID, 483 WorkflowId: childWorkflowTask.WorkflowKey.WorkflowID, 484 RunId: childWorkflowTask.WorkflowKey.RunID, 485 TaskType: enumsspb.TASK_TYPE_TRANSFER_START_CHILD_EXECUTION, 486 TargetNamespaceId: childWorkflowTask.TargetNamespaceID, 487 TargetWorkflowId: childWorkflowTask.TargetWorkflowID, 488 TargetRunId: "", 489 TargetChildWorkflowOnly: false, 490 TaskQueue: "", 491 ScheduledEventId: childWorkflowTask.InitiatedEventID, 492 Version: childWorkflowTask.Version, 493 TaskId: childWorkflowTask.TaskID, 494 VisibilityTime: timestamppb.New(childWorkflowTask.VisibilityTimestamp), 495 } 496 } 497 498 func (s *TaskSerializer) transferChildWorkflowTaskFromProto( 499 signalTask *persistencespb.TransferTaskInfo, 500 ) *tasks.StartChildExecutionTask { 501 return &tasks.StartChildExecutionTask{ 502 WorkflowKey: definition.NewWorkflowKey( 503 signalTask.NamespaceId, 504 signalTask.WorkflowId, 505 signalTask.RunId, 506 ), 507 VisibilityTimestamp: signalTask.VisibilityTime.AsTime(), 508 TaskID: signalTask.TaskId, 509 TargetNamespaceID: signalTask.TargetNamespaceId, 510 TargetWorkflowID: signalTask.TargetWorkflowId, 511 InitiatedEventID: signalTask.ScheduledEventId, 512 Version: signalTask.Version, 513 } 514 } 515 516 func (s *TaskSerializer) transferCloseTaskToProto( 517 closeTask *tasks.CloseExecutionTask, 518 ) *persistencespb.TransferTaskInfo { 519 return &persistencespb.TransferTaskInfo{ 520 NamespaceId: closeTask.WorkflowKey.NamespaceID, 521 WorkflowId: closeTask.WorkflowKey.WorkflowID, 522 RunId: closeTask.WorkflowKey.RunID, 523 TaskType: enumsspb.TASK_TYPE_TRANSFER_CLOSE_EXECUTION, 524 TargetNamespaceId: "", 525 TargetWorkflowId: "", 526 TargetRunId: "", 527 TargetChildWorkflowOnly: false, 528 TaskQueue: "", 529 ScheduledEventId: 0, 530 Version: closeTask.Version, 531 TaskId: closeTask.TaskID, 532 VisibilityTime: timestamppb.New(closeTask.VisibilityTimestamp), 533 DeleteAfterClose: closeTask.DeleteAfterClose, 534 TaskDetails: &persistencespb.TransferTaskInfo_CloseExecutionTaskDetails_{ 535 CloseExecutionTaskDetails: &persistencespb.TransferTaskInfo_CloseExecutionTaskDetails{ 536 // We set this to true even though it's no longer checked in case someone downgrades to a version that 537 // still checks this field. 538 CanSkipVisibilityArchival: true, 539 }, 540 }, 541 } 542 } 543 544 func (s *TaskSerializer) transferCloseTaskFromProto( 545 closeTask *persistencespb.TransferTaskInfo, 546 ) *tasks.CloseExecutionTask { 547 return &tasks.CloseExecutionTask{ 548 WorkflowKey: definition.NewWorkflowKey( 549 closeTask.NamespaceId, 550 closeTask.WorkflowId, 551 closeTask.RunId, 552 ), 553 VisibilityTimestamp: closeTask.VisibilityTime.AsTime(), 554 TaskID: closeTask.TaskId, 555 Version: closeTask.Version, 556 DeleteAfterClose: closeTask.DeleteAfterClose, 557 // Delete workflow task process stage is not persisted. It is only for in memory retries. 558 DeleteProcessStage: tasks.DeleteWorkflowExecutionStageNone, 559 } 560 } 561 562 func (s *TaskSerializer) transferResetTaskToProto( 563 resetTask *tasks.ResetWorkflowTask, 564 ) *persistencespb.TransferTaskInfo { 565 return &persistencespb.TransferTaskInfo{ 566 NamespaceId: resetTask.WorkflowKey.NamespaceID, 567 WorkflowId: resetTask.WorkflowKey.WorkflowID, 568 RunId: resetTask.WorkflowKey.RunID, 569 TaskType: enumsspb.TASK_TYPE_TRANSFER_RESET_WORKFLOW, 570 TargetNamespaceId: "", 571 TargetWorkflowId: "", 572 TargetRunId: "", 573 TargetChildWorkflowOnly: false, 574 TaskQueue: "", 575 ScheduledEventId: 0, 576 Version: resetTask.Version, 577 TaskId: resetTask.TaskID, 578 VisibilityTime: timestamppb.New(resetTask.VisibilityTimestamp), 579 } 580 } 581 582 func (s *TaskSerializer) transferResetTaskFromProto( 583 resetTask *persistencespb.TransferTaskInfo, 584 ) *tasks.ResetWorkflowTask { 585 return &tasks.ResetWorkflowTask{ 586 WorkflowKey: definition.NewWorkflowKey( 587 resetTask.NamespaceId, 588 resetTask.WorkflowId, 589 resetTask.RunId, 590 ), 591 VisibilityTimestamp: resetTask.VisibilityTime.AsTime(), 592 TaskID: resetTask.TaskId, 593 Version: resetTask.Version, 594 } 595 } 596 597 func (s *TaskSerializer) transferDeleteExecutionTaskToProto( 598 deleteExecutionTask *tasks.DeleteExecutionTask, 599 ) *persistencespb.TransferTaskInfo { 600 return &persistencespb.TransferTaskInfo{ 601 NamespaceId: deleteExecutionTask.WorkflowKey.NamespaceID, 602 WorkflowId: deleteExecutionTask.WorkflowKey.WorkflowID, 603 RunId: deleteExecutionTask.WorkflowKey.RunID, 604 TaskType: enumsspb.TASK_TYPE_TRANSFER_DELETE_EXECUTION, 605 Version: deleteExecutionTask.Version, 606 TaskId: deleteExecutionTask.TaskID, 607 VisibilityTime: timestamppb.New(deleteExecutionTask.VisibilityTimestamp), 608 } 609 } 610 611 func (s *TaskSerializer) transferDeleteExecutionTaskFromProto( 612 deleteExecutionTask *persistencespb.TransferTaskInfo, 613 ) *tasks.DeleteExecutionTask { 614 return &tasks.DeleteExecutionTask{ 615 WorkflowKey: definition.NewWorkflowKey( 616 deleteExecutionTask.NamespaceId, 617 deleteExecutionTask.WorkflowId, 618 deleteExecutionTask.RunId, 619 ), 620 VisibilityTimestamp: deleteExecutionTask.VisibilityTime.AsTime(), 621 TaskID: deleteExecutionTask.TaskId, 622 Version: deleteExecutionTask.Version, 623 // Delete workflow task process stage is not persisted. It is only for in memory retries. 624 ProcessStage: tasks.DeleteWorkflowExecutionStageNone, 625 } 626 } 627 628 func (s *TaskSerializer) timerWorkflowTaskToProto( 629 workflowTimer *tasks.WorkflowTaskTimeoutTask, 630 ) *persistencespb.TimerTaskInfo { 631 return &persistencespb.TimerTaskInfo{ 632 NamespaceId: workflowTimer.WorkflowKey.NamespaceID, 633 WorkflowId: workflowTimer.WorkflowKey.WorkflowID, 634 RunId: workflowTimer.WorkflowKey.RunID, 635 TaskType: enumsspb.TASK_TYPE_WORKFLOW_TASK_TIMEOUT, 636 TimeoutType: workflowTimer.TimeoutType, 637 WorkflowBackoffType: enumsspb.WORKFLOW_BACKOFF_TYPE_UNSPECIFIED, 638 Version: workflowTimer.Version, 639 ScheduleAttempt: workflowTimer.ScheduleAttempt, 640 EventId: workflowTimer.EventID, 641 TaskId: workflowTimer.TaskID, 642 VisibilityTime: timestamppb.New(workflowTimer.VisibilityTimestamp), 643 } 644 } 645 646 func (s *TaskSerializer) timerWorkflowTaskFromProto( 647 workflowTimer *persistencespb.TimerTaskInfo, 648 ) *tasks.WorkflowTaskTimeoutTask { 649 return &tasks.WorkflowTaskTimeoutTask{ 650 WorkflowKey: definition.NewWorkflowKey( 651 workflowTimer.NamespaceId, 652 workflowTimer.WorkflowId, 653 workflowTimer.RunId, 654 ), 655 VisibilityTimestamp: workflowTimer.VisibilityTime.AsTime(), 656 TaskID: workflowTimer.TaskId, 657 EventID: workflowTimer.EventId, 658 ScheduleAttempt: workflowTimer.ScheduleAttempt, 659 TimeoutType: workflowTimer.TimeoutType, 660 Version: workflowTimer.Version, 661 } 662 } 663 664 func (s *TaskSerializer) timerWorkflowDelayTaskToProto( 665 workflowDelayTimer *tasks.WorkflowBackoffTimerTask, 666 ) *persistencespb.TimerTaskInfo { 667 return &persistencespb.TimerTaskInfo{ 668 NamespaceId: workflowDelayTimer.WorkflowKey.NamespaceID, 669 WorkflowId: workflowDelayTimer.WorkflowKey.WorkflowID, 670 RunId: workflowDelayTimer.WorkflowKey.RunID, 671 TaskType: enumsspb.TASK_TYPE_WORKFLOW_BACKOFF_TIMER, 672 TimeoutType: enumspb.TIMEOUT_TYPE_UNSPECIFIED, 673 WorkflowBackoffType: workflowDelayTimer.WorkflowBackoffType, 674 Version: workflowDelayTimer.Version, 675 ScheduleAttempt: 0, 676 EventId: 0, 677 TaskId: workflowDelayTimer.TaskID, 678 VisibilityTime: timestamppb.New(workflowDelayTimer.VisibilityTimestamp), 679 } 680 } 681 682 func (s *TaskSerializer) timerWorkflowDelayTaskFromProto( 683 workflowDelayTimer *persistencespb.TimerTaskInfo, 684 ) *tasks.WorkflowBackoffTimerTask { 685 return &tasks.WorkflowBackoffTimerTask{ 686 WorkflowKey: definition.NewWorkflowKey( 687 workflowDelayTimer.NamespaceId, 688 workflowDelayTimer.WorkflowId, 689 workflowDelayTimer.RunId, 690 ), 691 VisibilityTimestamp: workflowDelayTimer.VisibilityTime.AsTime(), 692 TaskID: workflowDelayTimer.TaskId, 693 Version: workflowDelayTimer.Version, 694 WorkflowBackoffType: workflowDelayTimer.WorkflowBackoffType, 695 } 696 } 697 698 func (s *TaskSerializer) timerActivityTaskToProto( 699 activityTimer *tasks.ActivityTimeoutTask, 700 ) *persistencespb.TimerTaskInfo { 701 return &persistencespb.TimerTaskInfo{ 702 NamespaceId: activityTimer.WorkflowKey.NamespaceID, 703 WorkflowId: activityTimer.WorkflowKey.WorkflowID, 704 RunId: activityTimer.WorkflowKey.RunID, 705 TaskType: enumsspb.TASK_TYPE_ACTIVITY_TIMEOUT, 706 TimeoutType: activityTimer.TimeoutType, 707 WorkflowBackoffType: enumsspb.WORKFLOW_BACKOFF_TYPE_UNSPECIFIED, 708 Version: activityTimer.Version, 709 ScheduleAttempt: activityTimer.Attempt, 710 EventId: activityTimer.EventID, 711 TaskId: activityTimer.TaskID, 712 VisibilityTime: timestamppb.New(activityTimer.VisibilityTimestamp), 713 } 714 } 715 716 func (s *TaskSerializer) timerActivityTaskFromProto( 717 activityTimer *persistencespb.TimerTaskInfo, 718 ) *tasks.ActivityTimeoutTask { 719 return &tasks.ActivityTimeoutTask{ 720 WorkflowKey: definition.NewWorkflowKey( 721 activityTimer.NamespaceId, 722 activityTimer.WorkflowId, 723 activityTimer.RunId, 724 ), 725 VisibilityTimestamp: activityTimer.VisibilityTime.AsTime(), 726 TaskID: activityTimer.TaskId, 727 EventID: activityTimer.EventId, 728 Attempt: activityTimer.ScheduleAttempt, 729 TimeoutType: activityTimer.TimeoutType, 730 Version: activityTimer.Version, 731 } 732 } 733 734 func (s *TaskSerializer) timerActivityRetryTaskToProto( 735 activityRetryTimer *tasks.ActivityRetryTimerTask, 736 ) *persistencespb.TimerTaskInfo { 737 return &persistencespb.TimerTaskInfo{ 738 NamespaceId: activityRetryTimer.WorkflowKey.NamespaceID, 739 WorkflowId: activityRetryTimer.WorkflowKey.WorkflowID, 740 RunId: activityRetryTimer.WorkflowKey.RunID, 741 TaskType: enumsspb.TASK_TYPE_ACTIVITY_RETRY_TIMER, 742 TimeoutType: enumspb.TIMEOUT_TYPE_UNSPECIFIED, 743 WorkflowBackoffType: enumsspb.WORKFLOW_BACKOFF_TYPE_UNSPECIFIED, 744 Version: activityRetryTimer.Version, 745 ScheduleAttempt: activityRetryTimer.Attempt, 746 EventId: activityRetryTimer.EventID, 747 TaskId: activityRetryTimer.TaskID, 748 VisibilityTime: timestamppb.New(activityRetryTimer.VisibilityTimestamp), 749 } 750 } 751 752 func (s *TaskSerializer) timerActivityRetryTaskFromProto( 753 activityRetryTimer *persistencespb.TimerTaskInfo, 754 ) *tasks.ActivityRetryTimerTask { 755 return &tasks.ActivityRetryTimerTask{ 756 WorkflowKey: definition.NewWorkflowKey( 757 activityRetryTimer.NamespaceId, 758 activityRetryTimer.WorkflowId, 759 activityRetryTimer.RunId, 760 ), 761 VisibilityTimestamp: activityRetryTimer.VisibilityTime.AsTime(), 762 TaskID: activityRetryTimer.TaskId, 763 EventID: activityRetryTimer.EventId, 764 Version: activityRetryTimer.Version, 765 Attempt: activityRetryTimer.ScheduleAttempt, 766 } 767 } 768 769 func (s *TaskSerializer) timerUserTaskToProto( 770 userTimer *tasks.UserTimerTask, 771 ) *persistencespb.TimerTaskInfo { 772 return &persistencespb.TimerTaskInfo{ 773 NamespaceId: userTimer.WorkflowKey.NamespaceID, 774 WorkflowId: userTimer.WorkflowKey.WorkflowID, 775 RunId: userTimer.WorkflowKey.RunID, 776 TaskType: enumsspb.TASK_TYPE_USER_TIMER, 777 TimeoutType: enumspb.TIMEOUT_TYPE_UNSPECIFIED, 778 WorkflowBackoffType: enumsspb.WORKFLOW_BACKOFF_TYPE_UNSPECIFIED, 779 Version: userTimer.Version, 780 ScheduleAttempt: 0, 781 EventId: userTimer.EventID, 782 TaskId: userTimer.TaskID, 783 VisibilityTime: timestamppb.New(userTimer.VisibilityTimestamp), 784 } 785 } 786 787 func (s *TaskSerializer) timerUserTaskFromProto( 788 userTimer *persistencespb.TimerTaskInfo, 789 ) *tasks.UserTimerTask { 790 return &tasks.UserTimerTask{ 791 WorkflowKey: definition.NewWorkflowKey( 792 userTimer.NamespaceId, 793 userTimer.WorkflowId, 794 userTimer.RunId, 795 ), 796 VisibilityTimestamp: userTimer.VisibilityTime.AsTime(), 797 TaskID: userTimer.TaskId, 798 EventID: userTimer.EventId, 799 Version: userTimer.Version, 800 } 801 } 802 803 func (s *TaskSerializer) timerWorkflowRunToProto( 804 workflowTimer *tasks.WorkflowTimeoutTask, 805 ) *persistencespb.TimerTaskInfo { 806 return &persistencespb.TimerTaskInfo{ 807 NamespaceId: workflowTimer.WorkflowKey.NamespaceID, 808 WorkflowId: workflowTimer.WorkflowKey.WorkflowID, 809 RunId: workflowTimer.WorkflowKey.RunID, 810 TaskType: enumsspb.TASK_TYPE_WORKFLOW_RUN_TIMEOUT, 811 TimeoutType: enumspb.TIMEOUT_TYPE_UNSPECIFIED, 812 WorkflowBackoffType: enumsspb.WORKFLOW_BACKOFF_TYPE_UNSPECIFIED, 813 Version: workflowTimer.Version, 814 ScheduleAttempt: 0, 815 EventId: 0, 816 TaskId: workflowTimer.TaskID, 817 VisibilityTime: timestamppb.New(workflowTimer.VisibilityTimestamp), 818 } 819 } 820 821 func (s *TaskSerializer) timerWorkflowRunFromProto( 822 workflowTimer *persistencespb.TimerTaskInfo, 823 ) *tasks.WorkflowTimeoutTask { 824 return &tasks.WorkflowTimeoutTask{ 825 WorkflowKey: definition.NewWorkflowKey( 826 workflowTimer.NamespaceId, 827 workflowTimer.WorkflowId, 828 workflowTimer.RunId, 829 ), 830 VisibilityTimestamp: workflowTimer.VisibilityTime.AsTime(), 831 TaskID: workflowTimer.TaskId, 832 Version: workflowTimer.Version, 833 } 834 } 835 836 func (s *TaskSerializer) timerWorkflowCleanupTaskToProto( 837 workflowCleanupTimer *tasks.DeleteHistoryEventTask, 838 ) *persistencespb.TimerTaskInfo { 839 return &persistencespb.TimerTaskInfo{ 840 NamespaceId: workflowCleanupTimer.WorkflowKey.NamespaceID, 841 WorkflowId: workflowCleanupTimer.WorkflowKey.WorkflowID, 842 RunId: workflowCleanupTimer.WorkflowKey.RunID, 843 TaskType: enumsspb.TASK_TYPE_DELETE_HISTORY_EVENT, 844 TimeoutType: enumspb.TIMEOUT_TYPE_UNSPECIFIED, 845 WorkflowBackoffType: enumsspb.WORKFLOW_BACKOFF_TYPE_UNSPECIFIED, 846 Version: workflowCleanupTimer.Version, 847 ScheduleAttempt: 0, 848 EventId: 0, 849 TaskId: workflowCleanupTimer.TaskID, 850 VisibilityTime: timestamppb.New(workflowCleanupTimer.VisibilityTimestamp), 851 BranchToken: workflowCleanupTimer.BranchToken, 852 // We set this to true even though it's no longer checked in case someone downgrades to a version that still 853 // checks this field. 854 AlreadyArchived: true, 855 } 856 } 857 858 func (s *TaskSerializer) timerWorkflowCleanupTaskFromProto( 859 workflowCleanupTimer *persistencespb.TimerTaskInfo, 860 ) *tasks.DeleteHistoryEventTask { 861 return &tasks.DeleteHistoryEventTask{ 862 WorkflowKey: definition.NewWorkflowKey( 863 workflowCleanupTimer.NamespaceId, 864 workflowCleanupTimer.WorkflowId, 865 workflowCleanupTimer.RunId, 866 ), 867 VisibilityTimestamp: workflowCleanupTimer.VisibilityTime.AsTime(), 868 TaskID: workflowCleanupTimer.TaskId, 869 Version: workflowCleanupTimer.Version, 870 BranchToken: workflowCleanupTimer.BranchToken, 871 // Delete workflow task process stage is not persisted. It is only for in memory retries. 872 ProcessStage: tasks.DeleteWorkflowExecutionStageNone, 873 } 874 } 875 876 func (s *TaskSerializer) visibilityStartTaskToProto( 877 startVisibilityTask *tasks.StartExecutionVisibilityTask, 878 ) *persistencespb.VisibilityTaskInfo { 879 return &persistencespb.VisibilityTaskInfo{ 880 NamespaceId: startVisibilityTask.WorkflowKey.NamespaceID, 881 WorkflowId: startVisibilityTask.WorkflowKey.WorkflowID, 882 RunId: startVisibilityTask.WorkflowKey.RunID, 883 TaskType: enumsspb.TASK_TYPE_VISIBILITY_START_EXECUTION, 884 Version: startVisibilityTask.Version, 885 TaskId: startVisibilityTask.TaskID, 886 VisibilityTime: timestamppb.New(startVisibilityTask.VisibilityTimestamp), 887 } 888 } 889 890 func (s *TaskSerializer) visibilityStartTaskFromProto( 891 startVisibilityTask *persistencespb.VisibilityTaskInfo, 892 ) *tasks.StartExecutionVisibilityTask { 893 return &tasks.StartExecutionVisibilityTask{ 894 WorkflowKey: definition.NewWorkflowKey( 895 startVisibilityTask.NamespaceId, 896 startVisibilityTask.WorkflowId, 897 startVisibilityTask.RunId, 898 ), 899 VisibilityTimestamp: startVisibilityTask.VisibilityTime.AsTime(), 900 TaskID: startVisibilityTask.TaskId, 901 Version: startVisibilityTask.Version, 902 } 903 } 904 905 func (s *TaskSerializer) visibilityUpsertTaskToProto( 906 upsertVisibilityTask *tasks.UpsertExecutionVisibilityTask, 907 ) *persistencespb.VisibilityTaskInfo { 908 return &persistencespb.VisibilityTaskInfo{ 909 NamespaceId: upsertVisibilityTask.WorkflowKey.NamespaceID, 910 WorkflowId: upsertVisibilityTask.WorkflowKey.WorkflowID, 911 RunId: upsertVisibilityTask.WorkflowKey.RunID, 912 TaskType: enumsspb.TASK_TYPE_VISIBILITY_UPSERT_EXECUTION, 913 Version: upsertVisibilityTask.Version, 914 TaskId: upsertVisibilityTask.TaskID, 915 VisibilityTime: timestamppb.New(upsertVisibilityTask.VisibilityTimestamp), 916 } 917 } 918 919 func (s *TaskSerializer) visibilityUpsertTaskFromProto( 920 upsertVisibilityTask *persistencespb.VisibilityTaskInfo, 921 ) *tasks.UpsertExecutionVisibilityTask { 922 return &tasks.UpsertExecutionVisibilityTask{ 923 WorkflowKey: definition.NewWorkflowKey( 924 upsertVisibilityTask.NamespaceId, 925 upsertVisibilityTask.WorkflowId, 926 upsertVisibilityTask.RunId, 927 ), 928 VisibilityTimestamp: upsertVisibilityTask.VisibilityTime.AsTime(), 929 TaskID: upsertVisibilityTask.TaskId, 930 Version: upsertVisibilityTask.Version, 931 } 932 } 933 934 func (s *TaskSerializer) visibilityCloseTaskToProto( 935 closetVisibilityTask *tasks.CloseExecutionVisibilityTask, 936 ) *persistencespb.VisibilityTaskInfo { 937 return &persistencespb.VisibilityTaskInfo{ 938 NamespaceId: closetVisibilityTask.WorkflowKey.NamespaceID, 939 WorkflowId: closetVisibilityTask.WorkflowKey.WorkflowID, 940 RunId: closetVisibilityTask.WorkflowKey.RunID, 941 TaskType: enumsspb.TASK_TYPE_VISIBILITY_CLOSE_EXECUTION, 942 Version: closetVisibilityTask.Version, 943 TaskId: closetVisibilityTask.TaskID, 944 VisibilityTime: timestamppb.New(closetVisibilityTask.VisibilityTimestamp), 945 } 946 } 947 948 func (s *TaskSerializer) visibilityCloseTaskFromProto( 949 closeVisibilityTask *persistencespb.VisibilityTaskInfo, 950 ) *tasks.CloseExecutionVisibilityTask { 951 return &tasks.CloseExecutionVisibilityTask{ 952 WorkflowKey: definition.NewWorkflowKey( 953 closeVisibilityTask.NamespaceId, 954 closeVisibilityTask.WorkflowId, 955 closeVisibilityTask.RunId, 956 ), 957 VisibilityTimestamp: closeVisibilityTask.VisibilityTime.AsTime(), 958 TaskID: closeVisibilityTask.TaskId, 959 Version: closeVisibilityTask.Version, 960 } 961 } 962 963 func (s *TaskSerializer) visibilityDeleteTaskToProto( 964 deleteVisibilityTask *tasks.DeleteExecutionVisibilityTask, 965 ) *persistencespb.VisibilityTaskInfo { 966 return &persistencespb.VisibilityTaskInfo{ 967 NamespaceId: deleteVisibilityTask.WorkflowKey.NamespaceID, 968 WorkflowId: deleteVisibilityTask.WorkflowKey.WorkflowID, 969 RunId: deleteVisibilityTask.WorkflowKey.RunID, 970 TaskType: enumsspb.TASK_TYPE_VISIBILITY_DELETE_EXECUTION, 971 Version: deleteVisibilityTask.Version, 972 TaskId: deleteVisibilityTask.TaskID, 973 VisibilityTime: timestamppb.New(deleteVisibilityTask.VisibilityTimestamp), 974 StartTime: timestamppb.New(deleteVisibilityTask.StartTime), 975 CloseTime: timestamppb.New(deleteVisibilityTask.CloseTime), 976 CloseVisibilityTaskId: deleteVisibilityTask.CloseExecutionVisibilityTaskID, 977 } 978 } 979 980 func (s *TaskSerializer) visibilityDeleteTaskFromProto( 981 deleteVisibilityTask *persistencespb.VisibilityTaskInfo, 982 ) *tasks.DeleteExecutionVisibilityTask { 983 return &tasks.DeleteExecutionVisibilityTask{ 984 WorkflowKey: definition.NewWorkflowKey( 985 deleteVisibilityTask.NamespaceId, 986 deleteVisibilityTask.WorkflowId, 987 deleteVisibilityTask.RunId, 988 ), 989 VisibilityTimestamp: deleteVisibilityTask.VisibilityTime.AsTime(), 990 TaskID: deleteVisibilityTask.TaskId, 991 Version: deleteVisibilityTask.Version, 992 StartTime: deleteVisibilityTask.StartTime.AsTime(), 993 CloseTime: deleteVisibilityTask.CloseTime.AsTime(), 994 CloseExecutionVisibilityTaskID: deleteVisibilityTask.CloseVisibilityTaskId, 995 } 996 } 997 998 func (s *TaskSerializer) replicationActivityTaskToProto( 999 activityTask *tasks.SyncActivityTask, 1000 ) *persistencespb.ReplicationTaskInfo { 1001 return &persistencespb.ReplicationTaskInfo{ 1002 NamespaceId: activityTask.WorkflowKey.NamespaceID, 1003 WorkflowId: activityTask.WorkflowKey.WorkflowID, 1004 RunId: activityTask.WorkflowKey.RunID, 1005 TaskType: enumsspb.TASK_TYPE_REPLICATION_SYNC_ACTIVITY, 1006 TaskId: activityTask.TaskID, 1007 Version: activityTask.Version, 1008 ScheduledEventId: activityTask.ScheduledEventID, 1009 FirstEventId: 0, 1010 NextEventId: 0, 1011 BranchToken: nil, 1012 NewRunBranchToken: nil, 1013 VisibilityTime: timestamppb.New(activityTask.VisibilityTimestamp), 1014 } 1015 } 1016 1017 func (s *TaskSerializer) replicationActivityTaskFromProto( 1018 activityTask *persistencespb.ReplicationTaskInfo, 1019 ) *tasks.SyncActivityTask { 1020 visibilityTimestamp := time.Unix(0, 0) 1021 if activityTask.VisibilityTime != nil { 1022 visibilityTimestamp = activityTask.VisibilityTime.AsTime() 1023 } 1024 return &tasks.SyncActivityTask{ 1025 WorkflowKey: definition.NewWorkflowKey( 1026 activityTask.NamespaceId, 1027 activityTask.WorkflowId, 1028 activityTask.RunId, 1029 ), 1030 VisibilityTimestamp: visibilityTimestamp, 1031 Version: activityTask.Version, 1032 TaskID: activityTask.TaskId, 1033 ScheduledEventID: activityTask.ScheduledEventId, 1034 } 1035 } 1036 1037 func (s *TaskSerializer) replicationHistoryTaskToProto( 1038 historyTask *tasks.HistoryReplicationTask, 1039 ) *persistencespb.ReplicationTaskInfo { 1040 return &persistencespb.ReplicationTaskInfo{ 1041 NamespaceId: historyTask.WorkflowKey.NamespaceID, 1042 WorkflowId: historyTask.WorkflowKey.WorkflowID, 1043 RunId: historyTask.WorkflowKey.RunID, 1044 TaskType: enumsspb.TASK_TYPE_REPLICATION_HISTORY, 1045 TaskId: historyTask.TaskID, 1046 Version: historyTask.Version, 1047 ScheduledEventId: 0, 1048 FirstEventId: historyTask.FirstEventID, 1049 NextEventId: historyTask.NextEventID, 1050 BranchToken: historyTask.BranchToken, 1051 NewRunBranchToken: historyTask.NewRunBranchToken, 1052 NewRunId: historyTask.NewRunID, 1053 VisibilityTime: timestamppb.New(historyTask.VisibilityTimestamp), 1054 } 1055 } 1056 1057 func (s *TaskSerializer) replicationHistoryTaskFromProto( 1058 historyTask *persistencespb.ReplicationTaskInfo, 1059 ) *tasks.HistoryReplicationTask { 1060 visibilityTimestamp := time.Unix(0, 0) 1061 if historyTask.VisibilityTime != nil { 1062 visibilityTimestamp = historyTask.VisibilityTime.AsTime() 1063 } 1064 return &tasks.HistoryReplicationTask{ 1065 WorkflowKey: definition.NewWorkflowKey( 1066 historyTask.NamespaceId, 1067 historyTask.WorkflowId, 1068 historyTask.RunId, 1069 ), 1070 VisibilityTimestamp: visibilityTimestamp, 1071 TaskID: historyTask.TaskId, 1072 FirstEventID: historyTask.FirstEventId, 1073 NextEventID: historyTask.NextEventId, 1074 Version: historyTask.Version, 1075 BranchToken: historyTask.BranchToken, 1076 NewRunBranchToken: historyTask.NewRunBranchToken, 1077 NewRunID: historyTask.NewRunId, 1078 } 1079 } 1080 1081 func (s *TaskSerializer) archiveExecutionTaskToProto( 1082 archiveExecutionTask *tasks.ArchiveExecutionTask, 1083 ) *persistencespb.ArchivalTaskInfo { 1084 return &persistencespb.ArchivalTaskInfo{ 1085 NamespaceId: archiveExecutionTask.WorkflowKey.NamespaceID, 1086 WorkflowId: archiveExecutionTask.WorkflowKey.WorkflowID, 1087 RunId: archiveExecutionTask.WorkflowKey.RunID, 1088 TaskType: enumsspb.TASK_TYPE_ARCHIVAL_ARCHIVE_EXECUTION, 1089 TaskId: archiveExecutionTask.TaskID, 1090 Version: archiveExecutionTask.Version, 1091 VisibilityTime: timestamppb.New(archiveExecutionTask.VisibilityTimestamp), 1092 } 1093 } 1094 1095 func (s *TaskSerializer) archiveExecutionTaskFromProto( 1096 archivalTaskInfo *persistencespb.ArchivalTaskInfo, 1097 ) *tasks.ArchiveExecutionTask { 1098 visibilityTimestamp := time.Unix(0, 0) 1099 if archivalTaskInfo.VisibilityTime != nil { 1100 visibilityTimestamp = archivalTaskInfo.VisibilityTime.AsTime() 1101 } 1102 return &tasks.ArchiveExecutionTask{ 1103 WorkflowKey: definition.NewWorkflowKey( 1104 archivalTaskInfo.NamespaceId, 1105 archivalTaskInfo.WorkflowId, 1106 archivalTaskInfo.RunId, 1107 ), 1108 VisibilityTimestamp: visibilityTimestamp, 1109 TaskID: archivalTaskInfo.TaskId, 1110 Version: archivalTaskInfo.Version, 1111 } 1112 } 1113 1114 func (s *TaskSerializer) replicationSyncWorkflowStateTaskToProto( 1115 syncWorkflowStateTask *tasks.SyncWorkflowStateTask, 1116 ) *persistencespb.ReplicationTaskInfo { 1117 return &persistencespb.ReplicationTaskInfo{ 1118 NamespaceId: syncWorkflowStateTask.WorkflowKey.NamespaceID, 1119 WorkflowId: syncWorkflowStateTask.WorkflowKey.WorkflowID, 1120 RunId: syncWorkflowStateTask.WorkflowKey.RunID, 1121 TaskType: enumsspb.TASK_TYPE_REPLICATION_SYNC_WORKFLOW_STATE, 1122 TaskId: syncWorkflowStateTask.TaskID, 1123 Version: syncWorkflowStateTask.Version, 1124 VisibilityTime: timestamppb.New(syncWorkflowStateTask.VisibilityTimestamp), 1125 } 1126 } 1127 1128 func (s *TaskSerializer) replicationSyncWorkflowStateTaskFromProto( 1129 syncWorkflowStateTask *persistencespb.ReplicationTaskInfo, 1130 ) *tasks.SyncWorkflowStateTask { 1131 visibilityTimestamp := time.Unix(0, 0) 1132 if syncWorkflowStateTask.VisibilityTime != nil { 1133 visibilityTimestamp = syncWorkflowStateTask.VisibilityTime.AsTime() 1134 } 1135 return &tasks.SyncWorkflowStateTask{ 1136 WorkflowKey: definition.NewWorkflowKey( 1137 syncWorkflowStateTask.NamespaceId, 1138 syncWorkflowStateTask.WorkflowId, 1139 syncWorkflowStateTask.RunId, 1140 ), 1141 VisibilityTimestamp: visibilityTimestamp, 1142 Version: syncWorkflowStateTask.Version, 1143 TaskID: syncWorkflowStateTask.TaskId, 1144 } 1145 }