Upgrade Notes from v0.7 to v0.8
These upgrade notes discuss important aspects, such as configuration, behavior, or dependencies, that changed between Fluss 0.7 and Fluss 0.8. Please read these notes carefully if you are planning to upgrade your Fluss version to 0.8.
Deprecation / End of Support
Java 8 is Deprecated
Beginning with Fluss v0.8, we now only provide binary distributions built with Java 11. Java 8 is deprecated as of this release and will be fully removed in future versions.
🔧 For users still on Java 8: You can continue building Fluss from source using Java 8 by running:
mvn install -DskipTests -Pjava8
However, we strongly recommend upgrading to Java 11 or higher to ensure compatibility, performance, and long-term support.
🔁 If you’re using Fluss with Apache Flink: Please also upgrade your Flink deployment to Java 11 or above. All Flink versions currently supported by Fluss are fully compatible with Java 11.
Metrics Updates
We have updated the report level for some metrics and also removed some metrics, this greatly reduces the metrics amount and improves the performance.
The following metrics are removed:
fluss_tabletserver_table_bucket_inSyncReplicasCount- Removed as redundant. Usefluss_tabletserver_underReplicatedinsteadfluss_tabletserver_table_bucket_log_size- Removed as improvement. Usefluss_tabletserver_table_bucket_logicalStorage_logSizeinsteadfluss_tabletserver_table_bucket_kv_snapshot_latestSnapshotSize- Removed as improvement. Usefluss_tabletserver_table_bucket_logicalStorage_kvSizeinstead
The following metrics are changed:
- The reporting level has been shifted from the
tableBucketlevel to thetabletserverlevel:fluss_tabletserver_table_bucket_underMinIsrtofluss_tabletserver_underMinIsrfluss_tabletserver_table_bucket_underReplicatedtofluss_tabletserver_underReplicatedfluss_tabletserver_table_bucket_atMinIsrtofluss_tabletserver_atMinIsrfluss_tabletserver_table_bucket_isrExpandsPerSecondtofluss_tabletserver_isrExpandsPerSecondfluss_tabletserver_table_bucket_isrShrinksPerSecondtofluss_tabletserver_isrShrinksPerSecondfluss_tabletserver_table_bucket_failedIsrUpdatesPerSecondtofluss_tabletserver_failedIsrUpdatesPerSecondfluss_tabletserver_table_bucket_log_flushPerSecondtofluss_tabletserver_logFlushPerSecondfluss_tabletserver_table_bucket_log_flushLatencyMstofluss_tabletserver_logFlushLatencyMsfluss_tabletserver_table_bucket_kv_preWriteBufferFlushPerSecondtofluss_tabletserver_kvFlushPerSecondfluss_tabletserver_table_bucket_kv_preWriteBufferFlushLatencyMstofluss_tabletserver_kvFlushLatencyMsfluss_tabletserver_table_bucket_kv_preWriteBufferTruncateAsDuplicatedPerSecondtofluss_tabletserver_preWriteBufferTruncateAsDuplicatedPerSecondfluss_tabletserver_table_bucket_kv_preWriteBufferTruncateAsErrorPerSecondtofluss_tabletserver_preWriteBufferTruncateAsErrorPerSecond
- Correction addresses reporting errors in metric names by changing the
tablelevel metric prefix fromfluss_tabletserver_table__(used a double underscore (__)) tofluss_tabletserver_table_.- The affected metrics are all metrics with Scope: tableserver, infix: table
- For example, change
fluss_tabletserver_table__messagesInPerSecondtofluss_tabletserver_table_messagesInPerSecond.
Fluss Datalake Tiering Service
Disables Auto-Compaction By Default
⚠️ Breaking Change: Beginning with Fluss v0.8, auto-compaction during datalake tiering is disabled by default. This is a significant behavioral change that may affect your existing workflows.
What Changed
| Version | Auto-Compaction Behavior |
|---|---|
| v0.7 and earlier | ✅ Enabled by default - Compaction runs automatically during tiering |
| v0.8 | ❌ Disabled by default - Only data movement occurs; compaction must be explicitly enabled |
Impact Assessment
If you rely on automatic compaction for storage optimization, you will need to take action to maintain the same behavior.
How to Enable Auto-Compaction
To restore the previous behavior, configure auto-compaction on a per-table basis via setting the table option 'table.datalake.auto-compaction' = 'true':
-- Enable auto-compaction for a specific table
CREATE TABLE your_table_name (
col1 INT,
col2 INT
) WITH (
'table.datalake.auto-compaction' = 'true'
);
Why This Change Was Made
This change prioritizes tiering service stability and performance:
- 🚀 Better Performance: Compaction is CPU/IO intensive and can slow down the core tiering process
- 🎯 Focused Functionality: The tiering service now focuses solely on reliable data movement
- ⚙️ Granular Control: You can now optimize compaction strategy per table based on your specific needs
- 🔧 Resource Management: Better control over when and where resource-intensive operations occur
Best Practices
- Enable auto-compaction for tables with high write frequency and storage cost concerns
- Disable auto-compaction for tables where tiering speed is more important than storage optimization
- Monitor resource usage when enabling auto-compaction to ensure it doesn't impact tiering performance
- Consider manual compaction for large tables during maintenance windows