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.
Java client: Package and GroupId Migration
🔧 Action Required: All Java client users must update their dependencies and import statements to continue using Fluss.
What Changed
| Aspect | Fluss v0.7 | Fluss v0.8 |
|---|---|---|
| GroupId | com.alibaba.fluss | org.apache.fluss |
| Package | com.alibaba.fluss | org.apache.fluss |
Note: This change does not affect the Fluss client API.
Impact Assessment
All Java client users will need to update their dependencies and import statements:
- Build Dependencies: Update your Maven/Gradle dependencies to use the new groupId
- Import Statements: Update all import statements from
com.alibaba.fluss.*toorg.apache.fluss.*
Migration Steps
-
Update Maven Dependencies:
<!-- Old dependency -->
<dependency>
<groupId>com.alibaba.fluss</groupId>
<artifactId>fluss-client</artifactId>
<version>0.7.x</version>
</dependency>
<!-- New dependency -->
<dependency>
<groupId>org.apache.fluss</groupId>
<artifactId>fluss-client</artifactId>
<version>0.8.0</version>
</dependency> -
Update Import Statements:
// Old imports
import com.alibaba.fluss.client.Connection;
import com.alibaba.fluss.client.ConnectionFactory;
// New imports
import org.apache.fluss.client.Connection;
import org.apache.fluss.client.ConnectionFactory;
Why This Change Was Made
This change represents an important milestone in Fluss's journey to becoming an Apache project. The migration to org.apache.fluss:
- Aligns with the Apache Software Foundation's naming conventions
- Establishes a clear, independent identity for the project
- Ensures long-term stability and governance under the Apache umbrella
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
SASL Plain Authorization jaas configuration
Due to Fluss being donated to the Apache Software Foundation, the package namespace has been changed from org.alibaba.fluss to org.apache.fluss.
The security.sasl.plain.jaas.config configuration has been updated accordingly:
- Server side:
security.sasl.plain.jaas.configis changed fromorg.alibaba.fluss.security.auth.sasl.plain.PlainLoginModuletoorg.apache.fluss.security.auth.sasl.plain.PlainLoginModule. - Client side:
client.security.sasl.jaas.configis changed fromorg.alibaba.fluss.security.auth.sasl.plain.PlainLoginModuletoorg.apache.fluss.security.auth.sasl.plain.PlainLoginModule. If you are using client.security.sasl.username and client.security.sasl.password configurations, no changes are required as these remain compatible.
Flink Catalog required Default database.
Fluss catalog used to not need defalut database even though a wrong defalut database won't be checked. From 0.8, it's required to specify a default database.