Doküman menüsü

Sürüm 3.0.0

Duraklatma ve Durdurma

Çalışan bir görevi duraklatma dosyasıyla bekletin ve bir sinyalle yığın sınırında kontrollü olarak durdurun.

Gözetçi Dosyasıyla Duraklatma

processing:
  sentinel_file: /var/run/goarchive/pause.flag

GoArchive, her yığından önce ve kurtarma günlüğünün okunan her bloğundan/sayfasından (recovery page) önce bu dosyanın varlığını kontrol eder. Dosya mevcut olduğu sürece çalıştırma duraklatılır; GoArchive her saniye yeniden kontrol eder ve yaklaşık her 30 saniyede bir günlüğe hatırlatma yazar. Devam etmek için dosyayı silin. Yalnızca dosyanın varlığı dikkate alınır; içeriği yok sayılır. Varsayılan değer olan boş bir sentinel_file, duraklatma özelliğini devre dışı bırakır.

touch /var/run/goarchive/pause.flag   # duraklatın, örneğin zorlanan bir replikayı rahatlatmak için
rm /var/run/goarchive/pause.flag      # devam ettirin
  • Duraklatılan bir çalıştırma kilitlerini korur. Duraklatma süresince aynı görevin ikinci bir çalıştırması “zaten çalışıyor” gerekçesiyle reddedilir; tabloları çakışan diğer çalıştırmalar da reddedilir.
  • Kontrol edilemeyen bir yol (örneğin bulunduğu dizindeki bir yetki hatası nedeniyle) dosya yokmuş gibi değerlendirilir: Çalıştırma günlüğe bir uyarı yazar ve duraklamaz.
  • Sinyaller çalışmaya devam eder: İlk Ctrl-C veya SIGTERM duraklatmayı sona erdirir ve çalıştırmayı durdurur; ikinci bir sinyal ise çalıştırmayı anında iptal eder.
  • Tek dosya, birden çok görev: Aynı sentinel_file yolunu paylaşan görevler birlikte duraklatılır.

Sinyalle Durdurma

İlk SIGTERM veya SIGINT sinyali, o an işlenmekte olan yığının veya kurtarma sayfasının tamamlanmasına izin verir; ardından çalıştırmayı 3 çıkış koduyla durdurur. --progress ile çalıştırıldığında kapanış bloğu bu durumu belirtir ve çalıştırmanın günlüğü Run stopped … kaydıyla sona erer. Aynı görevin bir sonraki çalıştırması, önce durdurulan çalıştırmanın günlüğe kaydettiği işleri bitirir; ardından where aralığının başından devam eder.

  • Replikasyon bekletmesi sırasında ilk sinyal, replikaları beklemeden bekletmeyi sona erdirir. Çalıştırma 3 çıkış koduyla durur, hiçbir işlem geri alınmaz ve bekletilen yığının kök kayıtları bir sonraki çalıştırmanın kurtarma süreci için günlükte kalır. Replikasyon denetimi bir silme parçası için replikaları ilk kez kontrol ederken gelen bir sinyal, bu kontrolün sonuçlanmasını bekler.
  • İkinci bir sinyal çalıştırmayı anında iptal eder. Açık veritabanı işlemi (transaction) geri alınır (rollback), günlük Run failed kaydıyla sona erer ve bir sonraki çalıştırmanın kurtarma süreci günlükte kayıtlı işleri tamamlar.
  • Üçüncü bir sinyal süreci sonlandırır.

Durdurulan bir çalıştırmanın kapanış sayıları şöyle okunur: roots ve batches tamamlanan işi; copied ve deleted ise durdurulan yığınınkiler de dahil olmak üzere commit edilmiş satırları gösterir.

Konteyner İçinde

docker stop komutu SIGTERM gönderir. Bu nedenle işlenmekte olan yığın durdurma süre sınırından (varsayılan 10 saniye) önce tamamlanırsa, bu bir kontrollü durdurma (graceful stop) olur. docker stop --time değerini veya Compose içindeki stop_grace_period ayarını bir yığının süresinden daha yüksek tutun. Süre sınırı aşılırsa süreç zorla sonlandırılır (kill) ve bir sonraki çalıştırma günlükte kayıtlı işleri kurtarır.