apache / apache/iceberg-cpp

Decouple fatal logging from process termination

Open
#887 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
221
Forks
124
Avg merge
1d 16h
Merged PRs (30d)
21

Description

`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.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by locating the definitions and call sites for LogLevel::kFatal, the fatal logging macros, and FatalHandler. Read how recoverable failures use Status/Result and trace where std::abort() is invoked. Done should be demonstrable by logging a fatal condition without forcing process termination, while unrecoverable invariant termination remains explicit.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
backend
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.