diff --git a/replayTests/history/v5-basic.json b/replayTests/history/v5-basic.json new file mode 100644 index 00000000..2294c981 --- /dev/null +++ b/replayTests/history/v5-basic.json @@ -0,0 +1,719 @@ +{ + "events": [ + { + "eventId": "1", + "eventTime": "2024-10-18T19:15:57.261886360Z", + "eventType": "EVENT_TYPE_WORKFLOW_EXECUTION_STARTED", + "taskId": "16777694", + "workflowExecutionStartedEventAttributes": { + "workflowType": { + "name": "Interpreter" + }, + "taskQueue": { + "name": "Interpreter_DEFAULT", + "kind": "TASK_QUEUE_KIND_NORMAL" + }, + "input": { + "payloads": [ + { + "metadata": { + "encoding": "anNvbi9wbGFpbg==" + }, + "data": "eyJpd2ZXb3JrZmxvd1R5cGUiOiJiYXNpYyIsIml3ZldvcmtlclVybCI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTcxNCIsInN0YXJ0U3RhdGVJZCI6IlMxIiwic3RhdGVJbnB1dCI6eyJkYXRhIjoidGVzdCBkYXRhIiwiZW5jb2RpbmciOiJqc29uIn0sInN0YXRlT3B0aW9ucyI6eyJkZWNpZGVBcGlSZXRyeVBvbGljeSI6eyJiYWNrb2ZmQ29lZmZpY2llbnQiOjEzLCJpbml0aWFsSW50ZXJ2YWxTZWNvbmRzIjoxMywibWF4aW11bUF0dGVtcHRzIjoxMywibWF4aW11bUludGVydmFsU2Vjb25kcyI6MTN9LCJkZWNpZGVBcGlUaW1lb3V0U2Vjb25kcyI6MTMsInN0YXJ0QXBpUmV0cnlQb2xpY3kiOnsiYmFja29mZkNvZWZmaWNpZW50IjoxMiwiaW5pdGlhbEludGVydmFsU2Vjb25kcyI6MTIsIm1heGltdW1BdHRlbXB0cyI6MTIsIm1heGltdW1JbnRlcnZhbFNlY29uZHMiOjEyfSwic3RhcnRBcGlUaW1lb3V0U2Vjb25kcyI6MTJ9LCJjb25maWciOnsiY29udGludWVBc05ld1RocmVzaG9sZCI6MTAwLCJkaXNhYmxlU3lzdGVtU2VhcmNoQXR0cmlidXRlIjp0cnVlfX0=" + } + ] + }, + "workflowExecutionTimeout": "100s", + "workflowRunTimeout": "100s", + "workflowTaskTimeout": "10s", + "originalExecutionRunId": "cdfb571d-09bd-4b55-aace-0a299402cce8", + "identity": "23706@IT-USA-VY0662@", + "firstExecutionRunId": "cdfb571d-09bd-4b55-aace-0a299402cce8", + "retryPolicy": { + "initialInterval": "11s", + "backoffCoefficient": 11, + "maximumInterval": "11s", + "maximumAttempts": 11 + }, + "attempt": 1, + "workflowExecutionExpirationTime": "2024-10-18T19:17:37.262Z", + "firstWorkflowTaskBackoff": "0s", + "memo": { + "fields": { + "__IwfSystem_WorkerUrl": { + "metadata": { + "encoding": "anNvbi9wbGFpbg==" + }, + "data": "eyJkYXRhIjoiaHR0cDovL2xvY2FsaG9zdDo5NzE0In0=" + } + } + }, + "searchAttributes": { + "indexedFields": { + "IwfWorkflowType": { + "metadata": { + "encoding": "anNvbi9wbGFpbg==", + "type": "S2V5d29yZA==" + }, + "data": "ImJhc2ljIg==" + } + } + }, + "header": {}, + "workflowId": "basic1729278957256585000" + } + }, + { + "eventId": "2", + "eventTime": "2024-10-18T19:15:57.262607031Z", + "eventType": "EVENT_TYPE_WORKFLOW_TASK_SCHEDULED", + "taskId": "16777695", + "workflowTaskScheduledEventAttributes": { + "taskQueue": { + "name": "Interpreter_DEFAULT", + "kind": "TASK_QUEUE_KIND_NORMAL" + }, + "startToCloseTimeout": "10s", + "attempt": 1 + } + }, + { + "eventId": "3", + "eventTime": "2024-10-18T19:15:57.294661238Z", + "eventType": "EVENT_TYPE_WORKFLOW_TASK_STARTED", + "taskId": "16777707", + "workflowTaskStartedEventAttributes": { + "scheduledEventId": "2", + "identity": "23706@IT-USA-VY0662@", + "requestId": "a3fb53f5-a7fe-41eb-8398-cd51ded48c16", + "historySizeBytes": "1025", + "workerVersion": { + "buildId": "13f6de4cee9594117cbece510a4b4d4c" + } + } + }, + { + "eventId": "4", + "eventTime": "2024-10-18T19:15:57.306043728Z", + "eventType": "EVENT_TYPE_WORKFLOW_TASK_COMPLETED", + "taskId": "16777711", + "workflowTaskCompletedEventAttributes": { + "scheduledEventId": "2", + "startedEventId": "3", + "identity": "23706@IT-USA-VY0662@", + "workerVersion": { + "buildId": "13f6de4cee9594117cbece510a4b4d4c" + }, + "sdkMetadata": { + "langUsedFlags": [ + 3, + 1, + 4 + ], + "sdkName": "temporal-go", + "sdkVersion": "1.29.1" + }, + "meteringMetadata": {} + } + }, + { + "eventId": "5", + "eventTime": "2024-10-18T19:15:57.306075770Z", + "eventType": "EVENT_TYPE_MARKER_RECORDED", + "taskId": "16777712", + "markerRecordedEventAttributes": { + "markerName": "Version", + "details": { + "change-id": { + "payloads": [ + { + "metadata": { + "encoding": "anNvbi9wbGFpbg==" + }, + "data": "Imdsb2JhbCI=" + } + ] + }, + "version": { + "payloads": [ + { + "metadata": { + "encoding": "anNvbi9wbGFpbg==" + }, + "data": "NQ==" + } + ] + } + }, + "workflowTaskCompletedEventId": "4" + } + }, + { + "eventId": "6", + "eventTime": "2024-10-18T19:15:57.306352564Z", + "eventType": "EVENT_TYPE_UPSERT_WORKFLOW_SEARCH_ATTRIBUTES", + "taskId": "16777713", + "upsertWorkflowSearchAttributesEventAttributes": { + "workflowTaskCompletedEventId": "4", + "searchAttributes": { + "indexedFields": { + "TemporalChangeVersion": { + "metadata": { + "encoding": "anNvbi9wbGFpbg==", + "type": "S2V5d29yZExpc3Q=" + }, + "data": "WyJnbG9iYWwtNSJd" + } + } + } + } + }, + { + "eventId": "7", + "eventTime": "2024-10-18T19:15:57.306550482Z", + "eventType": "EVENT_TYPE_UPSERT_WORKFLOW_SEARCH_ATTRIBUTES", + "taskId": "16777714", + "upsertWorkflowSearchAttributesEventAttributes": { + "workflowTaskCompletedEventId": "4", + "searchAttributes": { + "indexedFields": { + "IwfGlobalWorkflowVersion": { + "metadata": { + "encoding": "anNvbi9wbGFpbg==", + "type": "SW50" + }, + "data": "NQ==" + } + } + } + } + }, + { + "eventId": "8", + "eventTime": "2024-10-18T19:15:57.306574648Z", + "eventType": "EVENT_TYPE_ACTIVITY_TASK_SCHEDULED", + "taskId": "16777715", + "activityTaskScheduledEventAttributes": { + "activityId": "8", + "activityType": { + "name": "StateApiWaitUntil" + }, + "taskQueue": { + "name": "Interpreter_DEFAULT", + "kind": "TASK_QUEUE_KIND_NORMAL" + }, + "header": {}, + "input": { + "payloads": [ + { + "metadata": { + "encoding": "anNvbi9wbGFpbg==" + }, + "data": "InRlbXBvcmFsIg==" + }, + { + "metadata": { + "encoding": "anNvbi9wbGFpbg==" + }, + "data": "eyJJd2ZXb3JrZXJVcmwiOiJodHRwOi8vbG9jYWxob3N0Ojk3MTQiLCJSZXF1ZXN0Ijp7ImNvbnRleHQiOnsic3RhdGVFeGVjdXRpb25JZCI6IlMxLTEiLCJ3b3JrZmxvd0lkIjoiYmFzaWMxNzI5Mjc4OTU3MjU2NTg1MDAwIiwid29ya2Zsb3dSdW5JZCI6ImNkZmI1NzFkLTA5YmQtNGI1NS1hYWNlLTBhMjk5NDAyY2NlOCIsIndvcmtmbG93U3RhcnRlZFRpbWVzdGFtcCI6MTcyOTI3ODk1N30sInN0YXRlSW5wdXQiOnsiZGF0YSI6InRlc3QgZGF0YSIsImVuY29kaW5nIjoianNvbiJ9LCJ3b3JrZmxvd1N0YXRlSWQiOiJTMSIsIndvcmtmbG93VHlwZSI6ImJhc2ljIn19" + } + ] + }, + "scheduleToCloseTimeout": "100s", + "scheduleToStartTimeout": "100s", + "startToCloseTimeout": "12s", + "heartbeatTimeout": "0s", + "workflowTaskCompletedEventId": "4", + "retryPolicy": { + "initialInterval": "12s", + "backoffCoefficient": 12, + "maximumInterval": "12s", + "maximumAttempts": 12 + }, + "useWorkflowBuildId": true + } + }, + { + "eventId": "9", + "eventTime": "2024-10-18T19:15:57.312778063Z", + "eventType": "EVENT_TYPE_ACTIVITY_TASK_STARTED", + "taskId": "16777721", + "activityTaskStartedEventAttributes": { + "scheduledEventId": "8", + "identity": "23706@IT-USA-VY0662@", + "requestId": "58f20eea-6964-412d-8747-18672f86312d", + "attempt": 1, + "workerVersion": { + "buildId": "13f6de4cee9594117cbece510a4b4d4c" + } + } + }, + { + "eventId": "10", + "eventTime": "2024-10-18T19:15:57.318697852Z", + "eventType": "EVENT_TYPE_ACTIVITY_TASK_COMPLETED", + "taskId": "16777722", + "activityTaskCompletedEventAttributes": { + "result": { + "payloads": [ + { + "metadata": { + "encoding": "anNvbi9wbGFpbg==" + }, + "data": "eyJjb21tYW5kUmVxdWVzdCI6eyJkZWNpZGVyVHJpZ2dlclR5cGUiOiJBTExfQ09NTUFORF9DT01QTEVURUQifX0=" + } + ] + }, + "scheduledEventId": "8", + "startedEventId": "9", + "identity": "23706@IT-USA-VY0662@" + } + }, + { + "eventId": "11", + "eventTime": "2024-10-18T19:15:57.318704018Z", + "eventType": "EVENT_TYPE_WORKFLOW_TASK_SCHEDULED", + "taskId": "16777723", + "workflowTaskScheduledEventAttributes": { + "taskQueue": { + "name": "IT-USA-VY0662:0177141d-3de0-4a17-a157-4e29bf06fec8", + "kind": "TASK_QUEUE_KIND_STICKY", + "normalName": "Interpreter_DEFAULT" + }, + "startToCloseTimeout": "10s", + "attempt": 1 + } + }, + { + "eventId": "12", + "eventTime": "2024-10-18T19:15:57.339150567Z", + "eventType": "EVENT_TYPE_WORKFLOW_TASK_STARTED", + "taskId": "16777727", + "workflowTaskStartedEventAttributes": { + "scheduledEventId": "11", + "identity": "23706@IT-USA-VY0662@", + "requestId": "68dde061-857a-40e1-aaf3-7405b5304e9e", + "historySizeBytes": "2490", + "workerVersion": { + "buildId": "13f6de4cee9594117cbece510a4b4d4c" + } + } + }, + { + "eventId": "13", + "eventTime": "2024-10-18T19:15:57.345669151Z", + "eventType": "EVENT_TYPE_WORKFLOW_TASK_COMPLETED", + "taskId": "16777731", + "workflowTaskCompletedEventAttributes": { + "scheduledEventId": "11", + "startedEventId": "12", + "identity": "23706@IT-USA-VY0662@", + "workerVersion": { + "buildId": "13f6de4cee9594117cbece510a4b4d4c" + }, + "sdkMetadata": {}, + "meteringMetadata": {} + } + }, + { + "eventId": "14", + "eventTime": "2024-10-18T19:15:57.345703318Z", + "eventType": "EVENT_TYPE_ACTIVITY_TASK_SCHEDULED", + "taskId": "16777732", + "activityTaskScheduledEventAttributes": { + "activityId": "14", + "activityType": { + "name": "StateApiExecute" + }, + "taskQueue": { + "name": "Interpreter_DEFAULT", + "kind": "TASK_QUEUE_KIND_NORMAL" + }, + "header": {}, + "input": { + "payloads": [ + { + "metadata": { + "encoding": "anNvbi9wbGFpbg==" + }, + "data": "InRlbXBvcmFsIg==" + }, + { + "metadata": { + "encoding": "anNvbi9wbGFpbg==" + }, + "data": "eyJJd2ZXb3JrZXJVcmwiOiJodHRwOi8vbG9jYWxob3N0Ojk3MTQiLCJSZXF1ZXN0Ijp7ImNvbW1hbmRSZXN1bHRzIjp7InN0YXRlU3RhcnRBcGlTdWNjZWVkZWQiOnRydWV9LCJjb250ZXh0Ijp7InN0YXRlRXhlY3V0aW9uSWQiOiJTMS0xIiwid29ya2Zsb3dJZCI6ImJhc2ljMTcyOTI3ODk1NzI1NjU4NTAwMCIsIndvcmtmbG93UnVuSWQiOiJjZGZiNTcxZC0wOWJkLTRiNTUtYWFjZS0wYTI5OTQwMmNjZTgiLCJ3b3JrZmxvd1N0YXJ0ZWRUaW1lc3RhbXAiOjE3MjkyNzg5NTd9LCJzdGF0ZUlucHV0Ijp7ImRhdGEiOiJ0ZXN0IGRhdGEiLCJlbmNvZGluZyI6Impzb24ifSwid29ya2Zsb3dTdGF0ZUlkIjoiUzEiLCJ3b3JrZmxvd1R5cGUiOiJiYXNpYyJ9fQ==" + } + ] + }, + "scheduleToCloseTimeout": "100s", + "scheduleToStartTimeout": "100s", + "startToCloseTimeout": "13s", + "heartbeatTimeout": "0s", + "workflowTaskCompletedEventId": "13", + "retryPolicy": { + "initialInterval": "13s", + "backoffCoefficient": 13, + "maximumInterval": "13s", + "maximumAttempts": 13 + }, + "useWorkflowBuildId": true + } + }, + { + "eventId": "15", + "eventTime": "2024-10-18T19:15:57.351697815Z", + "eventType": "EVENT_TYPE_ACTIVITY_TASK_STARTED", + "taskId": "16777737", + "activityTaskStartedEventAttributes": { + "scheduledEventId": "14", + "identity": "23706@IT-USA-VY0662@", + "requestId": "c74cd014-26e0-4c85-bbb4-d4070d1676f2", + "attempt": 1, + "workerVersion": { + "buildId": "13f6de4cee9594117cbece510a4b4d4c" + } + } + }, + { + "eventId": "16", + "eventTime": "2024-10-18T19:15:57.355490672Z", + "eventType": "EVENT_TYPE_ACTIVITY_TASK_COMPLETED", + "taskId": "16777738", + "activityTaskCompletedEventAttributes": { + "result": { + "payloads": [ + { + "metadata": { + "encoding": "anNvbi9wbGFpbg==" + }, + "data": "eyJzdGF0ZURlY2lzaW9uIjp7Im5leHRTdGF0ZXMiOlt7InN0YXRlSWQiOiJTMiIsInN0YXRlSW5wdXQiOnsiZGF0YSI6InRlc3QgZGF0YSIsImVuY29kaW5nIjoianNvbiJ9LCJzdGF0ZU9wdGlvbnMiOnsiZXhlY3V0ZUFwaVJldHJ5UG9saWN5Ijp7ImJhY2tvZmZDb2VmZmljaWVudCI6MTUsImluaXRpYWxJbnRlcnZhbFNlY29uZHMiOjE1LCJtYXhpbXVtQXR0ZW1wdHMiOjE1LCJtYXhpbXVtSW50ZXJ2YWxTZWNvbmRzIjoxNX0sImV4ZWN1dGVBcGlUaW1lb3V0U2Vjb25kcyI6MTUsInN0YXJ0QXBpUmV0cnlQb2xpY3kiOnsiYmFja29mZkNvZWZmaWNpZW50IjoxNCwiaW5pdGlhbEludGVydmFsU2Vjb25kcyI6MTQsIm1heGltdW1BdHRlbXB0cyI6MTQsIm1heGltdW1JbnRlcnZhbFNlY29uZHMiOjE0fSwic3RhcnRBcGlUaW1lb3V0U2Vjb25kcyI6MTR9fV19fQ==" + } + ] + }, + "scheduledEventId": "14", + "startedEventId": "15", + "identity": "23706@IT-USA-VY0662@" + } + }, + { + "eventId": "17", + "eventTime": "2024-10-18T19:15:57.355495506Z", + "eventType": "EVENT_TYPE_WORKFLOW_TASK_SCHEDULED", + "taskId": "16777739", + "workflowTaskScheduledEventAttributes": { + "taskQueue": { + "name": "IT-USA-VY0662:0177141d-3de0-4a17-a157-4e29bf06fec8", + "kind": "TASK_QUEUE_KIND_STICKY", + "normalName": "Interpreter_DEFAULT" + }, + "startToCloseTimeout": "10s", + "attempt": 1 + } + }, + { + "eventId": "18", + "eventTime": "2024-10-18T19:15:57.362164340Z", + "eventType": "EVENT_TYPE_WORKFLOW_TASK_STARTED", + "taskId": "16777743", + "workflowTaskStartedEventAttributes": { + "scheduledEventId": "17", + "identity": "23706@IT-USA-VY0662@", + "requestId": "9eedc935-fda3-443c-be1f-a72ca76b051a", + "historySizeBytes": "4027", + "workerVersion": { + "buildId": "13f6de4cee9594117cbece510a4b4d4c" + } + } + }, + { + "eventId": "19", + "eventTime": "2024-10-18T19:15:57.371969779Z", + "eventType": "EVENT_TYPE_WORKFLOW_TASK_COMPLETED", + "taskId": "16777747", + "workflowTaskCompletedEventAttributes": { + "scheduledEventId": "17", + "startedEventId": "18", + "identity": "23706@IT-USA-VY0662@", + "workerVersion": { + "buildId": "13f6de4cee9594117cbece510a4b4d4c" + }, + "sdkMetadata": {}, + "meteringMetadata": {} + } + }, + { + "eventId": "20", + "eventTime": "2024-10-18T19:15:57.372012862Z", + "eventType": "EVENT_TYPE_ACTIVITY_TASK_SCHEDULED", + "taskId": "16777748", + "activityTaskScheduledEventAttributes": { + "activityId": "20", + "activityType": { + "name": "StateApiWaitUntil" + }, + "taskQueue": { + "name": "Interpreter_DEFAULT", + "kind": "TASK_QUEUE_KIND_NORMAL" + }, + "header": {}, + "input": { + "payloads": [ + { + "metadata": { + "encoding": "anNvbi9wbGFpbg==" + }, + "data": "InRlbXBvcmFsIg==" + }, + { + "metadata": { + "encoding": "anNvbi9wbGFpbg==" + }, + "data": "eyJJd2ZXb3JrZXJVcmwiOiJodHRwOi8vbG9jYWxob3N0Ojk3MTQiLCJSZXF1ZXN0Ijp7ImNvbnRleHQiOnsic3RhdGVFeGVjdXRpb25JZCI6IlMyLTEiLCJ3b3JrZmxvd0lkIjoiYmFzaWMxNzI5Mjc4OTU3MjU2NTg1MDAwIiwid29ya2Zsb3dSdW5JZCI6ImNkZmI1NzFkLTA5YmQtNGI1NS1hYWNlLTBhMjk5NDAyY2NlOCIsIndvcmtmbG93U3RhcnRlZFRpbWVzdGFtcCI6MTcyOTI3ODk1N30sInN0YXRlSW5wdXQiOnsiZGF0YSI6InRlc3QgZGF0YSIsImVuY29kaW5nIjoianNvbiJ9LCJ3b3JrZmxvd1N0YXRlSWQiOiJTMiIsIndvcmtmbG93VHlwZSI6ImJhc2ljIn19" + } + ] + }, + "scheduleToCloseTimeout": "100s", + "scheduleToStartTimeout": "100s", + "startToCloseTimeout": "14s", + "heartbeatTimeout": "0s", + "workflowTaskCompletedEventId": "19", + "retryPolicy": { + "initialInterval": "14s", + "backoffCoefficient": 14, + "maximumInterval": "14s", + "maximumAttempts": 14 + }, + "useWorkflowBuildId": true + } + }, + { + "eventId": "21", + "eventTime": "2024-10-18T19:15:57.377732899Z", + "eventType": "EVENT_TYPE_ACTIVITY_TASK_STARTED", + "taskId": "16777753", + "activityTaskStartedEventAttributes": { + "scheduledEventId": "20", + "identity": "23706@IT-USA-VY0662@", + "requestId": "c8c8a11b-551b-4e6c-ab43-6ea3d3bba931", + "attempt": 1, + "workerVersion": { + "buildId": "13f6de4cee9594117cbece510a4b4d4c" + } + } + }, + { + "eventId": "22", + "eventTime": "2024-10-18T19:15:57.382601764Z", + "eventType": "EVENT_TYPE_ACTIVITY_TASK_COMPLETED", + "taskId": "16777754", + "activityTaskCompletedEventAttributes": { + "result": { + "payloads": [ + { + "metadata": { + "encoding": "anNvbi9wbGFpbg==" + }, + "data": "eyJjb21tYW5kUmVxdWVzdCI6eyJkZWNpZGVyVHJpZ2dlclR5cGUiOiJBTExfQ09NTUFORF9DT01QTEVURUQifX0=" + } + ] + }, + "scheduledEventId": "20", + "startedEventId": "21", + "identity": "23706@IT-USA-VY0662@" + } + }, + { + "eventId": "23", + "eventTime": "2024-10-18T19:15:57.382607347Z", + "eventType": "EVENT_TYPE_WORKFLOW_TASK_SCHEDULED", + "taskId": "16777755", + "workflowTaskScheduledEventAttributes": { + "taskQueue": { + "name": "IT-USA-VY0662:0177141d-3de0-4a17-a157-4e29bf06fec8", + "kind": "TASK_QUEUE_KIND_STICKY", + "normalName": "Interpreter_DEFAULT" + }, + "startToCloseTimeout": "10s", + "attempt": 1 + } + }, + { + "eventId": "24", + "eventTime": "2024-10-18T19:15:57.390037229Z", + "eventType": "EVENT_TYPE_WORKFLOW_TASK_STARTED", + "taskId": "16777759", + "workflowTaskStartedEventAttributes": { + "scheduledEventId": "23", + "identity": "23706@IT-USA-VY0662@", + "requestId": "4efdba3a-a0e2-445f-8113-120cc970739e", + "historySizeBytes": "5148", + "workerVersion": { + "buildId": "13f6de4cee9594117cbece510a4b4d4c" + } + } + }, + { + "eventId": "25", + "eventTime": "2024-10-18T19:15:57.396472062Z", + "eventType": "EVENT_TYPE_WORKFLOW_TASK_COMPLETED", + "taskId": "16777763", + "workflowTaskCompletedEventAttributes": { + "scheduledEventId": "23", + "startedEventId": "24", + "identity": "23706@IT-USA-VY0662@", + "workerVersion": { + "buildId": "13f6de4cee9594117cbece510a4b4d4c" + }, + "sdkMetadata": {}, + "meteringMetadata": {} + } + }, + { + "eventId": "26", + "eventTime": "2024-10-18T19:15:57.396506562Z", + "eventType": "EVENT_TYPE_ACTIVITY_TASK_SCHEDULED", + "taskId": "16777764", + "activityTaskScheduledEventAttributes": { + "activityId": "26", + "activityType": { + "name": "StateApiExecute" + }, + "taskQueue": { + "name": "Interpreter_DEFAULT", + "kind": "TASK_QUEUE_KIND_NORMAL" + }, + "header": {}, + "input": { + "payloads": [ + { + "metadata": { + "encoding": "anNvbi9wbGFpbg==" + }, + "data": "InRlbXBvcmFsIg==" + }, + { + "metadata": { + "encoding": "anNvbi9wbGFpbg==" + }, + "data": "eyJJd2ZXb3JrZXJVcmwiOiJodHRwOi8vbG9jYWxob3N0Ojk3MTQiLCJSZXF1ZXN0Ijp7ImNvbW1hbmRSZXN1bHRzIjp7InN0YXRlU3RhcnRBcGlTdWNjZWVkZWQiOnRydWV9LCJjb250ZXh0Ijp7InN0YXRlRXhlY3V0aW9uSWQiOiJTMi0xIiwid29ya2Zsb3dJZCI6ImJhc2ljMTcyOTI3ODk1NzI1NjU4NTAwMCIsIndvcmtmbG93UnVuSWQiOiJjZGZiNTcxZC0wOWJkLTRiNTUtYWFjZS0wYTI5OTQwMmNjZTgiLCJ3b3JrZmxvd1N0YXJ0ZWRUaW1lc3RhbXAiOjE3MjkyNzg5NTd9LCJzdGF0ZUlucHV0Ijp7ImRhdGEiOiJ0ZXN0IGRhdGEiLCJlbmNvZGluZyI6Impzb24ifSwid29ya2Zsb3dTdGF0ZUlkIjoiUzIiLCJ3b3JrZmxvd1R5cGUiOiJiYXNpYyJ9fQ==" + } + ] + }, + "scheduleToCloseTimeout": "100s", + "scheduleToStartTimeout": "100s", + "startToCloseTimeout": "15s", + "heartbeatTimeout": "0s", + "workflowTaskCompletedEventId": "25", + "retryPolicy": { + "initialInterval": "15s", + "backoffCoefficient": 15, + "maximumInterval": "15s", + "maximumAttempts": 15 + }, + "useWorkflowBuildId": true + } + }, + { + "eventId": "27", + "eventTime": "2024-10-18T19:15:57.403121730Z", + "eventType": "EVENT_TYPE_ACTIVITY_TASK_STARTED", + "taskId": "16777769", + "activityTaskStartedEventAttributes": { + "scheduledEventId": "26", + "identity": "23706@IT-USA-VY0662@", + "requestId": "c81c7348-1464-4dde-8fda-e8e61bdf3c16", + "attempt": 1, + "workerVersion": { + "buildId": "13f6de4cee9594117cbece510a4b4d4c" + } + } + }, + { + "eventId": "28", + "eventTime": "2024-10-18T19:15:57.408691516Z", + "eventType": "EVENT_TYPE_ACTIVITY_TASK_COMPLETED", + "taskId": "16777770", + "activityTaskCompletedEventAttributes": { + "result": { + "payloads": [ + { + "metadata": { + "encoding": "anNvbi9wbGFpbg==" + }, + "data": "eyJzdGF0ZURlY2lzaW9uIjp7Im5leHRTdGF0ZXMiOlt7InN0YXRlSWQiOiJfU1lTX0dSQUNFRlVMX0NPTVBMRVRJTkdfV09SS0ZMT1ciLCJzdGF0ZUlucHV0Ijp7ImRhdGEiOiJ0ZXN0IGRhdGEiLCJlbmNvZGluZyI6Impzb24ifX1dfX0=" + } + ] + }, + "scheduledEventId": "26", + "startedEventId": "27", + "identity": "23706@IT-USA-VY0662@" + } + }, + { + "eventId": "29", + "eventTime": "2024-10-18T19:15:57.408696807Z", + "eventType": "EVENT_TYPE_WORKFLOW_TASK_SCHEDULED", + "taskId": "16777771", + "workflowTaskScheduledEventAttributes": { + "taskQueue": { + "name": "IT-USA-VY0662:0177141d-3de0-4a17-a157-4e29bf06fec8", + "kind": "TASK_QUEUE_KIND_STICKY", + "normalName": "Interpreter_DEFAULT" + }, + "startToCloseTimeout": "10s", + "attempt": 1 + } + }, + { + "eventId": "30", + "eventTime": "2024-10-18T19:15:57.415697894Z", + "eventType": "EVENT_TYPE_WORKFLOW_TASK_STARTED", + "taskId": "16777775", + "workflowTaskStartedEventAttributes": { + "scheduledEventId": "29", + "identity": "23706@IT-USA-VY0662@", + "requestId": "1d2366de-c8d0-4906-91e1-ccb0e4b4e85c", + "historySizeBytes": "6389", + "workerVersion": { + "buildId": "13f6de4cee9594117cbece510a4b4d4c" + } + } + }, + { + "eventId": "31", + "eventTime": "2024-10-18T19:15:57.423151109Z", + "eventType": "EVENT_TYPE_WORKFLOW_TASK_COMPLETED", + "taskId": "16777779", + "workflowTaskCompletedEventAttributes": { + "scheduledEventId": "29", + "startedEventId": "30", + "identity": "23706@IT-USA-VY0662@", + "workerVersion": { + "buildId": "13f6de4cee9594117cbece510a4b4d4c" + }, + "sdkMetadata": {}, + "meteringMetadata": {} + } + }, + { + "eventId": "32", + "eventTime": "2024-10-18T19:15:57.423179609Z", + "eventType": "EVENT_TYPE_WORKFLOW_EXECUTION_COMPLETED", + "taskId": "16777780", + "workflowExecutionCompletedEventAttributes": { + "result": { + "payloads": [ + { + "metadata": { + "encoding": "anNvbi9wbGFpbg==" + }, + "data": "eyJzdGF0ZUNvbXBsZXRpb25PdXRwdXRzIjpbeyJjb21wbGV0ZWRTdGF0ZUV4ZWN1dGlvbklkIjoiUzItMSIsImNvbXBsZXRlZFN0YXRlSWQiOiJTMiIsImNvbXBsZXRlZFN0YXRlT3V0cHV0Ijp7ImRhdGEiOiJ0ZXN0IGRhdGEiLCJlbmNvZGluZyI6Impzb24ifX1dfQ==" + } + ] + }, + "workflowTaskCompletedEventId": "31" + } + } + ] +} \ No newline at end of file diff --git a/replayTests/replay_test.go b/replayTests/replay_test.go index cc49a825..942009ce 100644 --- a/replayTests/replay_test.go +++ b/replayTests/replay_test.go @@ -21,6 +21,7 @@ var jsonHistoryFiles = []string{ "v4-continue-as-new-on-no-state.json", "v4-continued-as-new-before-versioning-optimization.json", "v4-local-activity-optimization.json", + "v5-basic.json", } func TestTemporalReplay(t *testing.T) { diff --git a/service/interpreter/globalVersioner.go b/service/interpreter/globalVersioner.go index 394c7ceb..cc896f33 100644 --- a/service/interpreter/globalVersioner.go +++ b/service/interpreter/globalVersioner.go @@ -66,6 +66,10 @@ func (p *GlobalVersioner) IsAfterVersionOfRenamedStateApi() bool { return p.version >= versions.StartingVersionRenamedStateApi } +func (p *GlobalVersioner) IsAfterVersionOfTemporal26SDK() bool { + return p.version >= versions.StartingVersionTemporal26SDK +} + func (p *GlobalVersioner) UpsertGlobalVersionSearchAttribute() error { if p.OmitVersionMarker { // the search attribute is already set when starting the workflow diff --git a/service/interpreter/versions/versions.go b/service/interpreter/versions/versions.go index e120081e..d9215658 100644 --- a/service/interpreter/versions/versions.go +++ b/service/interpreter/versions/versions.go @@ -4,4 +4,5 @@ const StartingVersionUsingGlobalVersioning = 1 const StartingVersionOptimizedUpsertSearchAttribute = 2 const StartingVersionRenamedStateApi = 3 const StartingVersionContinueAsNewOnNoStates = 4 -const MaxOfAllVersions = StartingVersionContinueAsNewOnNoStates +const StartingVersionTemporal26SDK = 5 +const MaxOfAllVersions = StartingVersionTemporal26SDK diff --git a/service/interpreter/workflowImpl.go b/service/interpreter/workflowImpl.go index 5f5c3444..ff85e667 100644 --- a/service/interpreter/workflowImpl.go +++ b/service/interpreter/workflowImpl.go @@ -92,7 +92,7 @@ func InterpreterImpl( continueAsNewer = NewContinueAsNewer(provider, interStateChannel, signalReceiver, stateExecutionCounter, persistenceManager, stateRequestQueue, outputCollector, timerProcessor) } - _, err = NewWorkflowUpdater(ctx, provider, persistenceManager, stateRequestQueue, continueAsNewer, continueAsNewCounter, workflowConfiger, interStateChannel, basicInfo) + _, err = NewWorkflowUpdater(ctx, provider, persistenceManager, stateRequestQueue, continueAsNewer, continueAsNewCounter, workflowConfiger, interStateChannel, basicInfo, globalVersioner) if err != nil { return nil, err } diff --git a/service/interpreter/workflowUpdater.go b/service/interpreter/workflowUpdater.go index e5c30521..a45c9bc5 100644 --- a/service/interpreter/workflowUpdater.go +++ b/service/interpreter/workflowUpdater.go @@ -16,13 +16,14 @@ type WorkflowUpdater struct { configer *WorkflowConfiger logger UnifiedLogger basicInfo service.BasicInfo + globalVersioner *GlobalVersioner } func NewWorkflowUpdater( ctx UnifiedContext, provider WorkflowProvider, persistenceManager *PersistenceManager, stateRequestQueue *StateRequestQueue, continueAsNewer *ContinueAsNewer, continueAsNewCounter *ContinueAsNewCounter, configer *WorkflowConfiger, - interStateChannel *InterStateChannel, basicInfo service.BasicInfo, + interStateChannel *InterStateChannel, basicInfo service.BasicInfo, globalVersioner *GlobalVersioner, ) (*WorkflowUpdater, error) { updater := &WorkflowUpdater{ persistenceManager: persistenceManager, @@ -34,10 +35,13 @@ func NewWorkflowUpdater( basicInfo: basicInfo, provider: provider, logger: provider.GetLogger(ctx), + globalVersioner: globalVersioner, } - err := provider.SetRpcUpdateHandler(ctx, service.ExecuteOptimisticLockingRpcUpdateType, updater.validator, updater.handler) - if err != nil { - return nil, err + if globalVersioner.IsAfterVersionOfTemporal26SDK() { + err := provider.SetRpcUpdateHandler(ctx, service.ExecuteOptimisticLockingRpcUpdateType, updater.validator, updater.handler) + if err != nil { + return nil, err + } } return updater, nil }