apache / apache/iceberg-cpp

Decouple fatal logging from process termination

Offen
#887 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
C++
Sterne
221
Forks
124
Ø Merge
1 T. 16 Std.
Gemergte PRs (30 T.)
21

Beschreibung

`LogLevel::kFatal` and the fatal logging macros unconditionally call `std::abort()`. `FatalHandler` runs before the abort, but it is process-global and cannot prevent termination.

This is unsafe for embedded and multi-tenant applications, where one failed Iceberg operation must not terminate the host process.

Logging should not control process lifetime. Recoverable failures should continue to use `Status`/`Result`, while termination for unrecoverable internal invariants should use a separate, explicit mechanism.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Beginne damit, die Definitionen und Aufrufstellen für LogLevel::kFatal, die Fatal-Logging-Makros und FatalHandler zu finden. Lies nach, wie wiederherstellbare Fehler Status/Result verwenden, und verfolge, wo std::abort() aufgerufen wird. Die Fertigstellung sollte dadurch nachweisbar sein, dass eine fatale Bedingung protokolliert werden kann, ohne die Beendigung des Prozesses zu erzwingen, während die Beendigung bei nicht wiederherstellbaren Invarianten weiterhin explizit bleibt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
cpp
Bereich
backend
Issue-Typ
Refactoring
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Ruhig
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
30/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.