You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Michael Semb Wever (Jira)" <ji...@apache.org> on 2026/09/20 13:40:00 UTC

[jira] [Commented] (CASSANDRA-21700) Index hints serialization rejects a count that the validation accepts

    [ https://issues.apache.org/jira/browse/CASSANDRA-21700?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18117302#comment-18117302 ] 

Michael Semb Wever commented on CASSANDRA-21700:
------------------------------------------------

CI results.

*{{mck/CASSANDRA\-21700/6.0}}*: UNSTABLE, [cassandra-6.0 #72|https://astro-cass.ci/job/cassandra-6.0/72] at [cf78e9edac11|https://github.com/thelastpickle/cassandra/commit/cf78e9edac1121b5702fedd3548f43bf260d2b3d], profile pre-commit w/ upgrades.  Passed 113880 – Failed 16 – Skipped 2913.
16 failures,
* unproven, 5 failures: [dtest-novnode.repair_tests.repair_test.TestRepair.test_wide_row_repair_lcs|https://astro-cass.ci/job/cassandra-6.0/72/testReport/dtest-novnode.repair_tests.repair_test/TestRepair/], [dtest-upgrade.upgrade_tests.cql_tests.TestCQLNodes2RF1_Upgrade_indev_4_0_x_To_indev_6_0_x.test_deleted_row_select|https://astro-cass.ci/job/cassandra-6.0/72/testReport/dtest-upgrade.upgrade_tests.cql_tests/TestCQLNodes2RF1_Upgrade_indev_4_0_x_To_indev_6_0_x/], [dtest-upgrade.upgrade_tests.cql_tests.TestCQLNodes3RF3_Upgrade_indev_4_0_x_To_indev_6_0_x.test_nonpure_function_collection|https://astro-cass.ci/job/cassandra-6.0/72/testReport/dtest-upgrade.upgrade_tests.cql_tests/TestCQLNodes3RF3_Upgrade_indev_4_0_x_To_indev_6_0_x/], [dtest.write_failures_test.TestWriteFailures.test_counter|https://astro-cass.ci/job/cassandra-6.0/72/testReport/dtest.write_failures_test/TestWriteFailures/], [simulator.test.ShortPaxosSimulationTest.selfReconcileTest|https://astro-cass.ci/job/cassandra-6.0/72/testReport/org.apache.cassandra.simulator.test/ShortPaxosSimulationTest/]
* flaky, 10 failures: [distributed.test.accord.InteropAccordCQLTest.testCASSimulatorLite|https://butler.cassandra.apache.org/#/ci/upstream/workflow/Cassandra-6.0/failure/org.apache.cassandra.distributed.test.accord/InteropAccordCQLTest/testCASSimulatorLite] (3 times), [service.accord.journal.AccordJournalBurnTest.testOne|https://butler.cassandra.apache.org/#/ci/upstream/workflow/Cassandra-6.0/failure/org.apache.cassandra.service.accord.journal/AccordJournalBurnTest/testOne], [simulator.test.AccordHarrySimulationTest.test|https://butler.cassandra.apache.org/#/ci/upstream/workflow/Cassandra-6.0/failure/org.apache.cassandra.simulator.test/AccordHarrySimulationTest/test], [simulator.test.EpochStressTest.manyEpochsAndAccordConverges|https://butler.cassandra.apache.org/#/ci/upstream/workflow/Cassandra-6.0/failure/org.apache.cassandra.simulator.test/EpochStressTest/manyEpochsAndAccordConverges], [simulator.test.ShortAccordSimulationTest.simulationTest|https://butler.cassandra.apache.org/#/ci/upstream/workflow/Cassandra-6.0/failure/org.apache.cassandra.simulator.test/ShortAccordSimulationTest/simulationTest], [simulator.test.SingleNodeSingleTableASTTest.accordFull|https://butler.cassandra.apache.org/#/ci/upstream/workflow/Cassandra-6.0/failure/org.apache.cassandra.simulator.test/SingleNodeSingleTableASTTest/accordFull], [simulator.test.SingleNodeSingleTableASTTest.accordMixedReads|https://butler.cassandra.apache.org/#/ci/upstream/workflow/Cassandra-6.0/failure/org.apache.cassandra.simulator.test/SingleNodeSingleTableASTTest/accordMixedReads], [simulator.test.TrivialSimulationTest.trivialTest|https://butler.cassandra.apache.org/#/ci/upstream/workflow/Cassandra-6.0/failure/org.apache.cassandra.simulator.test/TrivialSimulationTest/trivialTest]
* known, 1 failure: [simulator.test.HarrySimulatorTest.test|https://butler.cassandra.apache.org/#/ci/upstream/workflow/Cassandra-6.0/failure/org.apache.cassandra.simulator.test/HarrySimulatorTest/test] (CASSANDRA-19279)
[Cassandra-6.0|https://butler.cassandra.apache.org/#/ci/upstream/jobs/branch/cassandra-6.0] recent failure counts: [#86|https://ci-cassandra.apache.org/job/Cassandra-6.0/86/] 30, [#87|https://ci-cassandra.apache.org/job/Cassandra-6.0/87/] 25, [#88|https://ci-cassandra.apache.org/job/Cassandra-6.0/88/] 20, [#89|https://ci-cassandra.apache.org/job/Cassandra-6.0/89/] 38, [#90|https://ci-cassandra.apache.org/job/Cassandra-6.0/90/] 19.

*{{mck/CASSANDRA\-21700/trunk}}*: UNSTABLE, [cassandra #37|https://astro-cass.ci/job/cassandra/37] at [b76ea967696a|https://github.com/thelastpickle/cassandra/commit/b76ea967696a89dcc37b1c1007e7c9633298cce2], profile pre-commit w/ upgrades.  Passed 114106 – Failed 11 – Skipped 2394.
11 failures,
* unproven, 3 failures: [dtest-novnode.repair_tests.repair_test.TestRepair.test_wide_row_repair_lcs|https://astro-cass.ci/job/cassandra/37/testReport/dtest-novnode.repair_tests.repair_test/TestRepair/], [simulator.test.ShortPaxosSimulationTest.selfReconcileTest|https://astro-cass.ci/job/cassandra/37/testReport/org.apache.cassandra.simulator.test/ShortPaxosSimulationTest/], [transport.SimpleClientPerfTest.measureLargeWithCompression[6/v6-beta]|https://astro-cass.ci/job/cassandra/37/testReport/transport/SimpleClientPerfTest/] (404 on /api/upstream/failures/linked_issues/org.apache.cassandra.transport.SimpleClientPerfTest-cassandra/testtag_IS_UNDEFINED/measureLargeWithCompression%5B6/v6-beta%5D-cassandra.testtag_IS_UNDEFINED: No message available, so the local re-run decides it)
* flaky, 8 failures: [cql3.RandomSchemaTest.test|https://butler.cassandra.apache.org/#/ci/upstream/workflow/Cassandra-trunk/failure/org.apache.cassandra.cql3/RandomSchemaTest/test], [distributed.test.accord.InteropAccordCQLTest.testCASSimulatorLite|https://butler.cassandra.apache.org/#/ci/upstream/workflow/Cassandra-trunk/failure/org.apache.cassandra.distributed.test.accord/InteropAccordCQLTest/testCASSimulatorLite] (2 times), [simulator.test.AccordHarrySimulationTest.test|https://butler.cassandra.apache.org/#/ci/upstream/workflow/Cassandra-trunk/failure/org.apache.cassandra.simulator.test/AccordHarrySimulationTest/test], [simulator.test.EpochStressTest.manyEpochsAndAccordConverges|https://butler.cassandra.apache.org/#/ci/upstream/workflow/Cassandra-trunk/failure/org.apache.cassandra.simulator.test/EpochStressTest/manyEpochsAndAccordConverges], [simulator.test.ShortAccordSimulationTest.simulationTest|https://butler.cassandra.apache.org/#/ci/upstream/workflow/Cassandra-trunk/failure/org.apache.cassandra.simulator.test/ShortAccordSimulationTest/simulationTest], [simulator.test.SingleNodeSingleTableASTTest.accordFull|https://butler.cassandra.apache.org/#/ci/upstream/workflow/Cassandra-trunk/failure/org.apache.cassandra.simulator.test/SingleNodeSingleTableASTTest/accordFull], [simulator.test.SingleNodeSingleTableASTTest.accordMixedReads|https://butler.cassandra.apache.org/#/ci/upstream/workflow/Cassandra-trunk/failure/org.apache.cassandra.simulator.test/SingleNodeSingleTableASTTest/accordMixedReads]
[Cassandra-trunk|https://butler.cassandra.apache.org/#/ci/upstream/jobs/branch/trunk] recent failure counts: [#2549|https://ci-cassandra.apache.org/job/Cassandra-trunk/2549/] 58, [#2550|https://ci-cassandra.apache.org/job/Cassandra-trunk/2550/] 34, [#2551|https://ci-cassandra.apache.org/job/Cassandra-trunk/2551/] 38, [#2553|https://ci-cassandra.apache.org/job/Cassandra-trunk/2553/] 0, [#2555|https://ci-cassandra.apache.org/job/Cassandra-trunk/2555/] 29.

Attached: [^ci_summary_thelastpickle_mck-CASSANDRA-21700-6.0_72.html], [^results_details_thelastpickle_mck-CASSANDRA-21700-6.0_72.tar.xz], [^ci_summary_thelastpickle_mck-CASSANDRA-21700-trunk_37.html], [^results_details_thelastpickle_mck-CASSANDRA-21700-trunk_37.tar.xz]


> Index hints serialization rejects a count that the validation accepts
> ---------------------------------------------------------------------
>
>                 Key: CASSANDRA-21700
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-21700
>             Project: Apache Cassandra
>          Issue Type: Bug
>          Components: Feature/2i Index
>            Reporter: Michael Semb Wever
>            Priority: Normal
>             Fix For: 6.0.x, 7.x
>
>         Attachments: ci_summary_thelastpickle_mck-CASSANDRA-21700-6.0_72.html, ci_summary_thelastpickle_mck-CASSANDRA-21700-trunk_37.html, results_details_thelastpickle_mck-CASSANDRA-21700-6.0_72.tar.xz, results_details_thelastpickle_mck-CASSANDRA-21700-trunk_37.tar.xz
>
>
> {{IndexHints.fromCQLNames}} rejects a count above the maximum:
> {code:java}
> if (included != null && included.size() > maxIncludedOrExcludedIndexCount())
>     throw new InvalidRequestException(TOO_MANY_INDEXES_ERROR + included.size());
> {code}
> so a {{SELECT}} may name exactly {{maxIncludedOrExcludedIndexCount()}} included or excluded indexes. The serializer then asserted a count strictly below the same maximum:
> {code:java}
> assert n < maxIncludedOrExcludedIndexCount() : TOO_MANY_INDEXES_ERROR + n;
> {code}
> The two disagree at the boundary. A query that names the maximum passes validation on the coordinator and then throws an {{AssertionError}} when the read command is serialized for a replica, and the daemon runs with assertions enabled. An operator meets this by setting {{secondary_indexes_per_table_fail_threshold}} to N and naming N indexes, or by naming 128 indexes when that guardrail is unset.
> The patch relaxes the assertion to {{<=}}, and makes {{maxIncludedOrExcludedIndexCount()}} package-private so the test can read the same limit. The count is written with {{writeVInt32}}, so the boundary carries no on-the-wire risk.
> Patch: [mck/CASSANDRA-21700/trunk|https://github.com/thelastpickle/cassandra/tree/mck/CASSANDRA-21700/trunk]
> Provenance: [d29e4a67f7|https://github.com/datastax/cassandra/commit/d29e4a67f76d2c812f2a3a283910876797ff2f9c] by [~brandon.williams]. That commit makes the same one-character change, and also ignores an {{UnknownIndexException}} during deserialization so a hint for an index that has not yet propagated is dropped rather than failing the read. This patch leaves that part out, because silently dropping a hint changes what the query does and needs its own discussion. That commit carries no test; this patch adds one.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org