{"id":1289,"date":"2012-07-20T09:54:38","date_gmt":"2012-07-20T08:54:38","guid":{"rendered":"http:\/\/soci.hu\/blog\/?p=1289"},"modified":"2012-07-20T10:05:51","modified_gmt":"2012-07-20T09:05:51","slug":"megoldas-a-deadlockos-cikkhez","status":"publish","type":"post","link":"https:\/\/soci.hu\/blog\/index.php\/2012\/07\/20\/megoldas-a-deadlockos-cikkhez\/","title":{"rendered":"Megold\u00e1s a deadlockos cikkhez"},"content":{"rendered":"<p>Heur\u00e9ka! :)<\/p>\n<p><a href=\"http:\/\/soci.hu\/blog\/index.php\/2012\/07\/19\/furcsa-deadlockok\/\">El\u0151zm\u00e9ny<\/a>.<\/p>\n<p>Az el\u0151zm\u00e9nyben l\u00e1that\u00f3 els\u0151 deadlock lenyomata xmlben \u00edgy n\u00e9z ki:<\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n&lt;deadlock-list&gt;\r\n\t&lt;deadlock victim=&quot;process3c3dc8&quot;&gt;\r\n\t\t&lt;process-list&gt;\r\n\t\t\t&lt;process id=&quot;process3c3dc8&quot;\r\n\t\t\t\t\t taskpriority=&quot;0&quot;\r\n\t\t\t\t\t logused=&quot;236&quot;\r\n\t\t\t\t\t waitresource=&quot;KEY: 6:72057594959101952 (8194443284a0)&quot;\r\n\t\t\t\t\t waittime=&quot;8196&quot;\r\n\t\t\t\t\t ownerId=&quot;724347&quot;\r\n\t\t\t\t\t transactionname=&quot;user_transaction&quot;\r\n\t\t\t\t\t lasttranstarted=&quot;2012-07-17T13:30:06.643&quot;\r\n\t\t\t\t\t XDES=&quot;0x9dec3b0&quot;\r\n\t\t\t\t\t lockMode=&quot;U&quot;\r\n\t\t\t\t\t schedulerid=&quot;3&quot;\r\n\t\t\t\t\t kpid=&quot;2744&quot;\r\n\t\t\t\t\t status=&quot;suspended&quot;\r\n\t\t\t\t\t spid=&quot;85&quot;\r\n\t\t\t\t\t sbid=&quot;0&quot;\r\n\t\t\t\t\t ecid=&quot;0&quot;\r\n\t\t\t\t\t priority=&quot;0&quot;\r\n\t\t\t\t\t trancount=&quot;1&quot;\r\n\t\t\t\t\t lastbatchstarted=&quot;2012-07-17T13:30:06.643&quot;\r\n\t\t\t\t\t lastbatchcompleted=&quot;2012-07-17T13:30:06.643&quot;\r\n\t\t\t\t\t clientapp=&quot;.Net SqlClient Data Provider&quot;\r\n\t\t\t\t\t hostname=&quot;AlmaDEVWEB02&quot;\r\n\t\t\t\t\t hostpid=&quot;1312&quot;\r\n\t\t\t\t\t loginname=&quot;BuildAgentUser&quot;\r\n\t\t\t\t\t isolationlevel=&quot;repeatable read (3)&quot;\r\n\t\t\t\t\t xactid=&quot;724347&quot;\r\n\t\t\t\t\t currentdb=&quot;6&quot;\r\n\t\t\t\t\t lockTimeout=&quot;4294967295&quot;\r\n\t\t\t\t\t clientoption1=&quot;673316896&quot;\r\n\t\t\t\t\t clientoption2=&quot;128056&quot;&gt;\r\n\t\t\t\t&lt;executionStack&gt;\r\n\t\t\t\t\t&lt;frame procname=&quot;AlmaDev.dbo.spExecuteTransaction&quot;\r\n\t\t\t\t\t\t   line=&quot;136&quot;\r\n\t\t\t\t\t\t   stmtstart=&quot;7378&quot;\r\n\t\t\t\t\t\t   stmtend=&quot;7554&quot;\r\n\t\t\t\t\t\t   sqlhandle=&quot;0x0300060069e52875f254de0091a000000100000000000000&quot;&gt;\r\n\t\t\t\t\t\tSELECT @toBalance = Balance FROM Account WITH (UPDLOCK) WHERE Id = @toAccountID\r\n\t\t\t\t\t&lt;\/frame&gt;\r\n\t\t\t\t&lt;\/executionStack&gt;\r\n\t\t\t\t&lt;inputbuf&gt;\r\n\t\t\t\t\tProc &#x5B;Database Id = 6 Object Id = 1965614441]\r\n\t\t\t\t&lt;\/inputbuf&gt;\r\n\t\t\t&lt;\/process&gt;\r\n\t\t\t&lt;process id=&quot;processbe41288&quot;\r\n\t\t\t\t\t taskpriority=&quot;0&quot;\r\n\t\t\t\t\t logused=&quot;236&quot;\r\n\t\t\t\t\t waitresource=&quot;KEY: 6:72057594959101952 (8194443284a0)&quot;\r\n\t\t\t\t\t waittime=&quot;2505&quot;\r\n\t\t\t\t\t ownerId=&quot;724314&quot;\r\n\t\t\t\t\t transactionname=&quot;user_transaction&quot;\r\n\t\t\t\t\t lasttranstarted=&quot;2012-07-17T13:30:06.610&quot;\r\n\t\t\t\t\t XDES=&quot;0x9af4e80&quot;\r\n\t\t\t\t\t lockMode=&quot;X&quot;\r\n\t\t\t\t\t schedulerid=&quot;2&quot;\r\n\t\t\t\t\t kpid=&quot;4716&quot;\r\n\t\t\t\t\t status=&quot;suspended&quot;\r\n\t\t\t\t\t spid=&quot;108&quot;\r\n\t\t\t\t\t sbid=&quot;0&quot;\r\n\t\t\t\t\t ecid=&quot;0&quot;\r\n\t\t\t\t\t priority=&quot;0&quot;\r\n\t\t\t\t\t trancount=&quot;2&quot;\r\n\t\t\t\t\t lastbatchstarted=&quot;2012-07-17T13:30:06.610&quot;\r\n\t\t\t\t\t lastbatchcompleted=&quot;2012-07-17T13:30:06.610&quot;\r\n\t\t\t\t\t clientapp=&quot;.Net SqlClient Data Provider&quot;\r\n\t\t\t\t\t hostname=&quot;AlmaDEVWEB02&quot;\r\n\t\t\t\t\t hostpid=&quot;1312&quot;\r\n\t\t\t\t\t loginname=&quot;BuildAgentUser&quot;\r\n\t\t\t\t\t isolationlevel=&quot;repeatable read (3)&quot;\r\n\t\t\t\t\t xactid=&quot;724314&quot;\r\n\t\t\t\t\t currentdb=&quot;6&quot;\r\n\t\t\t\t\t lockTimeout=&quot;4294967295&quot;\r\n\t\t\t\t\t clientoption1=&quot;673316896&quot;\r\n\t\t\t\t\t clientoption2=&quot;128056&quot;&gt;\r\n\t\t\t\t&lt;executionStack&gt;\r\n\t\t\t\t\t&lt;frame procname=&quot;AlmaDev.dbo.spExecuteTransaction&quot;\r\n\t\t\t\t\t\t   line=&quot;138&quot;\r\n\t\t\t\t\t\t   stmtstart=&quot;7556&quot;\r\n\t\t\t\t\t\t   stmtend=&quot;7830&quot;\r\n\t\t\t\t\t\t   sqlhandle=&quot;0x0300060069e52875f254de0091a000000100000000000000&quot;&gt;\r\n\t\t\t\t\t\tUPDATE Account SET\r\n\t\t\t\t\t\tBalance += (@amount - @commissionAmount)\r\n\t\t\t\t\t\tWHERE Id = @toAccountID\r\n\t\t\t\t\t&lt;\/frame&gt;\r\n\t\t\t\t&lt;\/executionStack&gt;\r\n\t\t\t\t&lt;inputbuf&gt;\r\n\t\t\t\t\tProc &#x5B;Database Id = 6 Object Id = 1965614441]\r\n\t\t\t\t&lt;\/inputbuf&gt;\r\n\t\t\t&lt;\/process&gt;\r\n\t\t&lt;\/process-list&gt;\r\n\t\t&lt;resource-list&gt;\r\n\t\t\t&lt;keylock hobtid=&quot;72057594959101952&quot;\r\n\t\t\t\t\t dbid=&quot;6&quot;\r\n\t\t\t\t\t objectname=&quot;AlmaDev.dbo.Account&quot;\r\n\t\t\t\t\t indexname=&quot;PK_Account&quot;\r\n\t\t\t\t\t id=&quot;lockc99fc00&quot;\r\n\t\t\t\t\t mode=&quot;U&quot;\r\n\t\t\t\t\t associatedObjectId=&quot;72057594959101952&quot;&gt;\r\n\t\t\t\t&lt;owner-list&gt;\r\n\t\t\t\t\t&lt;owner id=&quot;processbe41288&quot;\r\n\t\t\t\t\t\t   mode=&quot;U&quot;\/&gt;\r\n\t\t\t\t&lt;\/owner-list&gt;\r\n\t\t\t\t&lt;waiter-list&gt;\r\n\t\t\t\t\t&lt;waiter id=&quot;process3c3dc8&quot;\r\n\t\t\t\t\t\t\tmode=&quot;U&quot;\r\n\t\t\t\t\t\t\trequestType=&quot;convert&quot;\/&gt;\r\n\t\t\t\t&lt;\/waiter-list&gt;\r\n\t\t\t&lt;\/keylock&gt;\r\n\t\t\t&lt;keylock hobtid=&quot;72057594959101952&quot;\r\n\t\t\t\t\t dbid=&quot;6&quot;\r\n\t\t\t\t\t objectname=&quot;AlmaDev.dbo.Account&quot;\r\n\t\t\t\t\t indexname=&quot;PK_Account&quot;\r\n\t\t\t\t\t id=&quot;lockc99fc00&quot;\r\n\t\t\t\t\t mode=&quot;U&quot;\r\n\t\t\t\t\t associatedObjectId=&quot;72057594959101952&quot;&gt;\r\n\t\t\t\t&lt;owner-list&gt;\r\n\t\t\t\t\t&lt;owner id=&quot;process3c3dc8&quot;\r\n\t\t\t\t\t\t   mode=&quot;S&quot;\/&gt;\r\n\t\t\t\t&lt;\/owner-list&gt;\r\n\t\t\t\t&lt;waiter-list&gt;\r\n\t\t\t\t\t&lt;waiter id=&quot;processbe41288&quot;\r\n\t\t\t\t\t\t\tmode=&quot;X&quot;\r\n\t\t\t\t\t\t\trequestType=&quot;convert&quot;\/&gt;\r\n\t\t\t\t&lt;\/waiter-list&gt;\r\n\t\t\t&lt;\/keylock&gt;\r\n\t\t&lt;\/resource-list&gt;\r\n\t&lt;\/deadlock&gt;\r\n&lt;\/deadlock-list&gt;\r\n<\/pre>\n<p>Figyelj\u00fck meg, hogy mindk\u00e9t processz a &#8220;KEY: 6:72057594959101952 (8194443284a0)&#8221; kulcson v\u00e1rakozik, ezen vesztek \u00f6ssze.<\/p>\n<p>Viszont az xmlben nem az van, mint a k\u00e9pen!!!<\/p>\n<p>Az xml v\u00e9ge fel\u00e9 l\u00e1tszik ki-mit ownol. owner-list\/owner elemek:<\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n\t\t&lt;resource-list&gt;\r\n\t\t\t\t&lt;owner-list&gt;\r\n\t\t\t\t\t&lt;owner id=&quot;processbe41288&quot; mode=&quot;U&quot;\/&gt;\r\n\t\t\t\t&lt;\/owner-list&gt;\r\n\t\t\t\t&lt;waiter-list&gt;\r\n\t\t\t\t\t&lt;waiter id=&quot;process3c3dc8&quot; mode=&quot;U&quot; requestType=&quot;convert&quot;\/&gt;\r\n\t\t\t\t&lt;\/waiter-list&gt;\r\n\t\t\t&lt;\/keylock&gt;\r\n\t\t\t\t&lt;owner-list&gt;\r\n\t\t\t\t\t&lt;owner id=&quot;process3c3dc8&quot; mode=&quot;S&quot;\/&gt; &lt;!-- Ez nem U !!! --&gt;\r\n\t\t\t\t&lt;\/owner-list&gt;\r\n\t\t\t\t&lt;waiter-list&gt;\r\n\t\t\t\t\t&lt;waiter id=&quot;processbe41288&quot; mode=&quot;X&quot; requestType=&quot;convert&quot;\/&gt;\r\n\t\t\t\t&lt;\/waiter-list&gt;\r\n\t\t\t&lt;\/keylock&gt;\r\n\t\t&lt;\/resource-list&gt;\r\n<\/pre>\n<p>A m\u00e1sodik processz nem U lockot tart az er\u0151forr\u00e1son, hanem S-t, Shared lockot! De mi\u00e9rt U l\u00e1tszik a k\u00e9pen? A bugos kutya \u00e9letbe!<br \/>\n\u00cdgy m\u00e1r krist\u00e1lytiszta a dolog. Azt nem \u00e9rtettem, hogy tudott kiadni az SQL Server k\u00e9t U lockot ugyanarra az er\u0151forr\u00e1sra. Sehogy, az elm\u00e9let j\u00f3. Csak az SSMS bugos.<\/p>\n<p>Tehet, mit l\u00e1tunk itt tk\u00e9ppen? Az egyik processz tart U lockot a k\u00f6z\u00f6s er\u0151forr\u00e1sra (owner id=&#8221;processbe41288&#8243; mode=&#8221;U&#8221;), a m\u00e1sik pedig egy Shared lockot (owner id=&#8221;process3c3dc8&#8243; mode=&#8221;S&#8221;). Mi\u00e9rt shared az egyik? Mivel valamelyik kor\u00e1bbi sorban (ez nem l\u00e1tszik az xmlb\u0151l, m\u00e1r lefutott) lemaradt a with(updlock) a select ut\u00e1ni t\u00e1bla m\u00f6g\u00fcl.<br \/>\nEz az alap\u00e1ll\u00e1s. Azt\u00e1n az egyik Update lockra akar konvert\u00e1lni (waiter id=&#8221;process3c3dc8&#8243; mode=&#8221;U&#8221; requestType=&#8221;convert&#8221;, ez nem teljesen vil\u00e1gos mi\u00e9rt, mivel eleve az van neki. A m\u00e1sik Sharedr\u0151l eXclusive-ra akar konvert\u00e1lni. Ez m\u00e1r a nem megy, mivel az X nem kompatibilis az U-val, \u00edgy az nem adhat\u00f3 ki, a m\u00e1sodik processznek v\u00e1rnia kell, de mivel az els\u0151 \u00e1ltal k\u00e9rt U sem a U-val, \u00edgy \u00f6sszeakadnak.<br \/>\nM\u00edg most sem teljesen tiszta minden, az XML-ben sem l\u00e1tni az \u00f6sszes r\u00e9szletet, pl. mi\u00e9rt van az U-U konverzi\u00f3, de a megold\u00e1s viszonylag 100%-ra a k\u00f6vetkez\u0151: \u00e1t kell n\u00e9zni a beteg t\u00e1rolt elj\u00e1r\u00e1st, \u00e9s meg kell keresni benne olyan select-et, amely az Account t\u00e1bl\u00e1t nem updlockkal \u00e9rik el. Ezekre fel kell rakni az updlockot, \u00e9s val\u00f3sz\u00edn\u0171leg kiesik a deadlock.<br \/>\nTanuls\u00e1g: nem el\u00e9g a deadlock graph grafikus n\u00e9zet\u00e9t megn\u00e9zni, bele kell kukkantani az xml-be is, ha valami nem logikus.<br \/>\nEzt tudva m\u00e1r m\u00e1s is tal\u00e1lkozott ezzel: <a href=\"http:\/\/rusanu.com\/2010\/05\/12\/the-puzzle-of-u-locks-in-deadlock-graphs\/\">http:\/\/rusanu.com\/2010\/05\/12\/the-puzzle-of-u-locks-in-deadlock-graphs\/<\/a><br \/>\nSz\u00f3val m\u00e9g nem teljesen tiszta minden, de az IT m\u00e1r csak ilyen, f\u00e9linform\u00e1ci\u00f3k alapj\u00e1n is tudni kell hib\u00e1t keresni.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Heur\u00e9ka! :) El\u0151zm\u00e9ny. Az el\u0151zm\u00e9nyben l\u00e1that\u00f3 els\u0151 deadlock lenyomata xmlben \u00edgy n\u00e9z ki: &lt;deadlock-list&gt; &lt;deadlock victim=&quot;process3c3dc8&quot;&gt; &lt;process-list&gt; &lt;process id=&quot;process3c3dc8&quot; taskpriority=&quot;0&quot; logused=&quot;236&quot; waitresource=&quot;KEY:&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,4,30,21,58,77,78],"tags":[],"class_list":["post-1289","post","type-post","status-publish","format-standard","hentry","category-adatbazisok","category-szakmai-elet","category-sql-server","category-sql-server-2005","category-sql-server-2008","category-sql-server-2008-r2","category-sql-server-2012"],"_links":{"self":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1289","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=1289"}],"version-history":[{"count":6,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1289\/revisions"}],"predecessor-version":[{"id":1293,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1289\/revisions\/1293"}],"wp:attachment":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=1289"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=1289"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=1289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}