- Se descapó
- 23 de septiembre de 2026 a las 1:28 UTC
- Autor
- Kamo
- Compromit
- 84746ae
Los libros de contabilidad (servicio de seguridad create.lead-ledgers.sql, aplicado 2026-09-22) reemplazar COUNT(*) sobre un Pensaje de 796k-lead y sobre los créditos de plomo con totales mantenidos más un diario solo de apéndice que reman Los desencadenantes escriben. Este servicio los mantiene doblados y honestos: - LeadLedgerFoldJob (cada 30 s): una declaración por lote elimina las filas de los diarios y las añade a la Totales, por lo que un lector ve la figura antes o después, nunca la mitad. Los lectores ya añaden el diario a el total, por lo que una garrafa perdida cuesta tiempo de lectura, nunca corrección. En la mayoría 40 lotes de 5.000 por garrafa. - LeadLedgerReconcileJob (03:40 noche): relata la piscina de cada org y los créditos disponibles de cada miembro de las filas y los compara con el diario total en una declaración de ONE (una instantánea). Las diferencias son APROBADO como deltas 'RECONCILE', nunca escrita sobre un total, por lo que el recuento no puede correr los desencadenantes o un pliegue. También nombra a cualquier periódico disparador que esté desaparecido o desactivado. En un sistema sano se encuentra nada, así que cada corrección se registra en WARN. Ambos son "DisallowConcurrentExecution" y volver a intentar una declaración YugabyteDB aborta con 40001 (cada uno es atómico, para que un reinicio no pueda tener doble cuenta). El SQL fue reproducido contra YugabyteDB antes de que esto fuera enviado (templa Mesas: desencadenantes, lee, dobla y recuento, 60 controles). JobTriggerController: POST /api/daemon/trigger/-jobá y GET /status respondió a cualquiera. SeguridadConfig lo permite todo, y la ruta de demonio IngressRute pone este servicio en el punto de entrada web-segura pública (Host daemon.internal.kamocrm.com; sondeó 200 anónimamente), por lo que cualquier trabajo - ahora incluyendo el recuento podría iniciarse desde internet, tantas copias superpuestas como sostiene la piscina de Quartz. Ambos ahora requerir X-Internal-Auth = mlos.internal-auth-secret (tiempo constante) y rechazar a todos cuando ese secreto no está desconectado. Nada en la plataforma llama a este endpoint; un operador todavía puede, desde dentro del clúster. Pruebas: LeadLedgerManintenanceTest (bucle y tapón pliegue, relatar reportajes, disparadores faltantes, el reinicio Regla, y las formas SQL que lo hacen seguro al lado del tráfico en vivo), JobTriggerControllerAuthTest.
