Skip to content

Conversation

dotnwat
Copy link
Member

@dotnwat dotnwat commented Sep 24, 2025

Backports Required

  • none - not a bug fix
  • none - this is a backport
  • none - issue does not exist in previous branches
  • none - papercut/not impactful enough to backport
  • v25.2.x
  • v25.1.x
  • v24.3.x

Release Notes

dotnwat and others added 7 commits September 24, 2025 12:15
We can see from azurite debug logs that the request appears to be
successfully processed and returning 201, but the redpanda client gets a
400. So it might be happening at a lower level in the Azurite server.
Ticket filed with Azurite, and we may have to revisit this.

Signed-off-by: Noah Watkins <[email protected]>
If we don't close the builder then we may not truncate or properly flush
the file to disk.
@Copilot Copilot AI review requested due to automatic review settings September 24, 2025 20:59
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds cloud topics testing support to the random node operations test and fixes several issues in the cloud topics reconciler component. The main purpose is to enhance test coverage for cloud topics functionality and improve the robustness of the cloud topics implementation.

Key changes:

  • Adds cloud topics workload to random node operations test with conditional enablement based on version compatibility
  • Refactors cloud topics manager to improve leadership change handling and topic ID mapping
  • Enhances resource cleanup with proper builder/reader closing and additional logging

Reviewed Changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
tests/rptest/tests/random_node_operations_test.py Adds cloud topics test workload with version-aware enablement
src/v/cloud_topics/reconciler/reconciler.cc Removes cloud partition check and adds proper builder cleanup
src/v/cloud_topics/manager/manager.h Adds topic ID mapping for deleted topic handling
src/v/cloud_topics/manager/manager.cc Refactors leadership change logic and topic ID tracking
src/v/cloud_topics/level_one/domain/domain_supervisor.h Adds leadership change notification method
src/v/cloud_topics/level_one/domain/domain_supervisor.cc Replaces partition notifications with direct callback approach
src/v/cloud_topics/level_one/domain/BUILD Removes unused partition change notifier dependencies
src/v/cloud_topics/level_one/common/object.cc Adds destructors to ensure proper resource cleanup
src/v/cloud_topics/housekeeper/manager.cc Enhances stop() method with detailed logging
src/v/cloud_topics/app.cc Wires up domain supervisor leadership notifications

Comment on lines +80 to 82
if (_partitions.contains(ntp)) {
return;
}
Copy link
Preview

Copilot AI Sep 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The logic change removes the cloud partition check but doesn't validate that the partition is actually a cloud topic partition before attaching it. This could lead to non-cloud partitions being incorrectly processed by the reconciler.

Copilot uses AI. Check for mistakes.

tidp, partition);
auto res = _partitions.try_emplace(ntp, std::move(attached));
vassert(res.second, "Double registration of ntp {}", ntp);
_partitions.emplace(ntp, std::move(attached));
Copy link
Preview

Copilot AI Sep 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Replacing try_emplace with emplace removes the duplicate registration protection. If _partitions.contains(ntp) check above fails to prevent duplicates, this could overwrite existing partition entries without warning.

Suggested change
_partitions.emplace(ntp, std::move(attached));
_partitions.try_emplace(ntp, std::move(attached));

Copilot uses AI. Check for mistakes.

Comment on lines +330 to +332
~object_builder_impl() override {
vassert(_closed, "L1 object builders must be closed unconditionally");
}
Copy link
Preview

Copilot AI Sep 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using vassert in a destructor can cause program termination during stack unwinding if an exception is already being processed. Consider using a different error handling mechanism like logging an error instead.

Copilot uses AI. Check for mistakes.

: _input(std::move(input)) {}

~object_reader_impl() override {
vassert(_closed, "L1 object readers must be closed unconditionally");
Copy link
Preview

Copilot AI Sep 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using vassert in a destructor can cause program termination during stack unwinding if an exception is already being processed. Consider using a different error handling mechanism like logging an error instead.

Suggested change
vassert(_closed, "L1 object readers must be closed unconditionally");
if (!_closed) {
fmt::print(stderr, "ERROR: L1 object readers must be closed unconditionally\n");
}

Copilot uses AI. Check for mistakes.

@vbotbuildovich
Copy link
Collaborator

vbotbuildovich commented Sep 25, 2025

Retry command for Build#72891

please wait until all jobs are finished before running the slash command

/ci-repeat 1
tests/rptest/tests/random_node_operations_test.py::RandomNodeOperationsTest.test_node_operations@{"cloud_storage_type":2,"compaction_mode":"chunked_sliding_window","enable_failures":false,"mixed_versions":false,"with_iceberg":false}
tests/rptest/tests/random_node_operations_test.py::RandomNodeOperationsTest.test_node_operations@{"cloud_storage_type":2,"compaction_mode":"adjacent_merge","enable_failures":false,"mixed_versions":false,"with_iceberg":false}
tests/rptest/tests/random_node_operations_test.py::RandomNodeOperationsTest.test_node_operations@{"cloud_storage_type":2,"compaction_mode":"sliding_window","enable_failures":true,"mixed_versions":false,"with_iceberg":false}
tests/rptest/tests/random_node_operations_test.py::RandomNodeOperationsTest.test_node_operations@{"cloud_storage_type":2,"compaction_mode":"chunked_sliding_window","enable_failures":true,"mixed_versions":false,"with_iceberg":false}
tests/rptest/tests/random_node_operations_test.py::RandomNodeOperationsTest.test_node_operations@{"cloud_storage_type":1,"compaction_mode":"chunked_sliding_window","enable_failures":false,"mixed_versions":false,"with_iceberg":true}
tests/rptest/tests/random_node_operations_test.py::RandomNodeOperationsTest.test_node_operations@{"cloud_storage_type":1,"compaction_mode":"sliding_window","enable_failures":true,"mixed_versions":false,"with_iceberg":false}
tests/rptest/tests/random_node_operations_test.py::RandomNodeOperationsTest.test_node_operations@{"cloud_storage_type":1,"compaction_mode":"adjacent_merge","enable_failures":false,"mixed_versions":false,"with_iceberg":true}
tests/rptest/tests/random_node_operations_test.py::RandomNodeOperationsTest.test_node_operations@{"cloud_storage_type":1,"compaction_mode":"chunked_sliding_window","enable_failures":true,"mixed_versions":false,"with_iceberg":false}
tests/rptest/tests/random_node_operations_test.py::RandomNodeOperationsTest.test_node_operations@{"cloud_storage_type":2,"compaction_mode":"sliding_window","enable_failures":false,"mixed_versions":false,"with_iceberg":false}
tests/rptest/tests/random_node_operations_test.py::RandomNodeOperationsTest.test_node_operations@{"cloud_storage_type":2,"compaction_mode":"adjacent_merge","enable_failures":true,"mixed_versions":false,"with_iceberg":false}

@dotnwat dotnwat closed this Sep 25, 2025
@vbotbuildovich
Copy link
Collaborator

CI test results

test results on build#72891
test_class test_method test_arguments test_kind job_url test_status passed reason test_history
ClusterRateQuotaTest test_client_group_consume_rate_throttle_mechanism null integration https://buildkite.com/redpanda/redpanda/builds/72891#01997da4-3bc3-4832-a2b1-84a6ab7b92f9 FLAKY 16/21 upstream reliability is '94.6259220231823'. current run reliability is '76.19047619047619'. drift is 18.43545 and the allowed drift is set to 50. The test should PASS https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=ClusterRateQuotaTest&test_method=test_client_group_consume_rate_throttle_mechanism
ClusterRateQuotaTest test_client_group_consume_rate_throttle_mechanism null integration https://buildkite.com/redpanda/redpanda/builds/72891#01997da6-caa5-4a3e-8eba-265684f0a363 FLAKY 14/21 https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=ClusterRateQuotaTest&test_method=test_client_group_consume_rate_throttle_mechanism
ClusterRateQuotaTest test_client_response_and_produce_throttle_mechanism null integration https://buildkite.com/redpanda/redpanda/builds/72891#01997da4-3bc6-405d-a72f-6c885db57ddb FLAKY 15/21 upstream reliability is '80.65693430656934'. current run reliability is '71.42857142857143'. drift is 9.22836 and the allowed drift is set to 50. The test should PASS https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=ClusterRateQuotaTest&test_method=test_client_response_and_produce_throttle_mechanism
ClusterRateQuotaTest test_client_response_throttle_mechanism_applies_to_next_request null integration https://buildkite.com/redpanda/redpanda/builds/72891#01997da6-caa8-4c0f-a846-9cd9861f8864 FLAKY 17/21 upstream reliability is '83.71848739495799'. current run reliability is '80.95238095238095'. drift is 2.76611 and the allowed drift is set to 50. The test should PASS https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=ClusterRateQuotaTest&test_method=test_client_response_throttle_mechanism_applies_to_next_request
RandomNodeOperationsTest test_node_operations {"cloud_storage_type": 2, "compaction_mode": "adjacent_merge", "enable_failures": false, "mixed_versions": false, "with_iceberg": false} integration https://buildkite.com/redpanda/redpanda/builds/72891#01997da6-caa9-42ca-a275-4ebc88907de2 FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=RandomNodeOperationsTest&test_method=test_node_operations
RandomNodeOperationsTest test_node_operations {"cloud_storage_type": 1, "compaction_mode": "adjacent_merge", "enable_failures": false, "mixed_versions": false, "with_iceberg": false} integration https://buildkite.com/redpanda/redpanda/builds/72891#01997da6-caaa-4d60-9257-c424b1db2d74 FAIL 0/19 https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=RandomNodeOperationsTest&test_method=test_node_operations
RandomNodeOperationsTest test_node_operations {"cloud_storage_type": 2, "compaction_mode": "chunked_sliding_window", "enable_failures": false, "mixed_versions": false, "with_iceberg": false} integration https://buildkite.com/redpanda/redpanda/builds/72891#01997da6-caaa-46c2-89ae-18c17e76dd11 FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=RandomNodeOperationsTest&test_method=test_node_operations
RandomNodeOperationsTest test_node_operations {"cloud_storage_type": 1, "compaction_mode": "chunked_sliding_window", "enable_failures": false, "mixed_versions": false, "with_iceberg": false} integration https://buildkite.com/redpanda/redpanda/builds/72891#01997da6-caa4-4cee-8975-f6bfa1787f49 FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=RandomNodeOperationsTest&test_method=test_node_operations
RandomNodeOperationsTest test_node_operations {"cloud_storage_type": 2, "compaction_mode": "sliding_window", "enable_failures": false, "mixed_versions": false, "with_iceberg": false} integration https://buildkite.com/redpanda/redpanda/builds/72891#01997da6-caa5-4a3e-8eba-265684f0a363 FAIL 0/21 https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=RandomNodeOperationsTest&test_method=test_node_operations
RandomNodeOperationsTest test_node_operations {"cloud_storage_type": 1, "compaction_mode": "sliding_window", "enable_failures": false, "mixed_versions": false, "with_iceberg": false} integration https://buildkite.com/redpanda/redpanda/builds/72891#01997da6-caa5-4eab-bf00-b5674a3d15a3 FAIL 0/20 https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=RandomNodeOperationsTest&test_method=test_node_operations
RandomNodeOperationsTest test_node_operations {"cloud_storage_type": 1, "compaction_mode": "adjacent_merge", "enable_failures": false, "mixed_versions": false, "with_iceberg": true} integration https://buildkite.com/redpanda/redpanda/builds/72891#01997da6-caa7-4445-86df-4ac6c58fd81b FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=RandomNodeOperationsTest&test_method=test_node_operations
RandomNodeOperationsTest test_node_operations {"cloud_storage_type": 1, "compaction_mode": "chunked_sliding_window", "enable_failures": false, "mixed_versions": false, "with_iceberg": true} integration https://buildkite.com/redpanda/redpanda/builds/72891#01997da6-caa8-4c0f-a846-9cd9861f8864 FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=RandomNodeOperationsTest&test_method=test_node_operations
RandomNodeOperationsTest test_node_operations {"cloud_storage_type": 1, "compaction_mode": "sliding_window", "enable_failures": false, "mixed_versions": false, "with_iceberg": true} integration https://buildkite.com/redpanda/redpanda/builds/72891#01997da6-caaa-4d60-9257-c424b1db2d74 FAIL 0/19 https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=RandomNodeOperationsTest&test_method=test_node_operations
RandomNodeOperationsTest test_node_operations {"cloud_storage_type": 2, "compaction_mode": "adjacent_merge", "enable_failures": true, "mixed_versions": false, "with_iceberg": false} integration https://buildkite.com/redpanda/redpanda/builds/72891#01997da6-caa5-4a3e-8eba-265684f0a363 FAIL 0/21 https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=RandomNodeOperationsTest&test_method=test_node_operations
RandomNodeOperationsTest test_node_operations {"cloud_storage_type": 1, "compaction_mode": "adjacent_merge", "enable_failures": true, "mixed_versions": false, "with_iceberg": false} integration https://buildkite.com/redpanda/redpanda/builds/72891#01997da6-caa5-4eab-bf00-b5674a3d15a3 FAIL 0/20 https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=RandomNodeOperationsTest&test_method=test_node_operations
RandomNodeOperationsTest test_node_operations {"cloud_storage_type": 2, "compaction_mode": "chunked_sliding_window", "enable_failures": true, "mixed_versions": false, "with_iceberg": false} integration https://buildkite.com/redpanda/redpanda/builds/72891#01997da6-caa6-4eda-894e-a4ce9033b8a2 FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=RandomNodeOperationsTest&test_method=test_node_operations
RandomNodeOperationsTest test_node_operations {"cloud_storage_type": 1, "compaction_mode": "chunked_sliding_window", "enable_failures": true, "mixed_versions": false, "with_iceberg": false} integration https://buildkite.com/redpanda/redpanda/builds/72891#01997da6-caa7-4445-86df-4ac6c58fd81b FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=RandomNodeOperationsTest&test_method=test_node_operations
RandomNodeOperationsTest test_node_operations {"cloud_storage_type": 2, "compaction_mode": "sliding_window", "enable_failures": true, "mixed_versions": false, "with_iceberg": false} integration https://buildkite.com/redpanda/redpanda/builds/72891#01997da6-caa8-4192-9ca9-63dcf7f48ba8 FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=RandomNodeOperationsTest&test_method=test_node_operations
RandomNodeOperationsTest test_node_operations {"cloud_storage_type": 1, "compaction_mode": "sliding_window", "enable_failures": true, "mixed_versions": false, "with_iceberg": false} integration https://buildkite.com/redpanda/redpanda/builds/72891#01997da6-caa8-4c0f-a846-9cd9861f8864 FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=RandomNodeOperationsTest&test_method=test_node_operations
RandomNodeOperationsTest test_node_operations {"cloud_storage_type": 1, "compaction_mode": "adjacent_merge", "enable_failures": true, "mixed_versions": false, "with_iceberg": true} integration https://buildkite.com/redpanda/redpanda/builds/72891#01997da6-caaa-4d60-9257-c424b1db2d74 FAIL 0/19 https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=RandomNodeOperationsTest&test_method=test_node_operations
RandomNodeOperationsTest test_node_operations {"cloud_storage_type": 1, "compaction_mode": "chunked_sliding_window", "enable_failures": true, "mixed_versions": false, "with_iceberg": true} integration https://buildkite.com/redpanda/redpanda/builds/72891#01997da6-caa4-4cee-8975-f6bfa1787f49 FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=RandomNodeOperationsTest&test_method=test_node_operations
RandomNodeOperationsTest test_node_operations {"cloud_storage_type": 1, "compaction_mode": "sliding_window", "enable_failures": true, "mixed_versions": false, "with_iceberg": true} integration https://buildkite.com/redpanda/redpanda/builds/72891#01997da6-caa5-4eab-bf00-b5674a3d15a3 FAIL 0/20 https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=RandomNodeOperationsTest&test_method=test_node_operations
DisablingPartitionsTest test_disable null integration https://buildkite.com/redpanda/redpanda/builds/72891#01997da4-3bcb-4504-8c21-899a94f73d8c FLAKY 13/21 upstream reliability is '99.32810750279955'. current run reliability is '61.904761904761905'. drift is 37.42335 and the allowed drift is set to 50. The test should PASS https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=DisablingPartitionsTest&test_method=test_disable
WriteCachingFailureInjectionE2ETest test_crash_all {"use_transactions": false} integration https://buildkite.com/redpanda/redpanda/builds/72891#01997da6-caa8-4192-9ca9-63dcf7f48ba8 FLAKY 17/21 upstream reliability is '94.85148514851485'. current run reliability is '80.95238095238095'. drift is 13.8991 and the allowed drift is set to 50. The test should PASS https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=WriteCachingFailureInjectionE2ETest&test_method=test_crash_all

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants