Skip to content

Releases: flink-gcp/flink-datastream-protobuf

v1.0.0

Choose a tag to compare

@laughingman7743 laughingman7743 released this 01 Nov 06:20
v1.0.0
0cbc2e7

Highlights

flink-datastream-protobuf 1.0.0 is the first release published to Maven Central, and it starts the stable API and forward-restore contract of the 1.x line.

  • Artifact lines. io.github.flink-gcp:flink-datastream-protobuf:1.0.0 runs on Flink 2.2 and 2.3 with Java 17 or 21; 1.0.0-1.20 runs on Flink 1.20 LTS with Java 17. Stay on the line that matches your Flink runtime; Maven orders 1.0.0-1.20 after 1.0.0, so configure Dependabot or Renovate as the compatibility guide shows.
  • API. ProtobufTypeInformation.of(MyMessage.class) and its builder for generated proto3 messages, ProtobufTypeInfoFactory registered against com.google.protobuf.AbstractMessage, and ProtobufTypeInformation.of(descriptor) for DynamicMessage values. The library has no Kryo or Chill fallback; set pipeline.generic-types: false.
  • Runtime. Each line is built with Protobuf 4.36.2 and runs unchanged with protobuf-java and generated code 4.x or 3.25.x.
  • State. Message framing, the generated-message snapshot, and the DynamicMessage snapshot start at format version 1. Later 1.x releases restore state that 1.0.0 writes for unchanged schemas and the supported schema changes: field additions, reserved field removals, and enum value additions, with the same artifact line, Flink minor, and Protobuf runtime and generated code.
  • Defaults and limits. The serializer settings, size and depth limits, and deterministic-writing behavior are described in the usage guide.

Upgrading from development builds

No upgrade path leads to 1.0.0. The 0.1.0, 0.2.0, and 0.3.0 milestones were unpublished development milestones, and 1.0.0 reads no state that they or development builds wrote; start jobs that used them from fresh state or replay their input, as the compatibility guide describes.

Verification

Both versions are signed with the release key 679AB13942F51CAF09F06E73608AC6CD5F89628E. The standalone application example passed against each published jar resolved from Maven Central on Flink 2.2.1, 2.3.0, and 1.20.5 with Protobuf 3 and 4. The attached v1.0.0-*.tar.gz bundles retain the snapshots and checkpoint/savepoint fixtures that the published jars wrote; README.md and FINAL-BASELINE.json describe them. The 1.0.0 serializer benchmarks report the release candidate's measurements.

What's Changed

Full Changelog: v0.3.0...v1.0.0

v0.3.0 development baseline

Pre-release

Choose a tag to compare

@laughingman7743 laughingman7743 released this 31 Oct 08:16
v0.3.0
142862b

This pre-release retains the final v0.3.0 development baseline for later milestone checks, including the 1.0.0 upgrade assessment.
No artifacts are published to Maven Central.
The attached library jars retain Maven version 0.3.0-SNAPSHOT; this is not a stabilized public release.

Source: 142862b9d86f449e3e4894715602a991a018fd63, annotated tag v0.3.0.
The integrated CI run of that commit passed all jobs, including aggregate CI passed, the retained v0.1.0 and v0.2.0 upgrade checks, and Pages deployment.

The milestone adds explicit-descriptor DynamicMessage support: ProtobufTypeInformation.of(Descriptor) and newBuilder(Descriptor), a separate DynamicMessage serializer snapshot, and the DynamicMessage guide with a compiled example. It builds each artifact line against Protobuf 4 and verifies one jar on Protobuf 3 and 4, checks the direct upgrades from the retained v0.1.0 and v0.2.0 baselines, and documents them in the upgrade guide.

Retained artifacts

Asset Compile floor Protobuf runtime/protoc Verified retained-input readers
v0.3.0-flink2-pb3.tar.gz Flink 2.2.1 3.25.9 Flink 2.2.1 and 2.3.0, JDK 17 and 21
v0.3.0-flink2-pb4.tar.gz Flink 2.2.1 4.36.2 Flink 2.2.1 and 2.3.0, JDK 17 and 21
v0.3.0-flink1-pb3.tar.gz Flink 1.20.4 3.25.9 Flink 1.20.4, JDK 17
v0.3.0-flink1-pb4.tar.gz Flink 1.20.4 4.36.2 Flink 1.20.4, JDK 17

Each bundle (bundle format 3) retains the exact library, already-compiled consumers, the six runtime application jars and schemas, the DynamicMessage application jar, serializer snapshots, checkpoint/savepoint fixtures for HashMap and RocksDB, the source archive, resolved dependencies, commands, toolchain identities, logs, and a complete inner checksum inventory.
Besides the original-schema, evolved, and enum fixtures, each backend retains DynamicMessage state that an application without generated message classes wrote (dynamic), and each Flink version retains a DynamicMessage serializer snapshot fixture.
All four clean capture builds passed (387 tests for Flink 2.x and 389 for Flink 1.20).
With build outputs removed, all ten reader combinations passed, totaling 252 case executions with the retained compiled inputs.
Unsupported Flink-runtime and LTS/JDK-21 combinations were rejected with their expected messages before creating output.

The assets were assembled with just baseline-release (scripts/baseline_release.py at the tagged commit), which checked the bundles, tag, readers, controls, CI run, and the publication review before writing them.
The review covers every bundle file, nested archive member, and reader output; its 200 findings are public dependency literals and defaults, workflow keys, and synthetic test values, and its four flagged files are the tracked CI Maven settings in each source archive, which hold no server entry; each has a recorded disposition in the verification archive.

Download README.md for reproduction and follow-up instructions, FINAL-BASELINE.json for the final designation and results, INVENTORY.json for the per-file inventory, v0.3.0-verification.tar.gz for full verification records, and SHA256SUMS for asset integrity checks.
The capture tool's embedded milestone.final=false flags remain unchanged; the external final manifest selects these exact checksum-identified bundles as the milestone baseline.
Keep downloaded copies with their checksums and do not overwrite historical inputs.

The retained local bundles were captured on macOS/aarch64 using JDK 17, with JDK 21 reader validation for Flink 2.x.
They include platform-specific dependencies; execution on other platforms is not claimed for these exact bundles.
The separate integrated CI covers the repository's supported runtime matrix on its runner platform.

Saved-state verification keeps each Flink version and Protobuf profile fixed.
Cross-Flink or cross-Protobuf state upgrades, backend migration, rescaling, and universal development-version compatibility are outside this baseline.
Version 1.0.0 is planned to reject state that 0.x libraries wrote (#140).

Evidence retention: #146.
Milestone tracker: #20.
Previous baselines: v0.1.0 and v0.2.0.

v0.2.0 development baseline

Pre-release

Choose a tag to compare

@laughingman7743 laughingman7743 released this 29 Oct 01:48
v0.2.0
e697ee9

This pre-release retains the final v0.2.0 development baseline for the 0.3.0 state and API compatibility work.
No artifacts are published to Maven Central.
The attached library jars retain Maven version 0.2.0-SNAPSHOT; this is not a stabilized public release.

Source: e697ee957000f3258ba4b6fd5940458514fada5c, annotated tag v0.2.0.
The integrated CI run of that commit passed all jobs, including aggregate CI passed, the retained v0.1.0 upgrade checks, and Pages deployment.

The milestone adds supported descriptor-based schema evolution (field additions, field removals that reserve the number, and enum value additions) and restores state that the retained v0.1.0 artifact wrote; it also restricts payload graphs to proto3, rejects unknown fields that the reader would parse into declared fields, enables large-payload aliasing by default, and adds the upgrade guide, the API compatibility gate, and serializer performance work with retained measurements.

Retained artifacts

Asset Compile floor Protobuf runtime/protoc Verified retained-input readers
v0.2.0-flink2-pb3.tar.gz Flink 2.2.1 3.25.9 Flink 2.2.1 and 2.3.0, JDK 17 and 21
v0.2.0-flink2-pb4.tar.gz Flink 2.2.1 4.33.6 Flink 2.2.1 and 2.3.0, JDK 17 and 21
v0.2.0-flink1-pb3.tar.gz Flink 1.20.4 3.25.9 Flink 1.20.4, JDK 17
v0.2.0-flink1-pb4.tar.gz Flink 1.20.4 4.33.6 Flink 1.20.4, JDK 17

Each bundle (bundle format 2) retains the exact library, already-compiled consumers, the six runtime application jars and schemas, serializer snapshots, checkpoint/savepoint fixtures for HashMap and RocksDB, the source archive, resolved dependencies, commands, toolchain identities, logs, and a complete inner checksum inventory.
Besides the original-schema fixtures, each backend retains state that the changed schema wrote after restoring original-schema state (evolved) and state of an enum-bearing schema (enum), for the 0.3.0 direct and sequential upgrade checks.
All four clean capture builds passed (329 tests for Flink 2.x and 331 for Flink 1.20).
With build outputs removed, all ten reader combinations passed, totaling 202 case executions with the retained compiled inputs.
Unsupported Flink-runtime and LTS/JDK-21 combinations were rejected with their expected messages before creating output.

The assets were assembled with just baseline-release (scripts/baseline_release.py at the tagged commit), which checked the bundles, tag, readers, controls, CI run, and the publication review before writing them.
The review covers every bundle file, nested archive member, and reader output; its 200 findings are public dependency literals and defaults, workflow keys, and synthetic test values, each with a recorded disposition in the verification archive.

Download README.md for reproduction and follow-up instructions, FINAL-BASELINE.json for the final designation and results, INVENTORY.json for the per-file inventory, v0.2.0-verification.tar.gz for full verification records, and SHA256SUMS for asset integrity checks.
The capture tool's embedded milestone.final=false flags remain unchanged; the external final manifest selects these exact checksum-identified bundles as the milestone baseline.
Keep downloaded copies with their checksums and do not overwrite historical inputs.

The retained local bundles were captured on macOS/aarch64 using JDK 17, with JDK 21 reader validation for Flink 2.x.
They include platform-specific dependencies; execution on other platforms is not claimed for these exact bundles.
The separate integrated CI covers the repository's supported runtime matrix on its runner platform.

Saved-state verification keeps each Flink version and Protobuf profile fixed.
Cross-Flink or cross-Protobuf state upgrades, backend migration, rescaling, and universal development-version compatibility are outside this baseline.
APIs and state formats may change in later development milestones, with documented compatibility decisions.

Evidence retention: #63.
Milestone tracker: #14.
Previous baseline: v0.1.0.

v0.1.0 development baseline

Pre-release

Choose a tag to compare

@laughingman7743 laughingman7743 released this 19 Sep 14:48
f5063f7

This pre-release retains the final v0.1.0 development baseline for subsequent state and API compatibility work.
No artifacts are published to Maven Central.
The attached library jars retain Maven version 0.1.0-SNAPSHOT; this is not a stabilized public release.

Source: f5063f784bdf6799250c521c39a47701900133ea, annotated tag v0.1.0.
The integrated CI run passed all 24 jobs, including aggregate CI passed and Pages deployment.

The milestone implements native generated-message TypeInformation, TypeInfoFactory, TypeSerializer, and descriptor-backed TypeSerializerSnapshot integration; unchanged-schema checkpoint/savepoint recovery; common Google Well-Known Types and representative OpenTelemetry messages; compiled examples; the documentation site; and retained serializer benchmark evidence.

Retained artifacts

Asset Compile floor Protobuf runtime/protoc Verified retained-input readers
v0.1.0-flink2-pb3.tar.gz Flink 2.2.1 3.25.9 Flink 2.2.1 and 2.3.0, JDK 17 and 21
v0.1.0-flink2-pb4.tar.gz Flink 2.2.1 4.33.6 Flink 2.2.1 and 2.3.0, JDK 17 and 21
v0.1.0-flink1-pb3.tar.gz Flink 1.20.4 3.25.9 Flink 1.20.4, JDK 17
v0.1.0-flink1-pb4.tar.gz Flink 1.20.4 4.33.6 Flink 1.20.4, JDK 17

Each bundle retains the exact library, already-compiled consumers, application jars, schemas, serializer snapshots, checkpoint/savepoint fixtures for HashMap and RocksDB, source archive, resolved dependencies, commands, toolchain identities, logs, and a complete inner checksum inventory.
All four clean capture builds passed.
With build outputs removed, all ten reader combinations passed, totaling 122 case executions with the retained compiled inputs.
Unsupported Flink-runtime and LTS/JDK-21 combinations were rejected.

Download README.md for reproduction and follow-up instructions, FINAL-BASELINE.json for the final designation and results, INVENTORY.json for the per-file inventory, v0.1.0-verification.tar.gz for full verification records, and SHA256SUMS for asset integrity checks.
The capture tool's embedded milestone.final=false flags remain unchanged; the external final manifest selects these exact checksum-identified bundles as the milestone baseline.
Keep downloaded copies with their checksums and do not overwrite historical inputs.

The retained local bundles were captured on macOS/aarch64 using JDK 17, with JDK 21 reader validation for Flink 2.x.
They include platform-specific dependencies; execution on other platforms is not claimed for these exact bundles.
The separate integrated CI covers the repository's supported runtime matrix on its runner platform.

Saved-state verification keeps each Flink version and Protobuf profile fixed.
Changed schemas, cross-Flink or cross-Protobuf state upgrades, backend migration, rescaling, and universal development-version compatibility are outside this baseline.
APIs and state formats may change in later development milestones, with documented compatibility decisions.

Evidence retention: #40.
Milestone tracker: #6.
Follow-up consumers: #16 and #17.