OLake Go (v0.8.0 - v0.8.2)
June 29, 2026 β July 11, 2026
π― What's Newβ
Sourcesβ
- 2PC support for Kafka -
Adds two-phase commit support for Kafka by persisting consumer group ID, partition, and offset information in destination metadata, enabling reliable recovery so Kafka consumption can resume correctly from the last committed state.
Destinationsβ
- Single JVM per process for Iceberg writes -
Previously, every Iceberg writer spawned its own JVM per stream/chunk, causing excessive memory usage and OOM risk on large concurrent syncs. Now a single shared JVM handles all streams, withThreadSessionbased isolation preserving per-stream state and cutting memory overhead.
π§ Bug Fixes & Stabilityβ
-
Refactored MySQL chunking helpers for testability -
Split the MySQLGetOrSplitChunksflow into smaller helper functions for chunk sizing, column selection, bound selection, and split strategy routing, enabling independent unit tests without changing existing chunking behavior. -
Placeholder for unavailable TOAST values in Postgres CDC -
Added anolake_unavailable_valueplaceholder to mark unchanged TOAST columns whose values aren't available in PostgreSQL logical replication events. -
Fixed discover failure for schema/table names containing "." -
Tables with a.in their schema or name (e.g.user1.test_table) broke discover, since namespace and name were joined into one string and later re-split on., aborting discovery entirely. Fixed by carrying atypes.StreamID{Namespace, Name}struct through the driver contract across all 8 drivers, avoiding the round-trip. -
Fixed nil pointer panic in
DropStreams-
destination.DropStreamspanicked when a writer returned no shutdown callback, breaking clear-destination and any path relying onDropStreams. Fixed by guarding against a nil shutdown callback before invoking it. -
Fixed CDC insert failure on GCS via S3-compat -
CDC syncs to Iceberg on GCS failed at commit because deleting an unwritten equality-delete file returned 404 on GCS, crashing the sync. Fixed by wrapping the S3 client so a delete on a missing key is treated as success, restoring AWS-like delete behavior only when a customs3_endpointis configured. -
Fixed partition spec column casing mismatch in Iceberg -
Table creation failed whenuse_source_column_nameswas disabled, since destination schema columns were normalized to lowercase (e.g.IDβid) but the partition spec payload still carried the original source column name, causing the Java writer to fail building thePartitionSpecagainst the lowercased schema. Fixed by using the resolved destination column name when populating the partition spec.