Cluster ERP dönemsel işleri iki yerde koşar: servis kullanıcısının cron tablosu deploy/cluster-erp.cron ve her sunucu işçisinin src/cluster_erp/server/app.py içinde başlattığı arka plan döngüleri. Bu sayfa ikisini, bir döngüyü tek bir işçide tutan kilidi ve app.py ile src/cluster_erp/server/control_retention.py içindeki saklama geçişlerini listeler. Yöneticinin yapılandırdığı kayıt saklama penceresi records modülü sayfasında açıklanır.
Kapsam ve kaynak¶
- Tanımlandığı yer:
deploy/cluster-erp.cron,src/cluster_erp/server/app.py(lifespan,_leaderve_*_loopişlevleri),src/cluster_erp/server/control_retention.py(sweep_control_plane),src/cluster_erp/server/membership.py. - Sayı: dosyadan sayılan dört cron girdisi (ikisi etkin, ikisi yorum hâlinde);
lifespaniçindekiasyncio.create_taskçağrılarından sayılan dört arka plan döngüsü ve bir tek seferlik arka plan görevi (src/cluster_erp/server/app.py:164-194).
Bir düğümün tam cron saatleri dağıtım verisidir; tablo yalnız sıklığı verir.
Cron girdileri¶
| Girdi | Sıklık | Komut | Durum | Kaynak |
|---|---|---|---|---|
| Filo yedeği | her gün | python -m cluster_erp.server.backup_tenants |
etkin | deploy/cluster-erp.cron:4-7 |
| Üyelik taraması | her gün, yedekten sonra | python -m cluster_erp.server.membership sweep |
etkin | deploy/cluster-erp.cron:9-11 |
| Soğuk CSV dışa aktarımı | her gün | scripts/backup/pg_cold_storage_export.sh |
yorum hâlinde | deploy/cluster-erp.cron:13-19 |
| Temel yedek | her hafta | yedek rolüyle pg_basebackup |
yorum hâlinde | deploy/cluster-erp.cron:21-25 |
install.sh dosyayı her çalıştırmada servis kullanıcısının cron tablosu olarak kurar (deploy/install.sh:210). Cron açıklaması üyelik taramasını süreç içi döngünün yanında ikinci bir savunma hattı olarak anar (deploy/cluster-erp.cron:9-10).
Arka plan döngüleri¶
| Döngü | Aralık | Lider kilidi adı | Veritabanları | İş | Kaynak |
|---|---|---|---|---|---|
_retention_purge_loop |
24 saat | retention_purge |
varsayılan ve askıdakiler dahil her kiracı | Günlük saklama, ardından kayıt saklama penceresiyle purge_expired, ardından RetentionSweep olayı |
src/cluster_erp/server/app.py:404-458 |
_subscription_sweep_loop |
24 saat | subscription_sweep |
etkin kiracılar | Abonelikleri ilerletir, yeniler veya sona erdirir; olaylar commit'ten sonra | src/cluster_erp/server/app.py:504-544 |
_analytics_summary_loop |
analytics_summary_refresh_seconds; 0 kapatır |
analytics_summary |
etkin kiracılar | Analitik özet hücrelerini tazeler | src/cluster_erp/server/app.py:461-501 |
_membership_expiry_loop |
24 saat, yalnız çok kiracılı | kontrol düzleminde membership_expiry |
kontrol düzlemi | Süresi dolan üyelikleri askıya alır, ardından kontrol düzlemi saklamasını koşar | src/cluster_erp/server/app.py:372-401 |
_audit_redaction_backfill |
bir kez, açılışta | yok | varsayılan ve her kiracı | Eski audit_log birikimini toplu olarak maskeler |
src/cluster_erp/server/app.py:314-334 |
Her 24 saatlik döngü önce uyur; bu yüzden açılışta hiç koşmaz; açılış bunun yerine kendi telafi geçişlerini koşar (src/cluster_erp/server/app.py:158-193). Başarısız olan bir veritabanı günlüğe yazılır ve döngü sonraki veritabanıyla sürer (src/cluster_erp/server/app.py:452-454, src/cluster_erp/server/app.py:538-540).
Açılış geçişleri¶
| Geçiş | Kaynak |
|---|---|
| Varsayılan veritabanında ve her kiracıda günlük saklama | src/cluster_erp/server/app.py:158-160 |
| Silme defterinin yeniden oynatılması | src/cluster_erp/server/app.py:165-168 |
| Üyelik süresi taraması, yalnız çok kiracılı | src/cluster_erp/server/app.py:180-185 |
| Kontrol düzlemi saklaması, yalnız çok kiracılı | src/cluster_erp/server/app.py:186-193 |
Lider kilidi¶
_leader, geçişin hizmet ettiği veritabanında cluster_erp:<name> değerinden CRC-32 ile türetilen anahtarla pg_try_advisory_lock alır. Kilidi alan işçi geçişi koşar; diğerleri atlar. Kilit geçişin sonunda bırakılır; böylece çöken bir işçi sonrakini hiç engellemez (src/cluster_erp/server/app.py:357-369).
Günlük saklama¶
_daily_log_retention varsayılan veritabanında ve askıdakiler dahil her kiracıda koşar (src/cluster_erp/server/app.py:1267-1284). Her veritabanında:
- jeton kara listesinin süresi dolan satırlarını siler (
src/cluster_erp/server/app.py:1168-1193); activity_log_retention_daysdeğerinden eskiactivity_logsatırlarını veerror_log_retention_daysdeğerinden eskierror_logsatırlarınılog_purge_batch_rowsboyutlu topluluklar hâlinde siler (src/cluster_erp/server/app.py:1196-1245);- hiçbir şey silinmese bile
logstüründe bir kanıt satırı yazar (src/cluster_erp/server/app.py:1246-1263).
Kontrol düzlemi saklaması¶
sweep_control_plane çok kiracılı bir düğümde açılışta ve her gün, istendiğinde de python -m cluster_erp.server.membership retention ile koşar (src/cluster_erp/server/membership.py:137-142). Her geçiş control_retention_runs tablosuna bir satır yazar (src/cluster_erp/server/control_retention.py:170-171).
| Adım | Pencere ayarı | Etkisi | Kaynak |
|---|---|---|---|
| Hız sınırı satırları | control_rate_limit_retention_hours |
control_rate_limits tablosunun pencereden eski satırlarını siler. |
src/cluster_erp/server/control_retention.py:85-93 |
| Terk edilmiş ve iptal edilmiş kayıtlar | signup_verify_ttl_hours artı control_signup_retention_days |
Bağlantı ömrü artı pencereyi aşmış doğrulanmamış kuyruktaki üyelikleri ve pencereyi aşmış iptal edilmiş olanları siler. | src/cluster_erp/server/control_retention.py:95-110 |
| Sahipsiz kayıtlar | yok | Hiç üyeliği kalmamış, provisioning durumundaki bir kiracı satırını yumuşak siler. |
src/cluster_erp/server/control_retention.py:112-122 |
| Emekli kayıtlar | control_signup_retention_days |
Pencereyi aşmış yumuşak silinmiş kiracı satırlarının adını ve posta alan adlarını değiştirir. | src/cluster_erp/server/control_retention.py:124-135 |
| Operatör eylemleri | control_actions_retention_years |
Pencereden eski operatör eylem kayıtlarını siler. | src/cluster_erp/server/control_retention.py:137-145 |
| Etkin olmayan operatörler | control_actions_retention_years |
Uzun süredir etkin olmayan operatör hesaplarının kullanıcı adını, parola hash'ini ve ikinci faktör sırrını değiştirir. | src/cluster_erp/server/control_retention.py:147-160 |
| Kuyruktaki postalar | signup_mail_spool_retention_days |
Kuyruğa alınmış doğrulama postası dosyalarını yalnız spool aktarımında siler. |
src/cluster_erp/server/control_retention.py:162-168 |
Etkin veya askıdaki müşterilere, üyeliklerine ve hazırlanmış kiracılara bu geçiş dokunmaz (src/cluster_erp/server/control_retention.py:30-31).
Tutarsızlıklar¶
Tanıtılan terimler¶
| Terim | Kod tanımlayıcısı | Tanım | Türkçe terim | Kaynak |
|---|---|---|---|---|
| lider kilidi | _leader |
Bir dönemsel geçişi tek bir işçinin koşmasını, diğerlerinin atlamasını sağlayan geçiş başına danışma kilidi. | lider kilidi | src/cluster_erp/server/app.py:357-369 |
| kontrol düzlemi saklama geçişi | sweep_control_plane |
Kontrol düzlemi tabloları üzerindeki günlük silme ve anonimleştirme geçişi. | kontrol düzlemi saklama geçişi | src/cluster_erp/server/control_retention.py:77-175 |
| saklama kanıt satırı | record_run |
Bir saklama geçişinin neyi kaldırdığını kaydeden satır. | saklama kanıt satırı | src/cluster_erp/modules/records/retention/services.py:20-26 |
İlgili sayfalar¶
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.