Skip to content

Unable to deleted support bundles in "Failed" state #9558

@wfchandler

Description

@wfchandler

On dogfood we have a large number of support bundles in Failed state:

$ oxide --profile=dogfood bundle list
[
  {
    "id": "62180262-5748-43fe-932f-cd90f3d2fa1f",
    "reason_for_creation": "Created by external API",
    "reason_for_failure": "Nexus managing this bundle no longer exists",
    "state": "failed",
    "time_created": "2025-02-28T18:45:18.306219Z"
  }, {
    "id": "acfdd1ac-9ccb-42a7-a4a8-e8c4dbea6ce2",
    "reason_for_creation": "Created by internal API",
    "reason_for_failure": "Nexus managing this bundle no longer exists",
    "state": "failed",
    "time_created": "2025-05-01T20:07:18.363585Z"
  }
...

Attempting to delete these bundles fails with the following:

$ oxide --debug--profile=dogfood bundle delete --bundle-id 62180262-5748-43fe-932f-cd90f3d2fa1f
{"timestamp":"2025-12-22T15:15:30.203547Z","level":"DEBUG","message":"request succeeded","url":"https://oxide.sys.rack2.eng.oxide.computer/experimental/v1/system/support-bundles/62180262-5748-43fe-932f-cd90f3d2fa1f","path":"/experimental/v1/system/support-bundles/62180262-5748-43fe-932f-cd90f3d2fa1f","operation_id":"support_bundle_delete","remote_addr":"172.20.26.9:443","http.request.method":"DELETE","http.response.content_length":169,"http.response.status_code":400,"start_time":"2025-12-22T15:15:29.355531Z","duration_ms":847,"oxide.request_id":"2fa9cdc2-f26b-40c0-baa6-5767180f784e","target":"oxide"}
error
Error Response: status: 400 Bad Request; headers: {"content-type": "application/json", "x-request-id": "2fa9cdc2-f26b-40c0-baa6-5767180f784e", "content-length": "169", "date": "Mon, 22 Dec 2025 15:15:30 GMT"}; value: Error { error_code: Some("InvalidRequest"), message: "Cannot update support bundle state from Failed to Destroying", request_id: "2fa9cdc2-f26b-40c0-baa6-5767180f784e" }

The chain of operations is:

This final function fails because it is attempting to update the bundle state to Destroying, but Failed is a terminal state. Datastore::support_bundle_delete would succeed for these bundles, but we never reach that point.

Based on the "Nexus managing this bundle no longer exists" message, these bundles should have transitioned to Failing state, so it's not immediately obvious why the SupportBundleCollector background task didn't remove them, as it checks for items in Destroying and Failing state.

Metadata

Metadata

Assignees

Labels

bugSomething that isn't working.support-bundlesSupport bundles

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions