Open
Description
Describe the bug
Upseart search attributes could got error of concurrent map writes
To Reproduce
Is the issue reproducible?
- Yes, but not stable
The same test got pass in Temporal, but sometimes fail with Cadence.
Steps to reproduce the behavior:
Uncomment the test for Cadence Run the integ test from iWF
Expected behavior
The integ test should succeed.
Screenshots
If applicable, add screenshots to help explain your problem.
Additional context
runtime.throw({0x103003d8f?, 0x1400084d7e8?})
/usr/local/go-dists/1.18.3/go/src/runtime/panic.go:992 +0x50 fp=0x14000c4ae90 sp=0x14000c4ae60 pc=0x1021b2500
runtime.mapassign_faststr(0x102fe0d6b?, 0x103fadc00?, {0x103001b1f, 0x14})
/usr/local/go-dists/1.18.3/go/src/runtime/map_faststr.go:212 +0x3bc fp=0x14000c4af00 sp=0x14000c4ae90 pc=0x10219016c
go.uber.org/cadence/internal.mergeSearchAttributes(...)
/Users/qlong/go/pkg/mod/go.uber.org/[email protected]/internal/internal_event_handlers.go:354
go.uber.org/cadence/internal.(*workflowEnvironmentImpl).updateWorkflowInfoWithSearchAttributes(...)
/Users/qlong/go/pkg/mod/go.uber.org/[email protected]/internal/internal_event_handlers.go:339
go.uber.org/cadence/internal.(*workflowEnvironmentImpl).UpsertSearchAttributes(0x1400091c900, 0x102a26c8c?)
/Users/qlong/go/pkg/mod/go.uber.org/[email protected]/internal/internal_event_handlers.go:334 +0x258 fp=0x14000c4aff0 sp=0x14000c4af00 pc=0x1029e4f38
go.uber.org/cadence/internal.(*workflowEnvironmentInterceptor).UpsertSearchAttributes(0x14000917980, {0x1032f8e20?, 0x103562ea0?}, 0x10344b7a0?)
/Users/qlong/go/pkg/mod/go.uber.org/[email protected]/internal/workflow.go:1347 +0x94 fp=0x14000c4b030 sp=0x14000c4aff0 pc=0x102a26d84
go.uber.org/cadence/internal.UpsertSearchAttributes({0x10357a788, 0x140005e7f40}, 0x140005e7f40?)
/Users/qlong/go/pkg/mod/go.uber.org/[email protected]/internal/workflow.go:1340 +0x78 fp=0x14000c4b070 sp=0x14000c4b030 pc=0x102a26ca8
go.uber.org/cadence/workflow.UpsertSearchAttributes(...)
/Users/qlong/go/pkg/mod/go.uber.org/[email protected]/workflow/workflow.go:452
github.com/indeedeng/iwf/service/interpreter/cadence.(*workflowProvider).UpsertSearchAttributes(0x10335ccc0?, {0x1035656b8?, 0x140005f1570?}, 0x14?)
/Users/qlong/indeed/iwf/iwf-server/service/interpreter/cadence/workflowProvider.go:28 +0x54 fp=0x14000c4b0c0 sp=0x14000c4b070 pc=0x102a37cb4
github.com/indeedeng/iwf/service/interpreter.(*stateExecutingManager).updateSearchAttribute(0x1400092e0c0)
/Users/qlong/indeed/iwf/iwf-server/service/interpreter/stateExecutingManager.go:60 +0x19c fp=0x14000c4b1c0 sp=0x14000c4b0c0 pc=0x10269d64c
github.com/indeedeng/iwf/service/interpreter.(*stateExecutingManager).completeStates(0x1400092e0c0, {{0x14000297918?, 0x140004f6750?}, 0x140005c5e90?, 0x140005c5ea0?})
/Users/qlong/indeed/iwf/iwf-server/service/interpreter/stateExecutingManager.go:46 +0xb0 fp=0x14000c4b200 sp=0x14000c4b1c0 pc=0x10269d450
github.com/indeedeng/iwf/service/interpreter.InterpreterImpl.func3.1()
/Users/qlong/indeed/iwf/iwf-server/service/interpreter/workflowImpl.go:83 +0x40 fp=0x14000c4b240 sp=0x14000c4b200 pc=0x10269ea40
runtime.deferCallSave(0x14000c4b2e0, 0x14000c4be68?)
/usr/local/go-dists/1.18.3/go/src/runtime/panic.go:750 +0x8c fp=0x14000c4b250 sp=0x14000c4b240 pc=0x1021b1d3c
runtime.runOpenDeferFrame(0x0?, 0x1400073a0a0)
/usr/local/go-dists/1.18.3/go/src/runtime/panic.go:723 +0x1b8 fp=0x14000c4b2a0 sp=0x14000c4b250 pc=0x1021b1b68
runtime.Goexit()
/usr/local/go-dists/1.18.3/go/src/runtime/panic.go:482 +0x188 fp=0x14000c4b320 sp=0x14000c4b2a0 pc=0x1021b11f8
go.uber.org/cadence/internal.(*coroutineState).exit.func1({0x14000c4b368?, 0x102a0fbe0?}, 0x14000746d90?)
/Users/qlong/go/pkg/mod/go.uber.org/[email protected]/internal/internal_workflow.go:850 +0x20 fp=0x14000c4b330 sp=0x14000c4b320 pc=0x102a11040
go.uber.org/cadence/internal.(*coroutineState).initialYield(0x140005f7a80, 0x3, {0x1400027e9e0, 0x19})
/Users/qlong/go/pkg/mod/go.uber.org/[email protected]/internal/internal_workflow.go:797 +0xbc fp=0x14000c4b370 sp=0x14000c4b330 pc=0x102a10c0c
go.uber.org/cadence/internal.(*coroutineState).yield(...)
/Users/qlong/go/pkg/mod/go.uber.org/[email protected]/internal/internal_workflow.go:806
go.uber.org/cadence/internal.(*channelImpl).Receive(0x1400072dc20, {0x10357a980, 0x1400092e270}, {0x0, 0x0})
/Users/qlong/go/pkg/mod/go.uber.org/[email protected]/internal/internal_workflow.go:621 +0x214 fp=0x14000c4b400 sp=0x14000c4b370 pc=0x102a0fbf4
go.uber.org/cadence/internal.(*decodeFutureImpl).Get(0x14000738408, {0x10357a980, 0x1400092e270}, {0x1032af200?, 0x14000011578})
/Users/qlong/go/pkg/mod/go.uber.org/[email protected]/internal/internal_workflow.go:1282 +0x4c fp=0x14000c4b4a0 sp=0x14000c4b400 pc=0x102a148cc
github.com/indeedeng/iwf/service/interpreter/cadence.(*futureImpl).Get(0x140005f1960, {0x1035656b8?, 0x140005f1740?}, {0x1032af200, 0x14000011578})
/Users/qlong/indeed/iwf/iwf-server/service/interpreter/cadence/workflowProvider.go:130 +0x7c fp=0x14000c4b4e0 sp=0x14000c4b4a0 pc=0x102a386ec
github.com/indeedeng/iwf/service/interpreter.executeState({0x1035656b8?, 0x140005f1700?}, {0x1035813e0, 0x104035540}, {{0x14000297918?, 0x140004e2700?}, 0x140005c5e90?, 0x140005c5ea0?}, {{0x1400032b020, 0x15}, ...}, ...)
/Users/qlong/indeed/iwf/iwf-server/service/interpreter/workflowImpl.go:210 +0x4b0 fp=0x14000c4bce0 sp=0x14000c4b4e0 pc=0x10269f770
github.com/indeedeng/iwf/service/interpreter.InterpreterImpl.func3({0x1035656b8, 0x140005f1700})
/Users/qlong/indeed/iwf/iwf-server/service/interpreter/workflowImpl.go:90 +0x24c fp=0x14000c4bee0 sp=0x14000c4bce0 pc=0x10269e59c
github.com/indeedeng/iwf/service/interpreter/cadence.workflowProvider.GoNamed.func1({0x10357a980?, 0x1400092e1e0})
/Users/qlong/indeed/iwf/iwf-server/service/interpreter/cadence/workflowProvider.go:80 +0x8c fp=0x14000c4bf20 sp=0x14000c4bee0 pc=0x102a3839c
go.uber.org/cadence/internal.(*dispatcherImpl).newNamedCoroutine.func1(0x1400077ae20?)
/Users/qlong/go/pkg/mod/go.uber.org/[email protected]/internal/internal_workflow.go:884 +0xc4 fp=0x14000c4bfb0 sp=0x14000c4bf20 pc=0x102a117b4
go.uber.org/cadence/internal.(*dispatcherImpl).newNamedCoroutine.func2()
/Users/qlong/go/pkg/mod/go.uber.org/[email protected]/internal/internal_workflow.go:885 +0x34 fp=0x14000c4bfd0 sp=0x14000c4bfb0 pc=0x102a116b4
runtime.goexit()
/usr/local/go-dists/1.18.3/go/src/runtime/asm_arm64.s:1263 +0x4 fp=0x14000c4bfd0 sp=0x14000c4bfd0 pc=0x1021e6074
created by go.uber.org/cadence/internal.(*dispatcherImpl).newNamedCoroutine
/Users/qlong/go/pkg/mod/go.uber.org/[email protected]/internal/internal_workflow.go:875 +0x314