KAFKA-6054: Fix upgrade path from Kafka Streams v0.10.0#4758
KAFKA-6054: Fix upgrade path from Kafka Streams v0.10.0#4758mjsax merged 6 commits intoapache:0.10.2from
Conversation
|
This is a port of #4746 for |
|
Upgrade system test passed: https://jenkins.confluent.io/job/system-test-kafka-branch-builder/1563/ Triggered all Streams system tests here: https://jenkins.confluent.io/job/system-test-kafka-branch-builder/1564/ |
|
Refer to this link for build results (access rights to CI server needed): |
|
Refer to this link for build results (access rights to CI server needed): |
|
Refer to this link for build results (access rights to CI server needed): |
|
Refer to this link for build results (access rights to CI server needed): |
|
Refer to this link for build results (access rights to CI server needed): |
There was a problem hiding this comment.
This is a bit verbose as we just mentioned it earlier.
There was a problem hiding this comment.
Not clear what does this comment mean?
There was a problem hiding this comment.
We have only access to 0.10.1.1 (official release) here but not to 0.10.1 (ie, Github branch that contains the fix for KIP-268) -- thus, we cannot test upgrade from 0.10.0 to 0.10.1 here.
There was a problem hiding this comment.
Okay, the misleading part is because you mentioned broker_version, but I guess you meant new_version?
There was a problem hiding this comment.
For this upgrade, we do not need two rolling bounces with upgrade.from config I think?
There was a problem hiding this comment.
Yes. The test does only do one rolling bounce. Not sure what you mean? Is the comment confusing? It does actually no say anything about the number of rolling bounces.
There was a problem hiding this comment.
My bad, I'd better leave this comment on line 57 below. I meant that we do not need to specify 0.10.0 for the upgrade.from parameter, but instead we should be able to just write
self.do_rolling_bounce(p, "", new_version, counter)
Is that right?
There was a problem hiding this comment.
This comment seems misplaced.
There was a problem hiding this comment.
Hmm.. this makes me thinking, that are we effectively adding one more step on release process, that the release manager need to modify this value?
There was a problem hiding this comment.
That is correct. Thinking about it, I am wondering if we could get the value from gradle.properties file?
There was a problem hiding this comment.
I do not know how to do that.. or if it is even possible. I think adding this extra step is not too bad as in release.py we already wrap some other places where we need to remove -SNAPSHOT anyways, this is just for confirming, that in trunk maybe we'd update release.py as well.
|
Note: Java 9 does not work on old |
|
Refer to this link for build results (access rights to CI server needed): |
There was a problem hiding this comment.
Okay, the misleading part is because you mentioned broker_version, but I guess you meant new_version?
There was a problem hiding this comment.
My bad, I'd better leave this comment on line 57 below. I meant that we do not need to specify 0.10.0 for the upgrade.from parameter, but instead we should be able to just write
self.do_rolling_bounce(p, "", new_version, counter)
Is that right?
There was a problem hiding this comment.
I do not know how to do that.. or if it is even possible. I think adding this extra step is not too bad as in release.py we already wrap some other places where we need to remove -SNAPSHOT anyways, this is just for confirming, that in trunk maybe we'd update release.py as well.
|
Updated this with System tests passed: https://jenkins.confluent.io/job/system-test-kafka-branch-builder/1589/ |
|
Refer to this link for build results (access rights to CI server needed): |
|
Retest this please |
|
Refer to this link for build results (access rights to CI server needed): |
John's review Guozhang's follow up
8fbf6ee to
1cb064a
Compare
|
Refer to this link for build results (access rights to CI server needed): |
|
Merging this to |
vvcephei
left a comment
There was a problem hiding this comment.
Ah! you win. Well, here's my thoughts anyway ;)
| final Properties streamsConfiguration = new Properties(); | ||
| streamsConfiguration.put(StreamsConfig.APPLICATION_ID_CONFIG, "fanout-integration-test"); | ||
| streamsConfiguration.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, CLUSTER.bootstrapServers()); | ||
| streamsConfiguration.setProperty(StreamsConfig.STATE_DIR_CONFIG, TestUtils.tempDirectory().getPath()); |
There was a problem hiding this comment.
getAbsolutePath?
(as in https://github.com/apache/kafka/pull/4746/files#diff-13c6128851d974bddf5bb1132b1208f4R120)
| }); | ||
|
|
||
| data.process(SmokeTestUtil.printProcessorSupplier("data")); | ||
| data.process(SmokeTestUtil.<String, Integer>printProcessorSupplier("data")); |
There was a problem hiding this comment.
can these be data.process(SmokeTestUtil.<>printProcessorSupplier("data")) ?
There was a problem hiding this comment.
Just double checked. data.process(SmokeTestUtil.printProcessorSupplier("data")) compiles
| allData.put(data[i].key, new HashSet<Integer>()); | ||
| } | ||
| Random rand = new Random(); | ||
| final Random rand = new Random(); |
There was a problem hiding this comment.
Admittedly, this is a random time to bring this up, but a pattern that I like for this is:
final long seed = providedSeed != null ? providedSeed : new Random().nextLong();
System.out.println("Seed is: " + seed);
final Random rand = new Random(seed);where providedSeed comes from an env variable, command-line arg, whatever...
This way you get the same default behavior (pseudorandomly generated sequence of test values), but you also have the option to deterministically reproduce a previous pseudorandom sequence from a prior run. This can be helpful in diagnosing flaky tests.
Not saying this is needed here; I just wanted to share the pattern.
There was a problem hiding this comment.
Basically I agree. So far, we did not have any issues with Random introducing flakiness that we cannot reproduce. However, I am not sure if seed = new Random().nextLong() is a good seed -- isn't this also deterministic? I am used to seed = System.currentTimeMillis() ?
|
Merged to Follow up PR to address missed comments: #4778 |
No description provided.