Skip to content

CI: upload Scylla/ccm logs for failed integration tests #932

Description

@dkropachev

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions