CNDB-18201: support streaming with mixed MS versions#2476
Conversation
Checklist before you submit for review
|
adelapena
left a comment
There was a problem hiding this comment.
It seems testMixedMessagingVersionUncompressedStreamingDs12ToDs11 is failing.
How would this work when we have a mix of nodes/writers without this patch and the current messaging version, and writers without this patch and an upgraded messaging version? Should we wait until all the involved writers have this patch to bump the messaging version?
It failed to reach schema agreement, I think it was an infra problem. The test passes for me locally.
Yes, I think we need this patch in before we can bump the version. |
For some reason the two Ds12ToDs11 variants consistently fail to reach schema agreement when I run them locally. But since they work locally for you and in CI, I guess it should be something related to my environment. Is there a CNDB PR bumping the CC version to include this? |
If it's failing for you too, that concerns me. I looped it but could not reproduce, however I pushed an update that uses a slightly relaxed call for schema creation, let's see how that fares.
Not yet, let me create one after CI finishes on this update. |
I was running it with J11, and with that Java version and the last changes it still consistently timeouts. However with J22 it passes most of the time, although I have still hit occasional timeouts while waiting for the schema agreement in one of those two tests. I have hit 2 failures in 7 runs. When they work they pass in ~9 seconds, so I'm not sure is a question of waiting for longer. |
I switched to J11 and was able to loop 50 times.
I can loop many times with J22 too, and it looks like it passed in CI this time. Not being a question of waiting longer makes me feel like there is meat on that bone though, any chance you can dig in and see what's hanging it? In the last commit I removed the requirement of a single schema version being present, now only requiring that the table is present everywhere, so if that is failing easily then something seems fundamentally wrong. |
|
So far I haven't found anything. Unfortunately I'm not very familiar with schema propagation. This is the output of a failed run: testMixedMessagingVersionStreamingDs12ToDs11_output.txt I have run the test on unpatched main, only until the creation of the keyspace, and to my surprise it occasionally hits the same timeout, although much less often. |
|
I added ds12 to ds12 tests, see if either of these fail the schema creation for you. If so, then I think we can safely eliminate the streaming as the cause (which already seems to be the case from your log too.) |
|
A few runs of the ds12 to ds12 tests pass for me. I have been running the tests in idea. However, they pass dozen of times when running them in the command line, in a loop, with: and So it might be some problem with my env, and the CI failure was just a normal timeout? I have tried two different versions of IDEA. Did you run them on IDEA? |
Was that in IDEA?
I think that's likely. I went back to the original commit using schemaChange since that is used widely. Let's see how CI fares this time.
Yes, I could not reproduce the failures in IDEA. |
Yes, both. Definitely this looks like an issue on my end. It's quite surprising though that it happens much more often with the ds12 to ds11 versions. I'll take another look on Monday and let go if nothing comes up. |
adelapena
left a comment
There was a problem hiding this comment.
It seems the failure is due to something on my env, and I guess the only failure on the multiple CI runs was due to a legitimate timeout, so I'm not blocking this any longer.
The failure of SlowSAIQueryLoggerTest will go out after rebase. The rest of CI looks good to me.
We need the matching CNDB PR before merging this, probably with a simple test to verify that it works on Astra too.
MessagingService.accept_streaming now accepts a range between VERSION_40 and current_version. Inbound streaming uses the negotiated version and outbound streaming stores it as a Netty channel attribute that control/file messages use for serialization.
…ngTest.java Co-authored-by: Andrés de la Peña <adelapena@users.noreply.github.com>
We shall see, I had to rebase for the CNDB PR. |
I think it's the one fixed by https://github.com/riptano/cndb/issues/17291, it passes locally after local rebase. |
❌ Build ds-cassandra-pr-gate/PR-2476 rejected by Butler3 regressions found Found 3 new test failures
Found 6 known test failures |
|
Looks like it passed. The CNDB PR is at https://github.com/riptano/cndb/pull/18345 |
What is the issue
Fixes #18201
What does this PR fix and why was it fixed
MessagingService.accept_streaming now accepts a range between VERSION_40 and current_version. Inbound streaming uses the negotiated version and outbound streaming stores it as a Netty channel attribute that control/file messages use for serialization.