Paylaşım - [FIX] Rigid 228 _SiegeFortressFinished — Kale Objelerinin Silinmesi ve Deadlock | SroCave - SRO Destek Forumu

Paylaşım [FIX] Rigid 228 _SiegeFortressFinished — Kale Objelerinin Silinmesi ve Deadlock

  • Konbuyu başlatan Konbuyu başlatan Shield-v1
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 9

Shield-v1

Mangyang
Katılım
8 Eki 2026
Mesajlar
6
Tepkime puanı
0
Puanları
1
Rigid 228 Verified Fix #1

Rigid 228 üzerinde kale savaşı bitişlerini incelerken _SiegeFortressFinished prosedüründe önemli bir filtre hatası tespit ettim.

Prosedürün refactor edilen bölümündeki iki DELETE sorgusunda FortressID = @FortressID koşulu bulunmuyor. Bu nedenle bir kalenin savaşı tamamlandığında yalnız o kalenin barikat ve savaş objeleri yerine diğer kalelere ait kayıtlar da silinebiliyor.

Birden fazla GameServer aynı anda kale bitiş işlemini çalıştırdığında sorgular aynı kayıtları kilitlemeye çalıştığı için SQL Server error 1205 deadlock oluşabiliyor. Bu durumda ilgili kale bitiş işlemi geri alınabiliyor ve GameServer dump oluşturabiliyor.

Etkilenen bölüm:

  • Veritabanı: SILKROAD_R_SHARD
  • Prosedür: dbo._SiegeFortressFinished
  • GameServer restartı: Gerekmez

Hata geçici test veritabanında yeniden üretildi:

  • Orijinal prosedürde Kale 1 tamamlandığında Kale 2’nin barikat ve savaş objeleri de silindi.
  • Düzeltilmiş prosedürde yalnız Kale 1 temizlendi; Kale 2’ye ait kayıtlar korundu.
  • Kalenin savunulması ve sahibinin değişmesi yolları ayrı ayrı doğrulandı.
  • Tekrar uygulama ve rollback yolları test edildi.
  • Farklı bir prosedür sürümünde değişiklik yapılmadan işlem durduruldu.

Test sonucu: 9/9 PASS

UYARI: İşleme başlamadan önce mutlaka SILKROAD_R_SHARD veritabanınızın güncel yedeğini alın. Prosedürünüz özel olarak değiştirilmişse aşağıdaki satırları doğrudan uygulamadan önce mevcut sorgularınızla karşılaştırın.

Düzeltme kodlarını görüntülemek için konuyu beğenip kısa bir yorum yazdıktan sonra sayfayı yenileyin.



Düzeltmeyi uygulayan arkadaşlar kullandıkları Rigid sürümünü ve test sonucunu konu altında paylaşırsa farklı database sürümlerini de karşılaştırabiliriz.
 
Etiketler Etiketler
database fix deadlock 1205 fortress war gameserver dump isro-r kalе savaşı procedure fix rigid 228 rigid files siege fortress sql fix _siegefortressfinished

Geri
Üst Alt