We had some Deadlock alerts raised today - on further investigation I have found that it seems to all be the same SPID and related to parallelism events.
How has this happened? I didn't think deadlocks could occur within the context of one SPID?
I've uploaded the Deadlock XML to PasteBin
<deadlock>
<victim-list />
<process-list>
<process id="process6560c1868" taskpriority="0" logused="10000" waittime="1058" schedulerid="2" kpid="12756" status="suspended" spid="888" sbid="0" ecid="15" priority="0" trancount="0" lastbatchstarted="2019-05-23T09:54:38.200" lastbatchcompleted="2019-05-23T09:54:38.197" lastattention="1900-01-01T00:00:00.197" clientapp="CODA(pid=6136, chan=1)" hostname="LDS-LCODA01" hostpid="6136" isolationlevel="read uncommitted (1)" xactid="1564224003" currentdb="14" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056" databaseName="Codalive">
<executionStack>
<frame procname="adhoc" line="1" stmtstart="84" sqlhandle="0x0200000085cbf91b5b621821aa8f4e533549f4890d6244c70000000000000000000000000000000000000000">
select
A.cmpcode, A.cmpcode_cs, A.doccode, A.doccode_cs, A.docnum, A.docnum_cs, A.status, A.status_cs, A.yr, A.yr_cs, A.period, A.period_cs, A.curdoc, A.curdoc_cs, A.docdate, A.inpdate, A.inptime, A.flags,
B.cmpcode, B.doccode, B.docnum, B.doclinenum, B.tstamp, B.moddate, B.usrname, B.el1, B.el2, B.el3, B.el4, B.el5, B.el6, B.el7, B.el8, B.duedate, B.valdate, B.valuehome, B.valuehome_dp, B.valuedoc, B.valuedoc_dp, B.docrate, B.valuedual, B.valuedual_dp, B.dualrate, B.statuser, B.statuserint, B.statrec, B.statrecint, B.statpay, B.statpayint, B.descr, B.ref1, B.ref2, B.ref3, B.linetype, B.deb_cred_ind, B.taxlinecode, B.doctaxturn, B.doctaxturn_dp, B.hometaxturn, B.hometaxturn_dp, B.docsumtax, B.docsumtax_dp, B.homesumtax, B.homesumtax_dp, B.custsupp, B.paydate, B.statrem, B.remdate, B.severity, B.lettersev, B.matchlevel, B.flags, B.ref4, B.ref5, B.ref6, B.temporaryid, B.docflags, B.dualflags, B.euvatcode, B.ival,
C.cmpcode, C.doccode, C.docnum, C.doclinenum, C.el1_curcode, C.el1_value, C.el1_value_dp, C.el1_ </frame>
<frame procname="unknown" line="1" sqlhandle="0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000">
unknown </frame>
</executionStack>
<inputbuf>
(@P1 varchar(4),@P2 smallint,@P3 smallint)select
A.cmpcode, A.cmpcode_cs, A.doccode, A.doccode_cs, A.docnum, A.docnum_cs, A.status, A.status_cs, A.yr, A.yr_cs, A.period, A.period_cs, A.curdoc, A.curdoc_cs, A.docdate, A.inpdate, A.inptime, A.flags,
B.cmpcode, B.doccode, B.docnum, B.doclinenum, B.tstamp, B.moddate, B.usrname, B.el1, B.el2, B.el3, B.el4, B.el5, B.el6, B.el7, B.el8, B.duedate, B.valdate, B.valuehome, B.valuehome_dp, B.valuedoc, B.valuedoc_dp, B.docrate, B.valuedual, B.valuedual_dp, B.dualrate, B.statuser, B.statuserint, B.statrec, B.statrecint, B.statpay, B.statpayint, B.descr, B.ref1, B.ref2, B.ref3, B.linetype, B.deb_cred_ind, B.taxlinecode, B.doctaxturn, B.doctaxturn_dp, B.hometaxturn, B.hometaxturn_dp, B.docsumtax, B.docsumtax_dp, B.homesumtax, B.homesumtax_dp, B.custsupp, B.paydate, B.statrem, B.remdate, B.severity, B.lettersev, B.matchlevel, B.flags, B.ref4, B.ref5, B.ref6, B.temporaryid, B.docflags, B.dualflags, B.euvatcode, B.ival,
C.cmpcode, C.doccode, C.docnum, C.doclinenum, C.el1_c </inputbuf>
</process>
<process id="process105d194188" taskpriority="0" logused="10000" waittime="935" schedulerid="3" kpid="27616" status="suspended" spid="888" sbid="0" ecid="12" priority="0" trancount="0" lastbatchstarted="2019-05-23T09:54:38.200" lastbatchcompleted="2019-05-23T09:54:38.197" lastattention="1900-01-01T00:00:00.197" clientapp="CODA(pid=6136, chan=1)" hostname="LDS-LCODA01" hostpid="6136" isolationlevel="read uncommitted (1)" xactid="1564224003" currentdb="14" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056" databaseName="Codalive">
<executionStack>
<frame procname="adhoc" line="1" stmtstart="84" sqlhandle="0x0200000085cbf91b5b621821aa8f4e533549f4890d6244c70000000000000000000000000000000000000000">
select
A.cmpcode, A.cmpcode_cs, A.doccode, A.doccode_cs, A.docnum, A.docnum_cs, A.status, A.status_cs, A.yr, A.yr_cs, A.period, A.period_cs, A.curdoc, A.curdoc_cs, A.docdate, A.inpdate, A.inptime, A.flags,
B.cmpcode, B.doccode, B.docnum, B.doclinenum, B.tstamp, B.moddate, B.usrname, B.el1, B.el2, B.el3, B.el4, B.el5, B.el6, B.el7, B.el8, B.duedate, B.valdate, B.valuehome, B.valuehome_dp, B.valuedoc, B.valuedoc_dp, B.docrate, B.valuedual, B.valuedual_dp, B.dualrate, B.statuser, B.statuserint, B.statrec, B.statrecint, B.statpay, B.statpayint, B.descr, B.ref1, B.ref2, B.ref3, B.linetype, B.deb_cred_ind, B.taxlinecode, B.doctaxturn, B.doctaxturn_dp, B.hometaxturn, B.hometaxturn_dp, B.docsumtax, B.docsumtax_dp, B.homesumtax, B.homesumtax_dp, B.custsupp, B.paydate, B.statrem, B.remdate, B.severity, B.lettersev, B.matchlevel, B.flags, B.ref4, B.ref5, B.ref6, B.temporaryid, B.docflags, B.dualflags, B.euvatcode, B.ival,
C.cmpcode, C.doccode, C.docnum, C.doclinenum, C.el1_curcode, C.el1_value, C.el1_value_dp, C.el1_ </frame>
<frame procname="unknown" line="1" sqlhandle="0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000">
unknown </frame>
</executionStack>
<inputbuf>
(@P1 varchar(4),@P2 smallint,@P3 smallint)select
A.cmpcode, A.cmpcode_cs, A.doccode, A.doccode_cs, A.docnum, A.docnum_cs, A.status, A.status_cs, A.yr, A.yr_cs, A.period, A.period_cs, A.curdoc, A.curdoc_cs, A.docdate, A.inpdate, A.inptime, A.flags,
B.cmpcode, B.doccode, B.docnum, B.doclinenum, B.tstamp, B.moddate, B.usrname, B.el1, B.el2, B.el3, B.el4, B.el5, B.el6, B.el7, B.el8, B.duedate, B.valdate, B.valuehome, B.valuehome_dp, B.valuedoc, B.valuedoc_dp, B.docrate, B.valuedual, B.valuedual_dp, B.dualrate, B.statuser, B.statuserint, B.statrec, B.statrecint, B.statpay, B.statpayint, B.descr, B.ref1, B.ref2, B.ref3, B.linetype, B.deb_cred_ind, B.taxlinecode, B.doctaxturn, B.doctaxturn_dp, B.hometaxturn, B.hometaxturn_dp, B.docsumtax, B.docsumtax_dp, B.homesumtax, B.homesumtax_dp, B.custsupp, B.paydate, B.statrem, B.remdate, B.severity, B.lettersev, B.matchlevel, B.flags, B.ref4, B.ref5, B.ref6, B.temporaryid, B.docflags, B.dualflags, B.euvatcode, B.ival,
C.cmpcode, C.doccode, C.docnum, C.doclinenum, C.el1_c </inputbuf>
</process>
<process id="process17556b868" taskpriority="0" logused="10000" waittime="935" schedulerid="3" kpid="30184" status="suspended" spid="888" sbid="0" ecid="2" priority="0" trancount="0" lastbatchstarted="2019-05-23T09:54:38.200" lastbatchcompleted="2019-05-23T09:54:38.197" lastattention="1900-01-01T00:00:00.197" clientapp="CODA(pid=6136, chan=1)" hostname="LDS-LCODA01" hostpid="6136" isolationlevel="read uncommitted (1)" xactid="1564224003" currentdb="14" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056" databaseName="Codalive">
<executionStack>
<frame procname="adhoc" line="1" stmtstart="84" sqlhandle="0x0200000085cbf91b5b621821aa8f4e533549f4890d6244c70000000000000000000000000000000000000000">
select
A.cmpcode, A.cmpcode_cs, A.doccode, A.doccode_cs, A.docnum, A.docnum_cs, A.status, A.status_cs, A.yr, A.yr_cs, A.period, A.period_cs, A.curdoc, A.curdoc_cs, A.docdate, A.inpdate, A.inptime, A.flags,
B.cmpcode, B.doccode, B.docnum, B.doclinenum, B.tstamp, B.moddate, B.usrname, B.el1, B.el2, B.el3, B.el4, B.el5, B.el6, B.el7, B.el8, B.duedate, B.valdate, B.valuehome, B.valuehome_dp, B.valuedoc, B.valuedoc_dp, B.docrate, B.valuedual, B.valuedual_dp, B.dualrate, B.statuser, B.statuserint, B.statrec, B.statrecint, B.statpay, B.statpayint, B.descr, B.ref1, B.ref2, B.ref3, B.linetype, B.deb_cred_ind, B.taxlinecode, B.doctaxturn, B.doctaxturn_dp, B.hometaxturn, B.hometaxturn_dp, B.docsumtax, B.docsumtax_dp, B.homesumtax, B.homesumtax_dp, B.custsupp, B.paydate, B.statrem, B.remdate, B.severity, B.lettersev, B.matchlevel, B.flags, B.ref4, B.ref5, B.ref6, B.temporaryid, B.docflags, B.dualflags, B.euvatcode, B.ival,
C.cmpcode, C.doccode, C.docnum, C.doclinenum, C.el1_curcode, C.el1_value, C.el1_value_dp, C.el1_ </frame>
<frame procname="unknown" line="1" sqlhandle="0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000">
unknown </frame>
</executionStack>
<inputbuf>
(@P1 varchar(4),@P2 smallint,@P3 smallint)select
A.cmpcode, A.cmpcode_cs, A.doccode, A.doccode_cs, A.docnum, A.docnum_cs, A.status, A.status_cs, A.yr, A.yr_cs, A.period, A.period_cs, A.curdoc, A.curdoc_cs, A.docdate, A.inpdate, A.inptime, A.flags,
B.cmpcode, B.doccode, B.docnum, B.doclinenum, B.tstamp, B.moddate, B.usrname, B.el1, B.el2, B.el3, B.el4, B.el5, B.el6, B.el7, B.el8, B.duedate, B.valdate, B.valuehome, B.valuehome_dp, B.valuedoc, B.valuedoc_dp, B.docrate, B.valuedual, B.valuedual_dp, B.dualrate, B.statuser, B.statuserint, B.statrec, B.statrecint, B.statpay, B.statpayint, B.descr, B.ref1, B.ref2, B.ref3, B.linetype, B.deb_cred_ind, B.taxlinecode, B.doctaxturn, B.doctaxturn_dp, B.hometaxturn, B.hometaxturn_dp, B.docsumtax, B.docsumtax_dp, B.homesumtax, B.homesumtax_dp, B.custsupp, B.paydate, B.statrem, B.remdate, B.severity, B.lettersev, B.matchlevel, B.flags, B.ref4, B.ref5, B.ref6, B.temporaryid, B.docflags, B.dualflags, B.euvatcode, B.ival,
C.cmpcode, C.doccode, C.docnum, C.doclinenum, C.el1_c </inputbuf>
</process>
<process id="process6560f3868" taskpriority="0" logused="10000" waittime="939" schedulerid="1" kpid="28396" status="suspended" spid="888" sbid="0" ecid="3" priority="0" trancount="0" lastbatchstarted="2019-05-23T09:54:38.200" lastbatchcompleted="2019-05-23T09:54:38.197" lastattention="1900-01-01T00:00:00.197" clientapp="CODA(pid=6136, chan=1)" hostname="LDS-LCODA01" hostpid="6136" isolationlevel="read uncommitted (1)" xactid="1564224003" currentdb="14" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056" databaseName="Codalive">
<executionStack>
<frame procname="adhoc" line="1" stmtstart="84" sqlhandle="0x0200000085cbf91b5b621821aa8f4e533549f4890d6244c70000000000000000000000000000000000000000">
select
A.cmpcode, A.cmpcode_cs, A.doccode, A.doccode_cs, A.docnum, A.docnum_cs, A.status, A.status_cs, A.yr, A.yr_cs, A.period, A.period_cs, A.curdoc, A.curdoc_cs, A.docdate, A.inpdate, A.inptime, A.flags,
B.cmpcode, B.doccode, B.docnum, B.doclinenum, B.tstamp, B.moddate, B.usrname, B.el1, B.el2, B.el3, B.el4, B.el5, B.el6, B.el7, B.el8, B.duedate, B.valdate, B.valuehome, B.valuehome_dp, B.valuedoc, B.valuedoc_dp, B.docrate, B.valuedual, B.valuedual_dp, B.dualrate, B.statuser, B.statuserint, B.statrec, B.statrecint, B.statpay, B.statpayint, B.descr, B.ref1, B.ref2, B.ref3, B.linetype, B.deb_cred_ind, B.taxlinecode, B.doctaxturn, B.doctaxturn_dp, B.hometaxturn, B.hometaxturn_dp, B.docsumtax, B.docsumtax_dp, B.homesumtax, B.homesumtax_dp, B.custsupp, B.paydate, B.statrem, B.remdate, B.severity, B.lettersev, B.matchlevel, B.flags, B.ref4, B.ref5, B.ref6, B.temporaryid, B.docflags, B.dualflags, B.euvatcode, B.ival,
C.cmpcode, C.doccode, C.docnum, C.doclinenum, C.el1_curcode, C.el1_value, C.el1_value_dp, C.el1_ </frame>
<frame procname="unknown" line="1" sqlhandle="0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000">
unknown </frame>
</executionStack>
<inputbuf>
(@P1 varchar(4),@P2 smallint,@P3 smallint)select
A.cmpcode, A.cmpcode_cs, A.doccode, A.doccode_cs, A.docnum, A.docnum_cs, A.status, A.status_cs, A.yr, A.yr_cs, A.period, A.period_cs, A.curdoc, A.curdoc_cs, A.docdate, A.inpdate, A.inptime, A.flags,
B.cmpcode, B.doccode, B.docnum, B.doclinenum, B.tstamp, B.moddate, B.usrname, B.el1, B.el2, B.el3, B.el4, B.el5, B.el6, B.el7, B.el8, B.duedate, B.valdate, B.valuehome, B.valuehome_dp, B.valuedoc, B.valuedoc_dp, B.docrate, B.valuedual, B.valuedual_dp, B.dualrate, B.statuser, B.statuserint, B.statrec, B.statrecint, B.statpay, B.statpayint, B.descr, B.ref1, B.ref2, B.ref3, B.linetype, B.deb_cred_ind, B.taxlinecode, B.doctaxturn, B.doctaxturn_dp, B.hometaxturn, B.hometaxturn_dp, B.docsumtax, B.docsumtax_dp, B.homesumtax, B.homesumtax_dp, B.custsupp, B.paydate, B.statrem, B.remdate, B.severity, B.lettersev, B.matchlevel, B.flags, B.ref4, B.ref5, B.ref6, B.temporaryid, B.docflags, B.dualflags, B.euvatcode, B.ival,
C.cmpcode, C.doccode, C.docnum, C.doclinenum, C.el1_c </inputbuf>
</process>
</process-list>
<resource-list>
<exchangeEvent id="Pipe55ae469a0" WaitType="e_waitPipeNewRow" nodeId="13">
<owner-list>
<owner id="process17556b868" />
</owner-list>
<waiter-list>
<waiter id="process6560c1868" />
</waiter-list>
</exchangeEvent>
<exchangeEvent id="Pipe1f1358fb0" WaitType="e_waitPipeNewRow" nodeId="10">
<owner-list>
<owner id="process6560f3868" />
</owner-list>
<waiter-list>
<waiter id="process105d194188" />
</waiter-list>
</exchangeEvent>
<exchangeEvent id="Pipe1f1359bb0" WaitType="e_waitPipeGetRow" nodeId="10">
<owner-list>
<owner id="process105d194188" />
</owner-list>
<waiter-list>
<waiter id="process17556b868" />
</waiter-list>
</exchangeEvent>
<exchangeEvent id="Pipe5232db6a0" WaitType="e_waitPipeGetRow" nodeId="13">
<owner-list>
<owner id="process6560c1868" />
</owner-list>
<waiter-list>
<waiter id="process6560f3868" />
</waiter-list>
</exchangeEvent>
</resource-list>
</deadlock>