Skip to content

Gokulso/log4j iceberg appender#4104

Draft
gsoundar wants to merge 4 commits intoapache:2.xfrom
gsoundar:gokulso/log4j-iceberg-appender
Draft

Gokulso/log4j iceberg appender#4104
gsoundar wants to merge 4 commits intoapache:2.xfrom
gsoundar:gokulso/log4j-iceberg-appender

Conversation

@gsoundar
Copy link
Copy Markdown

INSERT HERE a clear and concise description of what the pull request is for along with a reference to the associated issue IDs, if they exist.

Checklist

  • Base your changes on 2.x branch if you are targeting Log4j 2; use main otherwise
  • ./mvnw verify succeeds (the build instructions)
  • Non-trivial changes contain an entry file in the src/changelog/.2.x.x directory
  • Tests are provided

…eberg tables

Adds a new log4j-iceberg module that provides an IcebergAppender plugin
for writing log events as Parquet-backed rows in an Iceberg table. The
appender buffers events and periodically flushes them as Parquet data
files committed to the table. Commit failures are retried with
exponential backoff and table metadata refresh; persistent failures
crash rather than silently dropping data.

Uses Apache Iceberg 1.10.1 and Parquet 1.16.0. Supports any Iceberg
catalog implementation (Hadoop, REST, etc.) via configuration.
Covers all code paths in IcebergAppender and IcebergManager including:
- Table creation, loading existing tables, idempotent startup
- Event write, batch-triggered flush, empty flush, manual flush
- Events with thrown exceptions, null messages
- Commit retry on transient failure, crash after retry exhaustion
- Parquet write failure, interrupted retry
- Stop lifecycle (closeable catalog, IOException on close, null scheduler)
- Builder setters and factory method

JaCoCo enforces 100% line coverage at build time.
Writes 1M log events through both a local FileAppender and the
IcebergAppender, verifying correctness and reporting a side-by-side
comparison of write throughput, read throughput, disk size, and
Parquet compression ratio.
Writes 1K log events to a local Hadoop-catalog Iceberg table at
/tmp/iceberg-inspect so the Parquet data files and Iceberg metadata
can be examined directly on disk.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Development

Successfully merging this pull request may close these issues.

1 participant