Problem
When an integration test fails in GitHub Actions, we often lose the Scylla-side reason for the failure because the workflow does not upload ccm/Scylla cluster logs.
Recent example: #931 / PR #913
The GitHub run has no artifacts:
{"total_count":0,"artifacts":[]}
The workflow also has no actions/upload-artifact step after pytest. As a result, when Scylla REST returns 500 or a node fails during topology changes, we only see the client-side stack trace and lose node logs that would explain the actual server-side failure.
Requested change
Update the integration test workflow to preserve logs on failure, at least for:
~/.ccm/*/node*/logs/*
- ccm cluster/node configuration useful for reproducing the run
- pytest output if it is redirected in the future
- any Scylla REST/server logs generated under the ccm cluster directory
The upload step should run with if: failure() or if: always() after pytest, and artifact names should include useful matrix dimensions, for example:
integration-logs-${{ matrix.event_loop_manager }}-${{ matrix.python-version }}
Why this matters
For #931, the failing REST request returned HTTP 500 while the test was decommissioning nodes. Without Scylla logs, we cannot tell whether the server rejected the /v2/client-routes payload, was still processing topology changes, hit an internal exception, or had another transient failure.
Preserving logs would make future CI flakes actionable instead of leaving only the Python-side urllib exception.
Problem
When an integration test fails in GitHub Actions, we often lose the Scylla-side reason for the failure because the workflow does not upload ccm/Scylla cluster logs.
Recent example: #931 / PR #913
tests/integration/standard/test_client_routes.py::TestFullNodeReplacementThroughNlb::test_should_survive_full_node_replacement_through_nlburllib.error.HTTPError: HTTP Error 500: Internal Server ErrorThe GitHub run has no artifacts:
{"total_count":0,"artifacts":[]}The workflow also has no
actions/upload-artifactstep after pytest. As a result, when Scylla REST returns 500 or a node fails during topology changes, we only see the client-side stack trace and lose node logs that would explain the actual server-side failure.Requested change
Update the integration test workflow to preserve logs on failure, at least for:
~/.ccm/*/node*/logs/*The upload step should run with
if: failure()orif: always()after pytest, and artifact names should include useful matrix dimensions, for example:Why this matters
For #931, the failing REST request returned HTTP 500 while the test was decommissioning nodes. Without Scylla logs, we cannot tell whether the server rejected the
/v2/client-routespayload, was still processing topology changes, hit an internal exception, or had another transient failure.Preserving logs would make future CI flakes actionable instead of leaving only the Python-side
urllibexception.