temporalio/sdk-php

[Bug] proto_codec_parse_message Empty searchAttributes child workflow

root-aza opened this issue · 0 comments

Minimal Reproduction

#[WorkflowInterface]
final class AWorkflow
{
    #[WorkflowMethod]
    public function start(bool $child = false): \Generator
    {
        if ($child){
            return;
        }
        
        
        yield Workflow::newChildWorkflowStub(
            self::class,
            ChildWorkflowOptions::new()
                ->withSearchAttributes([]) // bang 💥
        )->start(true);
    }
}

Environment/Versions

version rr: 2024.2.1
version sdk: 2.11

Additional context

{
  "message": "proto_codec_parse_message: expected { character for map value",
  "source": "GoSDK",
  "stackTrace": "process event for default [panic]:\ngithub.com/temporalio/roadrunner-temporal/v5/aggregatedpool.(*Workflow).OnWorkflowTaskStarted(0x4000e9e460, 0x3?)\n\tgithub.com/temporalio/roadrunner-temporal/v5@v5.1.1/aggregatedpool/workflow.go:194 +0x360\ngo.temporal.io/sdk/internal.(*workflowExecutionEventHandlerImpl).ProcessEvent(0x4000e80be8, 0x4000cb33b0, 0x20?, 0x1)\n\tgo.temporal.io/sdk@v1.29.1/internal/internal_event_handlers.go:1208 +0x1f0\ngo.temporal.io/sdk/internal.(*workflowExecutionContextImpl).ProcessWorkflowTask(0x4000c49400, 0x40008f6a20)\n\tgo.temporal.io/sdk@v1.29.1/internal/internal_task_handlers.go:1152 +0x13f0\ngo.temporal.io/sdk/internal.(*workflowTaskHandlerImpl).ProcessWorkflowTask(0x4000e98b60, 0x40008f6a20, 0x4000c49400, 0x40005f1b30)\n\tgo.temporal.io/sdk@v1.29.1/internal/internal_task_handlers.go:917 +0x2b8\ngo.temporal.io/sdk/internal.(*workflowTaskPoller).processWorkflowTask(0x4000e8e900, 0x40008f6a20)\n\tgo.temporal.io/sdk@v1.29.1/internal/internal_task_pollers.go:363 +0x334\ngo.temporal.io/sdk/internal.(*workflowTaskPoller).ProcessTask(0x4000e8e900, {0x17926a0, 0x40008f6a20})\n\tgo.temporal.io/sdk@v1.29.1/internal/internal_task_pollers.go:325 +0x70\ngo.temporal.io/sdk/internal.(*baseWorker).processTaskAsync.func1()\n\tgo.temporal.io/sdk@v1.29.1/internal/internal_worker_base.go:444 +0x104\ncreated by go.temporal.io/sdk/internal.(*baseWorker).processTaskAsync in goroutine 45\n\tgo.temporal.io/sdk@v1.29.1/internal/internal_worker_base.go:423 +0x90",
  "encodedAttributes": null,
  "cause": null,
  "applicationFailureInfo": {
    "type": "PanicError",
    "nonRetryable": true,
    "details": null
  }
Workflow events
{
  "events": [
    {
      "eventId": "1",
      "eventTime": "2024-10-05T19:01:43.920084426Z",
      "eventType": "WorkflowExecutionStarted",
      "version": "0",
      "taskId": "1048647",
      "workerMayIgnore": false,
      "workflowExecutionStartedEventAttributes": {
        "workflowType": {
          "name": "ActivityRetry.greet"
        },
        "parentWorkflowNamespace": "",
        "parentWorkflowNamespaceId": "",
        "parentWorkflowExecution": null,
        "parentInitiatedEventId": "0",
        "taskQueue": {
          "name": "default",
          "kind": "Normal",
          "normalName": ""
        },
        "input": {
          "payloads": [
            {
              "metadata": {
                "encoding": "anNvbi9wbGFpbg=="
              },
              "data": "IkFudG9ueSI="
            }
          ]
        },
        "workflowExecutionTimeout": "60s",
        "workflowRunTimeout": "60s",
        "workflowTaskTimeout": "10s",
        "continuedExecutionRunId": "",
        "initiator": "Unspecified",
        "continuedFailure": null,
        "lastCompletionResult": null,
        "originalExecutionRunId": "2f36f4fc-035d-47d1-8526-90bc35c70b48",
        "identity": "88@28ca3010650c",
        "firstExecutionRunId": "2f36f4fc-035d-47d1-8526-90bc35c70b48",
        "retryPolicy": null,
        "attempt": 1,
        "workflowExecutionExpirationTime": "2024-10-05T19:02:43.920Z",
        "cronSchedule": "",
        "firstWorkflowTaskBackoff": "0s",
        "memo": null,
        "searchAttributes": {
          "indexedFields": {}
        },
        "prevAutoResetPoints": null,
        "header": {
          "fields": {}
        },
        "parentInitiatedEventVersion": "0",
        "workflowId": "dba488dc-d4e2-4f7c-8d0b-8f85b857b834",
        "sourceVersionStamp": null
      }
    },
    {
      "eventId": "2",
      "eventTime": "2024-10-05T19:01:43.920196051Z",
      "eventType": "WorkflowTaskScheduled",
      "version": "0",
      "taskId": "1048648",
      "workerMayIgnore": false,
      "workflowTaskScheduledEventAttributes": {
        "taskQueue": {
          "name": "default",
          "kind": "Normal",
          "normalName": ""
        },
        "startToCloseTimeout": "10s",
        "attempt": 1
      }
    },
    {
      "eventId": "3",
      "eventTime": "2024-10-05T19:01:43.927352301Z",
      "eventType": "WorkflowTaskStarted",
      "version": "0",
      "taskId": "1048654",
      "workerMayIgnore": false,
      "workflowTaskStartedEventAttributes": {
        "scheduledEventId": "2",
        "identity": "default:a2ba3d21-00b5-44c1-bfef-1700289170ab",
        "requestId": "6c1d2a10-b8d8-400e-8e0d-59d1cdf4671b",
        "suggestContinueAsNew": false,
        "historySizeBytes": "319"
      }
    },
    {
      "eventId": "4",
      "eventTime": "2024-10-05T19:01:43.952319551Z",
      "eventType": "WorkflowTaskFailed",
      "version": "0",
      "taskId": "1048658",
      "workerMayIgnore": false,
      "workflowTaskFailedEventAttributes": {
        "scheduledEventId": "2",
        "startedEventId": "3",
        "cause": "WorkflowWorkerUnhandledFailure",
        "failure": {
          "message": "proto_codec_parse_message: expected { character for map value",
          "source": "GoSDK",
          "stackTrace": "process event for default [panic]:\ngithub.com/temporalio/roadrunner-temporal/v5/aggregatedpool.(*Workflow).OnWorkflowTaskStarted(0x4000e9e460, 0x3?)\n\tgithub.com/temporalio/roadrunner-temporal/v5@v5.1.1/aggregatedpool/workflow.go:194 +0x360\ngo.temporal.io/sdk/internal.(*workflowExecutionEventHandlerImpl).ProcessEvent(0x4000e80be8, 0x4000cb33b0, 0x20?, 0x1)\n\tgo.temporal.io/sdk@v1.29.1/internal/internal_event_handlers.go:1208 +0x1f0\ngo.temporal.io/sdk/internal.(*workflowExecutionContextImpl).ProcessWorkflowTask(0x4000c49400, 0x40008f6a20)\n\tgo.temporal.io/sdk@v1.29.1/internal/internal_task_handlers.go:1152 +0x13f0\ngo.temporal.io/sdk/internal.(*workflowTaskHandlerImpl).ProcessWorkflowTask(0x4000e98b60, 0x40008f6a20, 0x4000c49400, 0x40005f1b30)\n\tgo.temporal.io/sdk@v1.29.1/internal/internal_task_handlers.go:917 +0x2b8\ngo.temporal.io/sdk/internal.(*workflowTaskPoller).processWorkflowTask(0x4000e8e900, 0x40008f6a20)\n\tgo.temporal.io/sdk@v1.29.1/internal/internal_task_pollers.go:363 +0x334\ngo.temporal.io/sdk/internal.(*workflowTaskPoller).ProcessTask(0x4000e8e900, {0x17926a0, 0x40008f6a20})\n\tgo.temporal.io/sdk@v1.29.1/internal/internal_task_pollers.go:325 +0x70\ngo.temporal.io/sdk/internal.(*baseWorker).processTaskAsync.func1()\n\tgo.temporal.io/sdk@v1.29.1/internal/internal_worker_base.go:444 +0x104\ncreated by go.temporal.io/sdk/internal.(*baseWorker).processTaskAsync in goroutine 45\n\tgo.temporal.io/sdk@v1.29.1/internal/internal_worker_base.go:423 +0x90",
          "encodedAttributes": null,
          "cause": null,
          "applicationFailureInfo": {
            "type": "PanicError",
            "nonRetryable": true,
            "details": null
          }
        },
        "identity": "default:a2ba3d21-00b5-44c1-bfef-1700289170ab",
        "baseRunId": "",
        "newRunId": "",
        "forkEventVersion": "0",
        "binaryChecksum": "",
        "workerVersion": null
      }
    },
    {
      "eventId": "5",
      "eventTime": "2024-10-05T19:02:43.923306759Z",
      "eventType": "WorkflowExecutionTimedOut",
      "version": "0",
      "taskId": "1048675",
      "workerMayIgnore": false,
      "workflowExecutionTimedOutEventAttributes": {
        "retryState": "Timeout",
        "newExecutionRunId": ""
      }
    }
  ]
}