Here's an update on the Pulsar 4.0 release timeline.

We are currently slightly behind the original schedule; however, we
still have a good chance of keeping the release schedule on track
without major slippage.

There are currently a few release blockers for 4.0 (tagged issues:
https://github.com/apache/pulsar/labels/release%2Fblocker). The most
important one is about handling the Protobuf CVE-2024-7254:
https://github.com/apache/pulsar/issues/23341. That CVE is categorized
as high (8.7/10). It's a potential denial-of-service issue that
doesn't pose a practical risk for Pulsar users. Since it's in the high
category, we must address it before the release.

Addressing CVE-2024-7254 will require a Bookkeeper release since
protobuf-java can only be upgraded in Pulsar when protobuf-java is
first upgraded in Bookkeeper together with a compatible grpc-java
version. The protobuf-java cross-version runtime guarantee is
documented at https://protobuf.dev/support/cross-version-runtime-guarantee/.
There is no real guarantee across versions for protoc-generated stub
classes. A similar policy applies to grpc stubs generated with
protoc-gen-grpc-java. A specific grpc-java version is compatible with
certain protobuf-java versions. There's more information about this
coupling in the Bookkeeper dev mailing list thread:
https://lists.apache.org/thread/odg7p617zwqjngq6fk6qf8xfzbfwgfgq.
Unfortunately, I haven't had the chance to put in the effort to break
the dependency cycles. One additional complexity with Pulsar is the
Pulsar release where all Pulsar and Bookkeeper dependencies are placed
in a single "lib" directory. All dependencies must be compatible since
at runtime both Pulsar and Bookkeeper will contain the same jar files
on the classpath. In addition to just plain classes, Pulsar adds the
Metadata Store implementations which Bookkeeper also uses. That's how
Bookkeeper can also use the same Metadata Store implementations as
Pulsar.

There's a plan to decouple the Pulsar client from the protobuf-java
version so that client applications could choose to use a
protobuf-java version that is compatible with their own
protoc-generated stub classes. The issue to track this is
https://github.com/apache/pulsar/issues/22263. There are currently
issues with the Pulsar shaded client shading configurations which
include protobuf-java in the shaded jar as classes. This prevents
client applications from using other protobuf-java versions. This
should be fixed before 4.0.

Besides the release blockers, I'd like to have an implementation ready
for "PIP-379: Key_Shared Draining Hashes for Improved Message
Ordering" as part of Pulsar 4.0, given that the proposal is ready to
be voted upon and we have sufficient confidence in including it as
part of Pulsar 4.0. There's also another PIP that I'll propose to
finish the ManagedLedger cleanup work that was started as part of the
email thread: https://lists.apache.org/thread/b2f4vkql693x3frdxm75tndk686crh9k.
The last part is https://github.com/apache/pulsar/pull/23313, which is
not yet complete. I'll document the details about the ManagedLedger
cleanup in a new PIP.

Please reply to this email thread if there are other important PIPs
that aren't yet completed but community members see as valuable
additions to Pulsar 4.0 LTS. I can see that "PIP-381: Handle large
PositionInfo state" is a good candidate to be included too. I hope
that the small detail of having the feature flag to control the
feature could be considered during the implementation. That will allow
opting out from using the feature due to risk management concerns. For
example, that might be useful in ensuring that possible rollbacks are
smooth and a user might want to enable the feature only after
migrating to Pulsar 4.0 and having their environment running for some
time.

Now finally to the Pulsar 4.0 release.

I'm going to rename the first two releases as "preview releases" since
we don't intend to release them or vote on them. It's currently a very
confusing part of our release process documented at
https://pulsar.apache.org/contribute/release-policy/#release-cycles.
I'll update the process documentation too. I was confused when Pulsar
3.2.0 preview releases were running:
https://lists.apache.org/thread/mlj710kwgn00zx9mmc4c8bshnvc5bfo4.

I'm volunteering to handle the release manager role for Pulsar 4.0.
Here's the updated schedule. One of the unresolved parts is how to
handle the Bookkeeper release so that we can address Protobuf
CVE-2024-7254 before Pulsar 4.0 is released.

The target publishing date of the 4.0 release candidate 1 is the same
date as it was in the previous timeline, Oct 10th. The clarification
here is that this is the publishing date of release candidate 1. We'll
set the target date for announcing 4.0.0 on Oct 17th.

2024-09-26 - Target publishing date for 4.0 preview 1
2024-10-03 - Target publishing date for 4.0 preview 2
2024-10-07 - Code freeze for 4.0 by branching branch-4.0 from the master branch
2024-10-10 - Target publishing date for 4.0 release candidate 1
2024-10-15 - Reserved for 4.0 release candidate 2 if it's needed
2024-10-17 - Announcement date for 4.0.0

I'll start a discussion on the Bookkeeper dev mailing list about
releases that include Protobuf 3.25.5 to address CVE-2024-7254
together with a compatible grpc-java version. Since we are currently
using Bookkeeper 4.17.1 in the master branch, it might be the safest
option to continue using this release branch for Pulsar 4.0.0.

Please reply to this thread if you have any feedback/questions or
would like to volunteer in addressing the remaining release blockers
of 4.0.

We have busy weeks ahead in the Apache Pulsar project, lets roll up
our sleeves and get to work!

-Lari

On Wed, 11 Sept 2024, 7.43 Lari Hotari, <lhot...@apache.org> wrote:
>
> Hi all,
>
> I'm volunteering to handle the release manager role for Pulsar 4.0.
> For the timeline, I'll suggest a slight update. Instead of having 3 release
> candidates, we would have 2 planned release candidates.
> The target release date remains Oct 10th.
>
> 2024-09-23 - Code freeze for 4.0 by branching branch-4.0 from the master 
> branch
> 2024-09-26 - Target release date for 4.0 release candidate 1
> 2024-10-03 - Target release date for 4.0 release candidate 2
> 2024-10-10 - Target release date for 4.0
>
> Regards,
>
> -Lari
>
> On 2024/08/09 08:36:05 Lari Hotari wrote:
> > Hi all,
> >
> > We have the next LTS release, Pulsar 4.0, scheduled for October.
> > For LTS, releases, our release policy states a 3 week recycle [1].
> >
> > Suggested timeline:
> > 2024-08-09 - Create & merge PR to bump master branch's version to 
> > 4.0.0-SNAPSHOT
> > 2024-09-15 - code freeze for 4.0 by branching branch-4.0 from master branch
> > 2024-09-19 - target release date of 4.0 release candidate 1
> > 2024-09-26 - target release date of 4.0 release candidate 2
> > 2024-10-03 - target release date of 4.0 release candidate 3
> > 2024-10-10 - target release date of 4.0
> >
> > Unless there's another proposal for the timeline, let's do a lazy consensus 
> > decision on this timeline in the next 72 hours. We can always adjust this 
> > if there's a need to do so.
> >
> > -Lari
> >
> > 1 - https://pulsar.apache.org/contribute/release-policy/#release-cycles
> >

Reply via email to