Closed cgillum closed 3 years ago
It appears that fanning out to a large number of concurrent sub-orchestrations results in a high-frequency of SQL deadlocks. Here is the deadlock graph of one such example:
<deadlock> <victim-list> <victimProcess id="process2173a075468" /> </victim-list> <process-list> <process id="process2173a075468" taskpriority="0" logused="7792" waitresource="KEY: 5:72057594044547072 (d49f706572c3)" waittime="5763" ownerId="1101274" transactionname="user_transaction" lasttranstarted="2021-09-27T14:42:30.693" XDES="0x2173abe8428" lockMode="S" schedulerid="5" kpid="26996" status="suspended" spid="69" sbid="0" ecid="0" priority="0" trancount="2" lastbatchstarted="2021-09-27T14:42:30.693" lastbatchcompleted="2021-09-27T14:42:30.687" lastattention="1900-01-01T00:00:00.687" clientapp="default" hostpid="22068" loginname="testlogin_ParallelSubOrchestrations_2021092709423010" isolationlevel="read committed (2)" xactid="1101274" currentdb="5" currentdbname="DurableDB" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056"> <executionStack> <frame procname="DurableDB.dt._CheckpointOrchestration" line="194" stmtstart="15508" stmtend="16444" sqlhandle="0x03000500888ea41e28d30901a3ad000001000000000000000000000000000000000000000000000000000000"> INSERT INTO NewEvents ( [TaskHub], [InstanceID], [ExecutionID], [EventType], [Name], [RuntimeStatus], [VisibleTime], [TaskID], [PayloadID] ) SELECT @TaskHub, [InstanceID], [ExecutionID], [EventType], [Name], [RuntimeStatus], [VisibleTime], [TaskID], [PayloadID] FROM @NewOrchestrationEvent </frame> </executionStack> <inputbuf> Proc [Database Id = 5 Object Id = 514100872] </inputbuf> </process> <process id="process2172628c8c8" taskpriority="0" logused="30084" waitresource="KEY: 5:72057594044547072 (9f766baad1a1)" waittime="5762" ownerId="1101296" transactionname="user_transaction" lasttranstarted="2021-09-27T14:42:30.693" XDES="0x217261b0428" lockMode="S" schedulerid="6" kpid="11848" status="suspended" spid="65" sbid="0" ecid="0" priority="0" trancount="2" lastbatchstarted="2021-09-27T14:42:30.693" lastbatchcompleted="2021-09-27T14:42:30.687" lastattention="1900-01-01T00:00:00.687" clientapp="default" hostpid="22068" loginname="testlogin_ParallelSubOrchestrations_2021092709423010" isolationlevel="read committed (2)" xactid="1101296" currentdb="5" currentdbname="DurableDB" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056"> <executionStack> <frame procname="DurableDB.dt._CheckpointOrchestration" line="194" stmtstart="15508" stmtend="16444" sqlhandle="0x03000500888ea41e28d30901a3ad000001000000000000000000000000000000000000000000000000000000"> INSERT INTO NewEvents ( [TaskHub], [InstanceID], [ExecutionID], [EventType], [Name], [RuntimeStatus], [VisibleTime], [TaskID], [PayloadID] ) SELECT @TaskHub, [InstanceID], [ExecutionID], [EventType], [Name], [RuntimeStatus], [VisibleTime], [TaskID], [PayloadID] FROM @NewOrchestrationEvent </frame> </executionStack> <inputbuf> Proc [Database Id = 5 Object Id = 514100872] </inputbuf> </process> </process-list> <resource-list> <keylock hobtid="72057594044547072" dbid="5" objectname="DurableDB.dt.Payloads" indexname="PK_Payloads" id="lock21734a1d000" mode="X" associatedObjectId="72057594044547072"> <owner-list> <owner id="process2172628c8c8" mode="X" /> </owner-list> <waiter-list> <waiter id="process2173a075468" mode="S" requestType="wait" /> </waiter-list> </keylock> <keylock hobtid="72057594044547072" dbid="5" objectname="DurableDB.dt.Payloads" indexname="PK_Payloads" id="lock2173a673580" mode="X" associatedObjectId="72057594044547072"> <owner-list> <owner id="process2173a075468" mode="X" /> </owner-list> <waiter-list> <waiter id="process2172628c8c8" mode="S" requestType="wait" /> </waiter-list> </keylock> </resource-list> </deadlock>
I want to know when the 0.10.1-beta version will be available in nuget package ? thank you.
Apologies for the delay! The nuget packages are now published.
Release notes
It appears that fanning out to a large number of concurrent sub-orchestrations results in a high-frequency of SQL deadlocks. Here is the deadlock graph of one such example: