İçeriğe geç

CPalius CMF 2.2.18

Yayın: 2026-09-25 · Kanal: kararlı · Kritik: evet

2.2.11'den 2.2.16'ya kadar, derlenmiş container'ın güvensiz şekilde temizlenip yeniden inşa edilmesinden kaynaklanan bir çökme kovalandı — hepsi CoreUpdater/CacheRebuildManager'ın güncelleme hattının içindeydi. Bu sürüm, o sürümlerin hiçbirinin dokunmadığı bir yerde aynı sınıf hatayı düzeltiyor: AACP'nin kendi modül yönetimi ekranından bir modülü silmek veya devre dışı bırakmak.

Asıl sorun neydi

ModuleActivator::clearCache() hiçbir zaman CacheRebuildManager'ı kullanmadı. Kendi başına senkron bir bin/console cache:clear --no-warmup alt süreci çalıştırıyordu ve ardından container'ı bilerek inşa edilmemiş bırakıyordu — "bir sonraki gerçek istek onu kritik yoldan uzakta, tembel şekilde ısıtır" mantığıyla. O "bir sonraki istek" hiçbir zaman rastgele bir ziyaretçi değildi — bir modülü aktive etmek, devre dışı bırakmak ve silmek, hepsi doğrudan AACP'ye geri yönlendiriyor, yani bu boşluğa denk gelmesi garanti olan hep aynı yöneticinin kendi bir sonraki tıklamasıydı; tek bir HTTP isteğinin zaman/bellek bütçesine sıkıştırılmış satır içi bir container derlemesinin bedelini ödemek zorunda kalıyordu — tam olarak CacheRebuildManager'ın önlemek için var olduğu çökme türü.

Bir modülü silmek bunu kendi şekliyle daha da kötüleştirdi: modülün dosyaları hiçbir cache temizliği olmadan, hemen, istek içinde senkron olarak diskten kaldırılıyordu. O anda hâlâ sunulmakta olan container — modülün dosyaları hâlâ varken derlenmişti — o modülün şablon dizinini Twig yükleyicisine düz metin bir yol olarak gömülü hâlde taşıyor. Twig, yükleyicisi her kurulduğunda bir yolun var olduğunu doğruluyor, sadece derleme zamanında değil — yani "dosyalar gitti" ile "container yeniden inşa edildi" arasındaki boşluktaki HER istek Twig\Error\LoaderError fırlatıyordu, sadece yarışa denk gelen şanssız bir istek değil.

Ne düzeldi

ModuleActivator::clearCache() artık CacheRebuildManager::clearSymfonyCache()'i çağırıyor — uygulamadaki her diğer cache temizleme eyleminin zaten kullandığı, ertelenmiş, arka planda yeniden inşa eden aynı yol. Bir modülü silmek artık o yeniden inşa gerçekten bitene kadar modülün dosyalarını kaldırmıyor — kaldırma işlemi ikinci, ertelenmiş bir adım olarak zamanlanıyor, böylece sunulmakta olan container'da artık diskte var olmayan bir şablon yoluna asla rastlanmıyor.

Yükseltme

Şema değişikliği yok. Elle bir işlem gerekmiyor.

Son güncelleme: 13.10.2026