Ana içeriğe geç
Bulut & Altyapı

celld deterministik simülasyon testiyle karmaşık yarış koşullarını çözdü

Öne çıkanlar

  • celld, üretim kodunu harici simülatör kontrolünde çalıştırarak olay sıralarını deterministik biçimde test ediyor.
  • Simülatör, alarm temizlik görevlerinin gecikmesiyle ortaya çıkan ve hücrelerin uyanmasını engelleyen bir yarış koşulunu yakaladı.
  • Nesne depolamadaki uyandırma kayıtları paylaşımlı yapıdan çıkarılıp her alarm için bağımsız hale getirildi.
  • Belirlenen hata sırası, tohum değeri kullanılarak gerileme testine dönüştürüldü.

Cloudflare Workers ve Durable Objects uygulamalarını yerel sunucularda çalıştırmayı sağlayan dağıtık çalışma ortamı celld, sistem güvenilirliğini artırmak için deterministik simülasyon testi (DST) yöntemini benimsedi. Yalnızca S3 uyumlu bir nesne depolama bağımlılığıyla çalışan platform, dağıtık sistemlerde geciken mesajlar, başarısız yazma işlemleri ve yeniden başlatmalar nedeniyle ortaya çıkan hataları yakalamak için üretim kodunu kontrollü bir simülatör ortamında çalıştırıyor.

Simülatör, asenkron görevlerin çalışma zamanını, nesne depolama yanıtlarını ve zamanlayıcı adımlarını rastgele tohum değerleriyle yöneterek farklı olay sıralamalarını denetliyor. Bu yapı sayesinde geliştiriciler, hücre alarmlarının yeniden etkinleştirilmesinde nesne depolama temizlik görevlerinin gecikmesiyle ortaya çıkan kritik bir yarış koşulunu tespit etti. İptal edilen alarmın temizlik işlemi ertelendiğinde, yeni kurulan alarm için gereken uyandırma kaydının yanlışlıkla silindiği belirlendi.

Ekip, deterministik tohum değerini kullanarak hatayı birebir yeniden üretti ve mimari değişikliğe gitti. Her alarm için nesne depolamada ayrı bir uyandırma girdisi oluşturacak şekilde sistem yeniden tasarlandı ve sorunlu senaryo kalıcı bir gerileme testine dönüştürüldü. Simülatör henüz genel depoya eklenmemiş olsa da ekip, depolama kesintileri ve düğüm yeniden başlatmaları gibi daha karmaşık hata senaryolarını test etmeyi sürdürüyor.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.