- Verschifft
- 23. September 2026 um 01:28 UTC
- Autor
- Kamo
- Ausschuss
- 84746ae
Die Lead-Leadder (Securedservice create_lead_ledgers.sql, angewendet 2026-09-22) ersetzen COUNT(*) über einen 796k-Lead Pool und über lead_credits mit gewarteten Summen plus ein Onend-only-Journal, dass Zeile Trigger schreiben. Dieser Service hält sie gefaltet und ehrlich: - LeadLedgerFoldJob (alle 30 s): eine Anweisung pro Stapel löscht Journalzeilen und fügt sie hinzu summa., so dass ein Leser die Zahl vor oder nachher sieht, nie zur Hälfte. Leser fügen die Zeitschrift bereits hinzu die Summe, so dass ein verpasstes Häkchen Zeit lesen, nie Korrektheit. Auf höchstens 40 Chargen von 5.000 pro Tick. - LeadLedgerReconcileJob (03:40 Nacht): erzählt jeden org Pool und die verfügbaren Kredite jedes Mitglieds aus den Zeilen und vergleicht sie mit total + journal in ONE Statement (ein Schnappschuss). Unterschiede sind APPENDED als 'RECONCILE' Deltas, nie über eine Gesamt geschrieben, so dass die Neuauszählung kann nicht Rennen die Auslöser oder eine Falte. Es benennt auch jeden Journal-Trigger, der fehlt oder deaktiviert ist. In einem gesunden System findet es nichts, so dass jede Korrektur bei WARN protokolliert wird. Beide sind @DisallowConcurrentExecution und versuchen Sie eine Aussage YugabyteDB abgebrochen mit 40001 (jeder ist atomar, so ein erneuter Versuch kann nicht doppelt zählen). Das SQL wurde vor dieser ausgelieferten Version gegen YugabyteDB wiedergegeben (tempel -Tabellen, liest, faltet und neu auszählt, 60 Schecks). JobTriggerController: POST /api/daemon/trigger/{job" und GET /status haben alle beantwortet. SecurityConfig Erlaubt alles, und die Daemon-Route IngressRoute setzt diesen Service auf dem öffentlichen Websecure Entrypoint (Host daemon.internal.kamocrm.com; untersucht 200 anonym), so dass jeder Job - jetzt einschließlich der Neuauszählung . könnte aus dem Internet gestartet werden, so viele überlappende Kopien wie der Quarz-Pool hält. Beide jetzt X-Internal-Auth = mlos.internal-auth-secret (konstante-Zeit) und verweigern alle, wenn dieses Geheimnis ist unset. Nichts in der Plattform ruft diesen Endpunkt an; ein Operator kann es immer noch, aus dem Inneren des Clusters heraus. Tests: LeadLedgerMaintenanceTest (Falling-Schleife und Kappe, Recount-Recounting, fehlende Trigger, der Retry die SQL-Formen, die es sicher neben dem Live-Verkehr machen), JobTriggerControllerAuthTest.
