21 Ağustos 2013 Çarşamba

Transaction (Process ID ...) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.



Bir varmııış bir yokmuuş.. Sürekli veri çeken, veri yazan, listeleyen bir ajax wcf servis varmış.. Gel verii git verii, yorulmuş bir gün vee "Transaction (Process ID ...) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction." hatasına düşer olmuuş.. :P

Sonra süper kahraman Mono çıkagelmiş vee servisini bu zulden kurtarmak için başlamış çalışmalara.. Çalışınca da kazanmış haliylee :) Burda da masal bitmiiiş..

Tüm postu masallaştırabilme kabiliyetimden şüphem yok ama işte yine o malum üşengeçlik :P

Hikaye anlaşılmış olmalı, sorunumuz transactionların hızlı hızlı çalışırken çakışması.. :) Elbette derinlemesine manasını bilmiyorum ama tahminimce ve internetten okuduklarımla böyle olduğunu tahmin ettim. Böyle de zekalı bir insanım :P

Neyse naçizane bulduğum çözüme geçeyim.. Çözüme kullandığım transactionlara bir ayar nakşederek ulaştığımmı zannediyorum. O ayarı yaptığımdan beri o hatayı almadım ama umarım mahcup olmam :P

Çözümü şurada buldum;
http://forums.asp.net/post/4141266.aspx

Orada ReadCommitted yazmış IsolationLevel a, ama ben onu ReadUncommitted olarak kullandım.

Çünkü, Aralarında bi fark vardı;

ReadUncommitted de, data transaction boyunca okunup düzenlenebiliyor.  (Volatile data can be read and modified during the transaction.)
ReadCommitted de ise data transaction boyunca okunamıyor, ancak düzenlenebiliyor. (Volatile data cannot be read during the transaction, but can be modified.)
ingilizcelerini yazayım da havam olsun..

O farklan çok gözel oldu..
(ya ben bu adamın sözlerini kullanıp duruyorum kaynak belirtmeden ama ilerde başıma dert olur mu bilemedim? :P )


TransactionOptions transOptions = new TransactionOptions();
transOptions.IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted;
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew, transOptions))
{
 ...
}

Gökten 3 chat penceresi düşmüüüş, biri osmanın, biri benim, biri de ayşenin başına :)
Ama sanırım tek başına birşey düşen bu 3 şahıs değil.. Asıl malum şahsın başına da osman, ayşe ve ben elmalarla beraber düşmüşüz :P ( O kendini biliyor sayın cinlerim herşeyi de merak etmeyin :) )

Hiç yorum yok:

Yorum Gönder