Project

General

Profile

Actions

Bug #61889

closed

cephadm: cephadm module crashes trying to migrate simple rgw specs

Added by Adam King 11 months ago. Updated 2 months ago.

Status:
Resolved
Priority:
Immediate
Assignee:
Category:
-
Target version:
-
% Done:

0%

Source:
Tags:
backport_processed
Backport:
reef, quincy
Regression:
No
Severity:
1 - critical
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

Specifically, those without a "spec" field. So this spec

service_type: rgw
service_id: rgw.1
service_name: rgw.rgw.1
placement:
  label: rgw

would case the issue but this spec

service_type: rgw
service_id: rgw.1
service_name: rgw.rgw.1
placement:
  label: rgw
spec:
  rgw_frontend_port: 8000

would not.

The migration code assumes the "spec" field will always be present, and we get an unhandled KeyError that brings the module down if it isn't there.

This is pretty devastating for anyone trying to upgrade to a version with this migration present that has one of these simple rgw spec, as the module crashes silently and after that any orch commands fail

[ceph: root@vm-00 /]# ceph orch ps
Error ENOENT: Module not found

and the upgrade is just stuck in this broken state.

This wasn't caught in testing as the rgw service used in our upgrade tests has the "spec" field present and the unit tests around this migration only tested with a spec that included the field as well.


Related issues 2 (0 open2 closed)

Copied to Orchestrator - Backport #61938: reef: cephadm: cephadm module crashes trying to migrate simple rgw specsResolvedAdam KingActions
Copied to Orchestrator - Backport #61939: quincy: cephadm: cephadm module crashes trying to migrate simple rgw specsResolvedAdam KingActions
Actions

Also available in: Atom PDF