Hi Piotr,

Thanks for bringing the issue up. I agree that this is something we should look 
into improving.

Strictly speaking, I don’t think it is an issue only limited to after a RC vote 
has started.
Taking 1.5.0 as an example, release-1.5 was branched out at the announcement 
for feature freeze for nearly a month before the first RC for 1.5.0 was 
created.
That period of time was meant for release testing before the actual votes took 
place, but since commits still went through to release-1.5 during this time 
without much restrictions, there never really was a point-in-time where 
individual testing efforts could have a commonly agreed scope.
We usually create RC0s for the initial testing efforts, but by the time RC1 is 
out, it is hard to say that test efforts on RC0 were still valid because there 
was little restraint on what was merged in between.

As for the issue under the context of during  RC voting:
Up to now, the default way we have mostly used to deal with non-blocking bug 
fixes was to “not block RC votes on them, merge them to the release branch and 
see if it happens to get in if the previous RC was cancelled.”
Sometimes, some critical bug fixes were made non-blocking due to the fact that 
it was introduced already in a previous released version.
The fact that these critical bug fixes sneak into the release in the end, as 
you mentioned, arguably changes the scope of the release across RCs.
Previous RC voters usually expect that previous test efforts can be carried 
over to the new RC because additional commits to the new RC *should* only 
incrementally affect the scope.
As the case for the two bug fixes you pointed out (FLINK-9349 and FLINK-9295), 
it is arguable that isn’t the case, since a lot of our previous test efforts 
involved Kafka substantially.

Minor thing is that Jira issues should be updated accordingly. If you merge 
something to release branch, please pay attention to cancelled RCs and from 
which commit new RC is being created. 

I don’t think this is as minor as it seems. The fact that this correction is a 
very manual process that occurs at a non-anticipated event can easily lead to 
incorrect release notes (which I think has happened a few times already in the 
past, partially because of this issue).

I would propose that any merges to release branches during RC votes (after 
release testing kicked off) should go through release manager, so that he could 
decide whether to include such fixes or postpone them to next release. Maybe 
this would require to create separate release branches for 1.5.0 and 1.5.1. 

Would +1 to this. Just to rephrase this concretely by taking 1.5.0 as an 
example:
A specific release-1.5.0 release branch is created from release-1.5 as soon as 
feature freeze is announced.
All JIRAs resolved from this point on should have ‘fix version’ set as ‘1.5.1’, 
and commits only go to the release-1.5 branch. They will only be included in 
release-1.5.1 once that branches out to prepare for 1.5.1 release.
Any commits that wish to be included in release-1.5.0 strictly needs to go 
through the release manager; a commit that does go through to release-1.5.0 
should mean that a new RC should be created and current ongoing votes are 
cancelled.
Managing changing such JIRAs’ fix version from ‘1.5.1’ to ‘1.5.0’ should be 
much more easier, since that should happen along with the action of bringing 
over commits to release-1.5.0, and not at the event of an RC being cancelled 
and the commits just happen to sneak in.

For minor bug fix releases, it should be quite easy to execute this proposal.
For major releases, we might need to consider the overhead of cherry-picking 
commits over.
Again, looking at 1.5.0 - there were hundreds of commits that were merged to 
both master (1.6-SNAPSHOT) and release-1.5.
Assuming we had this process in place, how many of those would have also needed 
to be merged to release-1.5.0 (as decided by the release manager)?

OTOH, if such a process allows more control over scope creep / more valid and 
meaningful test efforts early on right after feature freeze, than the overhead 
might be worth it.

Cheers,
Gordon
On 24 May 2018 at 8:24:29 PM, Piotr Nowojski (pi...@data-artisans.com) wrote:

Hey,  

I would like to raise an issue that happensa at couple of times during 1.5.0 
RCx votings. There were some bug fixes like:  
https://issues.apache.org/jira/browse/FLINK-9349 
<https://issues.apache.org/jira/browse/FLINK-9349>  
https://issues.apache.org/jira/browse/FLINK-9295 
<https://issues.apache.org/jira/browse/FLINK-9295>  

That were merged to release branch after creating some RC, they were marked 
with fix versions set to 1.5.1 and new when previous RC vote was cancelled and 
new RC was created, they sneaked into 1.5.0.  

Minor thing is that Jira issues should be updated accordingly. If you merge 
something to release branch, please pay attention to cancelled RCs and from 
which commit new RC is being created.  

Much bigger issue is that when such fixes are sneaking so late to the release, 
they do not go through normal release testing procedure. I don’t know how 
should we handle such situations, but if something like that happened to your 
commits during this 1.5.0, please double check them when new RC comes out. They 
might require some manual testing or running some end to end tests.  

I would propose that any merges to release branches during RC votes (after 
release testing kicked off) should go through release manager, so that he could 
decide whether to include such fixes or postpone them to next release. Maybe 
this would require to create separate release branches for 1.5.0 and 1.5.1.  

Piotrek

Reply via email to