Hello Yuxia, Thank you for coordinating and preparing the release.
+1 (non-binding) See verifications done below *1. Signature and shasum* ``` $ curl https://downloads.apache.org/incubator/fluss/KEYS -o KEYS % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 8013 100 8013 0 0 51139 0 --:--:-- --:--:-- --:--:-- 51365 $ gpg --import KEYS gpg: key 85BACB5AEFAE3202: "Jark Wu (CODE SIGNING KEY) <[email protected]>" not changed gpg: key 56A9F259A4C18F9C: "Yuxia Luo (CODE SIGNING KEY) <[email protected]>" not changed gpg: Total number processed: 2 gpg: unchanged: 2 $ for i in *.tgz; do echo $i; gpg --verify $i.asc $i; done fluss-0.9.0-incubating-bin.tgz gpg: Signature made Thu Feb 12 11:01:51 2026 GMT gpg: using RSA key E91E2171D6678CB70B50282356A9F259A4C18F9C gpg: Good signature from "Yuxia Luo (CODE SIGNING KEY) <[email protected]>" [unknown] gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: E91E 2171 D667 8CB7 0B50 2823 56A9 F259 A4C1 8F9C $ sha512sum fluss-0.9.0-incubating-bin.tgz 15102955cf8abb7bf8384c0db20c5160b2aedc15bee3a10135a6d47c744dce23bd13a4403b43da4ebe199622517b83cf8eab76de1070c42b012f717b12bc2199 fluss-0.9.0-incubating-bin.tgz ``` *2. Verified APIs using Rust client compiled from fluss-rust main branch on commit: [1]* - Admin APIs: Create / Get / List for Database, Table, Partition; Metadata, Schema - Log Table: Produce, Fetch, ListOffsets; ArrowRecordBatch - Primary Key Table: Put, Lookup *3. **Verified** using Python binding compiled from fluss-rust **main branch on commit: [1]* - Admin APIs: Create / Get / List for Database, Table, Partition; Metadata, Schema - Log Table: Produce, Fetch, ListOffsets; ArrowRecordBatch - Primary Key Table: Put, Lookup *4. **Verified** using C++ binding from fluss-rust main branch **main branch on commit: [1]* - Admin APIs: Create / Get / List for Database, Table, Partition; Metadata, Schema - Log Table: Produce, Fetch, ListOffsets; ArrowRecordBatch - Primary Key Table: Put, Lookup [1] https://github.com/apache/fluss-rust/commit/bac00026f7dc06eca7deebed11172bc378938cf5 Best regards Keith Lee On Fri, Feb 13, 2026 at 3:55 PM ForwardXu <[email protected]> wrote: > +1 > > > Test environment: > - OS: macOS (Darwin 25.2.0, ARM64/Apple Silicon) > - Java: OpenJDK 21.0.1 LTS (TencentKonaJDK) > - Fluss: 0.9.0-incubating (binary distribution) > - Flink: 2.2.0 > - Connector: `fluss-flink-2.2-0.9.0-incubating.jar` (built from 0.9 > source) > - Tiering JAR: `fluss-flink-tiering-0.9.0-incubating.jar` > - Fluss Cluster: local-cluster mode (1 CoordinatorServer + 1 > TabletServer) > - Flink Cluster: Standalone (1 JobManager + 1 TaskManager, > process=4096m) > > > Tested Flink + Fluss Lakehouse Tiering (Paimon + Iceberg) with 40 test > cases, all passed:*OK* > > > - Tiering to Paimon — PK table > (create/insert/tiering/$lake-query/$lake-agg/union-read/upsert/delete): > *OK* (10 cases) > - Tiering to Paimon — Log table > (create/insert/tiering/$lake-query/$lake-agg/streaming-query): *OK* (5 > cases) > - Tiering to Paimon — Complex types PK table with ARRAY/MAP/ROW > (create/insert/tiering/$lake-query/$lake-agg): *OK* (5 cases) > - Tiering to Paimon — System table $lake$snapshots: *OK* (1 case) > - Tiering to Iceberg — PK table > (create/insert/tiering/$lake-query/$lake-agg/union-read/upsert): *OK* (8 > cases) > - Tiering to Iceberg — Log table > (create/insert/tiering/$lake-query/$lake-agg/streaming-query): *OK* (5 > cases) > - Tiering to Iceberg — Complex types PK table with ARRAY/MAP/ROW > (create/insert/tiering/$lake-query/$lake-agg): *OK* (5 cases) > - Tiering to Iceberg — System table $lake$snapshots: *OK* (1 case) > > > Detailed test cases: > > > | # | Lake | Category | Test Case | Mode | Result | > |---|------|----------|-----------|------|--------| > | 1 | Paimon | PK Table | Create PK table with datalake enabled > (freshness=10s) | batch | *OK* | > | 2 | Paimon | PK Table | Insert 5 rows into PK table | batch | > *OK* | > | 3 | Paimon | PK Table | Point query (order_id=1) | batch | *OK* | > | 4 | Paimon | PK Table | $lake query (read from Paimon storage) | > batch | *OK* | > | 5 | Paimon | PK Table | $lake aggregation (COUNT + SUM) | batch | > *OK* | > | 6 | Paimon | PK Table | Union Read (Fluss + Paimon) | batch | > *OK* | > | 7 | Paimon | PK Table | Upsert update (id=1) | batch | *OK* | > | 8 | Paimon | PK Table | Verify upsert (point query id=1) | batch > | *OK* | > | 9 | Paimon | PK Table | Delete record (id=5) | batch | *OK* | > | 10 | Paimon | PK Table | Verify delete ($lake COUNT) | batch | > *OK* | > | 11 | Paimon | Log Table | Create Log table with datalake enabled > | batch | *OK* | > | 12 | Paimon | Log Table | Insert 4 rows into Log table | batch | > *OK* | > | 13 | Paimon | Log Table | $lake query Log table | batch | *OK* | > | 14 | Paimon | Log Table | $lake aggregation (GROUP BY event_type) > | batch | *OK* | > | 15 | Paimon | Log Table | Streaming query Log table (earliest) | > streaming | *OK* | > | 16 | Paimon | Complex Types | Create PK table with ARRAY/MAP/ROW > + datalake | batch | *OK* | > | 17 | Paimon | Complex Types | Insert complex type data (3 rows) | > batch | *OK* | > | 18 | Paimon | Complex Types | Point query complex types (id=1) | > batch | *OK* | > | 19 | Paimon | Complex Types | $lake query complex types | batch | > *OK* | > | 20 | Paimon | Complex Types | $lake aggregation complex types > (COUNT) | batch | *OK* | > | 21 | Paimon | System Table | $lake$snapshots (snapshot_id, > commit_user, total_record_count) | batch | *OK* | > | 22 | Iceberg | PK Table | Create PK table with datalake enabled > (freshness=10s) | batch | *OK* | > | 23 | Iceberg | PK Table | Insert 5 rows into PK table | batch | > *OK* | > | 24 | Iceberg | PK Table | Point query (order_id=1) | batch | *OK* > | > | 25 | Iceberg | PK Table | $lake query (read from Iceberg storage, > 5 rows with __bucket/__offset/__timestamp) | batch | *OK* | > | 26 | Iceberg | PK Table | $lake aggregation (COUNT=5, SUM=808.39) > | batch | *OK* | > | 27 | Iceberg | PK Table | Union Read (Fluss + Iceberg) | batch | > *OK* | > | 28 | Iceberg | PK Table | Upsert update (id=1, > customer→Alice_Updated) | batch | *OK* | > | 29 | Iceberg | PK Table | Verify upsert (point query id=1, > Alice_Updated confirmed) | batch | *OK* | > | 30 | Iceberg | Log Table | Create Log table with datalake enabled > | batch | *OK* | > | 31 | Iceberg | Log Table | Insert 4 rows into Log table | batch | > *OK* | > | 32 | Iceberg | Log Table | $lake query Log table (4 rows with > timestamps) | batch | *OK* | > | 33 | Iceberg | Log Table | $lake aggregation (GROUP BY > event_type: click=2, view=1, buy=1) | batch | *OK* | > | 34 | Iceberg | Log Table | Streaming query Log table (earliest, 4 > rows) | streaming | *OK* | > | 35 | Iceberg | Complex Types | Create PK table with ARRAY/MAP/ROW > + datalake | batch | *OK* | > | 36 | Iceberg | Complex Types | Insert complex type data (3 rows) > | batch | *OK* | > | 37 | Iceberg | Complex Types | Point query complex types (id=1, > tags=[vip,active]) | batch | *OK* | > | 38 | Iceberg | Complex Types | $lake query complex types (3 rows > with ARRAY/MAP/ROW) | batch | *OK* | > | 39 | Iceberg | Complex Types | $lake aggregation complex types > (COUNT=3) | batch | *OK* | > | 40 | Iceberg | System Table | $lake$snapshots (snapshot_id, > operation=append/overwrite, summary) | batch | *OK* | > > > Notes: > - Paimon: 1.3.1 (`paimon-flink-2.0-1.3.1.jar` + > `paimon-bundle-1.3.1.jar`) > - Iceberg: 1.10.1 (`iceberg-flink-runtime-2.0-1.10.1.jar`) > - Iceberg required `hadoop-client-api-3.3.6.jar` + > `hadoop-client-runtime-3.3.6.jar` (Hadoop 3.x) to resolve > `FileSystem.openFile()` API compatibility > - Iceberg required patching `LakeFlinkCatalog.java` to use 3-arg > `createCatalog(String, Map, Configuration)` via reflection (Iceberg 1.10.1 > API change) > - Tiering Service ran as Flink streaming job, data verified via > `$lake` virtual table queries reading directly from lake storage > - All `$lake` queries returned correct data with Fluss metadata > columns (__bucket, __offset, __timestamp) > > > ForwardXu > [email protected] > > > > > > > > 原始邮件 > > > 发件人:Yunhong Zheng <[email protected]> > 发件时间:2026年2月13日 22:51 > 收件人:dev <[email protected]> > 主题:Re: [VOTE] Release Fluss 0.9.0-incubating (RC1) > > > > +1 (binding) > > > I have verified the following new introduced features: aggregate merge engine, auto increment column, add column, rebalance and the kv snapshot lease. All of these features passed in RC1. > > > Looking forward to the final release of Fluss 0.9-incubating! > > Yours, > Yunhong(Swuferhong) > > On 2026/02/13 13:10:22 Yang Wang wrote: > > +1 (non-binding) > > > > > - verified signatures and checksums: ok > > > - verified the source builds correctly: ok > > > - checked the LICENSE and NOTICE files are correct > > > - tested Rebalance feature with Flink 2.2.0 (1 coordinator + 3 > > tablet-servers): ok > > > - interface validation (add_server_tag, rebalance, > > list_rebalance, cancel_rebalance) > > > - effect verification (node offline migration, replica > > distribution, leader distribution) > > > - data correctness across rebalance operations > > > - confirmed list_rebalance ClassCastException from rc0 is > > fixed in rc1 > > > - tested Delta Join with Flink 2.2.0: ok > > > - verified DeltaJoin optimization works correctly for CDC > > sources with table.delete.behavior='IGNORE' > > > - built and verified with official git tag > > (v0.9.0-incubating-rc1) > > > - tested Paimon DV Union Read with Flink 1.20.3 + Paimon 1.3.1: > > ok > > > - confirmed PR #2326 resolved rc0 issues where DV table Union > > > Read returned 0 rows or stale data > > > - Union Read correctly returns complete and up-to-date data > > across multiple update scenarios > > > > Best, > > Yang > > > > yuxia <[email protected] > > 于2026年2月12日周四 20:03写道: > > > > > Hi everyone, > > > > > > > Please review and vote on the release candidate #1 for the Apache Fluss > > > version 0.9.0-incubating, as follows: > > > [ ] +1, Approve the release > > > > [ ] -1, Do not approve the release (please provide specific comments) > > > > > > > > > > The complete staging area is available for your review, includes: > > > > > > > The official source release and binary convenience releases to be deployed > > > to: > > > * > > > > https://dist.apache.org/repos/dist/dev/incubator/fluss/fluss-0.9.0-incubating-rc1 > > > > <https://dist.apache.org/repos/dist/dev/incubator/fluss/fluss-0.9.0-incubating-rc1> >> > ; > > > Helm charts are available on: > > > * > https://dist.apache.org/repos/dist/dev/incubator/fluss/helm-chart > > > > (NB: you have to build the Docker images locally with the version > > > > 0.9.0-incubating in order to test Helm charts) > > > > <https://dist.apache.org/repos/dist/dev/incubator/fluss/helm-chart> > (NB: you have to build the Docker images locally with the version> > 0.9.0-incubating in order to test Helm charts)> >> > ; > > > > All the files are signed with the key with fingerprint 56A9F259A4C18F9C, > > > > you can find the KEYS file here: > > > * > https://dist.apache.org/repos/dist/release/incubator/fluss/KEYS > > > > <https://dist.apache.org/repos/dist/release/incubator/fluss/KEYS> >> > ; > > > > All artifacts to be deployed to the Maven Central Repository: > > > * > https://repository.apache.org/content/repositories/orgapachefluss-1004/ > > > > <https://repository.apache.org/content/repositories/orgapachefluss-1004/> >> > ; > > > Git tag for the release: > > > * > https://github.com/apache/fluss/releases/tag/v0.9.0-incubating-rc1 > > > > <https://github.com/apache/fluss/releases/tag/v0.9.0-incubating-rc1> >> > ; > > > Git commit for the release: > > > * > > > > > > > https://github.com/apache/fluss/commit/d6fd1f1f607a2672bff5d18d5ca811bfa920bbd7 > > > > <https://github.com/apache/fluss/commit/d6fd1f1f607a2672bff5d18d5ca811bfa920bbd7> >> > ; > > > > Website pull request for the release announcement blog post > > > * https://github.com/apache/fluss/pull/2590 > > > <https://github.com/apache/fluss/pull/2590> >>; > > > > Upgrade note for the new release: > > > * > > > > > > > https://github.com/apache/fluss/blob/release-0.9/website/docs/maintenance/operations/upgrade-notes-0.9.md > > > > <https://github.com/apache/fluss/blob/release-0.9/website/docs/maintenance/operations/upgrade-notes-0.9.md> >> > ; > > > > Docker images for the release candidate: > > > * fluss: apache/fluss:0.9.0-incubating-rc1 > > > > > > > Please download, verify and test. To learn more about how to verify: > > > > > > > https://fluss.apache.org/community/how-to-release/verifying-a-fluss-release/ > > > > <https://fluss.apache.org/community/how-to-release/verifying-a-fluss-release/> >> > ; > > > > > > > The vote will be open for at least 72 hours. It is adopted by majority > > > > approval, with at least 3 PPMC affirmative votes. > > > > > > > > > Best regards, > > > Yuxia > > > > >
