I fully understand you. Although I have that luxury to use more containers, I simply feel that rerunning the same code with different configurations which do not impact that code is just a waste of resources and money.
- - -- --- ----- -------- ------------- Jacek Lewandowski czw., 15 lut 2024 o 08:41 Štefan Miklošovič <[email protected]> napisał(a): > By the way, I am not sure if it is all completely transparent and > understood by everybody but let me guide you through a typical patch which > is meant to be applied from 4.0 to trunk (4 branches) to see how it looks > like. > > I do not have the luxury of running CircleCI on 100 containers, I have > just 25. So what takes around 2.5h for 100 containers takes around 6-7 for > 25. That is a typical java11_pre-commit_tests for trunk. Then I have to > provide builds for java17_pre-commit_tests too, that takes around 3-4 hours > because it just tests less, let's round it up to 10 hours for trunk. > > Then I need to do this for 5.0 as well, basically double the time because > as I am writing this the difference is not too big between these two > branches. So 20 hours. > > Then I need to build 4.1 and 4.0 too, 4.0 is very similar to 4.1 when it > comes to the number of tests, nevertheless, there are workflows for Java 8 > and Java 11 for each so lets say this takes 10 hours again. So together I'm > 35. > > To schedule all the builds, trigger them, monitor their progress etc is > work in itself. I am scripting this like crazy to not touch the UI in > Circle at all and I made my custom scripts which call Circle API and it > triggers the builds from the console to speed this up because as soon as a > developer is meant to be clicking around all day, needing to tracking the > progress, it gets old pretty quickly. > > Thank god this is just a patch from 4.0, when it comes to 3.0 and 3.11 > just add more hours to that. > > So all in all, a typical 4.0 - trunk patch is tested for two days at > least, that's when all is nice and I do not need to rework it and rurun it > again ... Does this all sound flexible and speedy enough for people? > > If we dropped the formal necessity to build various jvms it would > significantly speed up the development. > > > On Thu, Feb 15, 2024 at 8:10 AM Jacek Lewandowski < > [email protected]> wrote: > >> Excellent point, I was saying for some time that IMHO we can reduce >>> to running in CI at least pre-commit: >>> 1) Build J11 2) build J17 >>> 3) run tests with build 11 + runtime 11 >>> 4) run tests with build 11 and runtime 17. >> >> >> Ekaterina, I was thinking more about: >> 1) build J11 >> 2) build J17 >> 3) run tests with build J11 + runtime J11 >> 4) run smoke tests with build J17 and runtime J17 >> >> Again, I don't see value in running build J11 and J17 runtime >> additionally to J11 runtime - just pick one unless we change something >> specific to JVM >> >> If we need to decide whether to test the latest or default, I think we >> should pick the latest because this is actually Cassandra 5.0 defined as a >> set of new features that will shine on the website. >> >> Also - we have configurations which test some features but they more like >> dimensions: >> - commit log compression >> - sstable compression >> - CDC >> - Trie memtables >> - Trie SSTable format >> - Extended deletion time >> ... >> >> Currently, with what we call the default configuration is tested with: >> - no compression, no CDC, no extended deletion time >> - *commit log compression + sstable compression*, no cdc, no extended >> deletion time >> - no compression, *CDC enabled*, no extended deletion time >> - no compression, no CDC, *enabled extended deletion time* >> >> This applies only to unit tests of course >> >> Then, are we going to test all of those scenarios with the "latest" >> configuration? I'm asking because the latest configuration is mostly about >> tries and UCS and has nothing to do with compression or CDC. Then why the >> default configuration should be tested more thoroughly than latest which >> enables essential Cassandra 5.0 features? >> >> I propose to significantly reduce that stuff. Let's distinguish the >> packages of tests that need to be run with CDC enabled / disabled, with >> commitlog compression enabled / disabled, tests that verify sstable formats >> (mostly io and index I guess), and leave other parameters set as with the >> latest configuration - this is the easiest way I think. >> >> For dtests we have vnodes/no-vnodes, offheap/onheap, and nothing about >> other stuff. To me running no-vnodes makes no sense because no-vnodes is >> just a special case of vnodes=1. On the other hand offheap/onheap buffers >> could be tested in unit tests. In short, I'd run dtests only with the >> default and latest configuration. >> >> Sorry for being too wordy, >> >> >> czw., 15 lut 2024 o 07:39 Štefan Miklošovič <[email protected]> >> napisał(a): >> >>> Something along what Paulo is proposing makes sense to me. To sum it up, >>> knowing what workflows we have now: >>> >>> java17_pre-commit_tests >>> java11_pre-commit_tests >>> java17_separate_tests >>> java11_separate_tests >>> >>> We would have couple more, together like: >>> >>> java17_pre-commit_tests >>> java17_pre-commit_tests-latest-yaml >>> java11_pre-commit_tests >>> java11_pre-commit_tests-latest-yaml >>> java17_separate_tests >>> java17_separate_tests-default-yaml >>> java11_separate_tests >>> java11_separate_tests-latest-yaml >>> >>> To go over Paulo's plan, his steps 1-3 for 5.0 would result in requiring >>> just one workflow >>> >>> java11_pre-commit_tests >>> >>> when no configuration is touched and two workflows >>> >>> java11_pre-commit_tests >>> java11_pre-commit_tests-latest-yaml >>> >>> when there is some configuration change. >>> >>> Now the term "some configuration change" is quite tricky and it is not >>> always easy to evaluate if both default and latest yaml workflows need to >>> be executed. It might happen that a change is of such a nature that it does >>> not change the configuration but it is necessary to verify that it still >>> works with both scenarios. -latest.yaml config might be such that a change >>> would make sense to do in isolation for default config only but it would >>> not work with -latest.yaml too. I don't know if this is just a theoretical >>> problem or not but my gut feeling is that we would be safer if we just >>> required both default and latest yaml workflows together. >>> >>> Even if we do, we basically replace "two jvms" builds for "two yamls" >>> builds but I consider "two yamls" builds to be more valuable in general >>> than "two jvms" builds. It would take basically the same amount of time, we >>> would just reoriented our building matrix from different jvms to different >>> yamls. >>> >>> For releases we would for sure need to just run it across jvms too. >>> >>> On Thu, Feb 15, 2024 at 7:05 AM Paulo Motta <[email protected]> wrote: >>> >>>> > Perhaps it is also a good opportunity to distinguish subsets of >>>> tests which make sense to run with a configuration matrix. >>>> >>>> Agree. I think we should define a “standard/golden” configuration for >>>> each branch and minimally require precommit tests for that configuration. >>>> Assignees and reviewers can determine if additional test variants are >>>> required based on the patch scope. >>>> >>>> Nightly and prerelease tests can be run to catch any issues outside the >>>> standard configuration based on the supported configuration matrix. >>>> >>>> On Wed, 14 Feb 2024 at 15:32 Jacek Lewandowski < >>>> [email protected]> wrote: >>>> >>>>> śr., 14 lut 2024 o 17:30 Josh McKenzie <[email protected]> >>>>> napisał(a): >>>>> >>>>>> When we have failing tests people do not spend the time to figure out >>>>>> if their logic caused a regression and merge, making things more >>>>>> unstable… >>>>>> so when we merge failing tests that leads to people merging even more >>>>>> failing tests... >>>>>> >>>>>> What's the counter position to this Jacek / Berenguer? >>>>>> >>>>> >>>>> For how long are we going to deceive ourselves? Are we shipping those >>>>> features or not? Perhaps it is also a good opportunity to distinguish >>>>> subsets of tests which make sense to run with a configuration matrix. >>>>> >>>>> If we don't add those tests to the pre-commit pipeline, "people do >>>>> not spend the time to figure out if their logic caused a regression and >>>>> merge, making things more unstable…" >>>>> I think it is much more valuable to test those various configurations >>>>> rather than test against j11 and j17 separately. I can see a really little >>>>> value in doing that. >>>>> >>>>> >>>>>
