Skip to content

Versioning strategy for Flink connector

Brian Zhou edited this page Nov 19, 2021 · 5 revisions

Background

This connector project need to support multiple Flink version with multiple Pravega version. With both projects fast developing, although there is not a perfect solution to maintain the large matrix, we need to find a relatively better way to version and maintain the project.

Versioning

Version 0.1.0 ~ 0.5.1

The version is the same with the Pravega client version, the artifact name contains the Scala version after the _, the project does not support multiple Flink version. It is compiled with the latest Flink version.

<dependency>
    <groupId>io.pravega</groupId>
    <artifactId>pravega-connectors-flink_2.12</artifactId>
    <version>0.5.0</version>
</dependency>

Version 0.6.0 ~ latest

The version is still the same with the Pravega client version, but the connector starts to support multiple Flink versions. Users should provide the Flink major version 1.x in the middle of the artifact name to use the Pravega Flink connector. It maintains the most recent three minor version of Flink. See below table for the supported versions.

Connector release Latest Flink version Supported Flink versions
0.6.0/0.6.1/0.6.2/0.7.0 1.9 1.9, 1.8, 1.7
0.7.1/0.8.0/0.8.1 1.10 1.10, 1.9, 1.8
0.9.0 1.11 1.11, 1.10, 1.9
0.10.1 1.13 1.13, 1.12, 1.11
<dependency>
    <groupId>io.pravega</groupId>
    <artifactId>pravega-connectors-flink-1.10_2.12</artifactId>
    <version>0.8.0</version>
</dependency>

Branching

In order to adapt the different API changes in different Flink version, the connector code is diverged into three branches. Targeting a certain version of release, The 3 branches are named as master, r0.a-flink1.x, r0.a-flink1.y. master is always targeting the latest Flink version and the upcoming Pravega connector release version. The other two are named after the release version and Flink version, 0.a stands for the release version and 1.x stands for the Flink Major-Minor version.

Pull requests

By default, all pull requests should be targeted to master branch, and then carefully cherry-picked by the maintainer if needed. If it is a change for a specific Flink version, we need to mention it in the PR discription and target the PR to the correct branch.