Project

General

Profile

Actions

Bug #43313

closed

telemetry module can crash on entity name with multiple '.' separators

Added by Dan Mick over 4 years ago. Updated about 3 years ago.

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

0%

Source:
Community (user)
Tags:
Backport:
nautilus,mimic
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

A user discovered this:

        # ceph telemetry show
        Error EINVAL: Traceback (most recent call last):
          File "/usr/share/ceph/mgr/mgr_module.py", line 914, in _handle_command
            return self.handle_command(inbuf, cmd)
          File "/usr/share/ceph/mgr/telemetry/module.py", line 754, in handle_command
            channels=command.get('channels', None)
          File "/usr/share/ceph/mgr/telemetry/module.py", line 660, in compile_report
            report['crashes'] = self.gather_crashinfo()
          File "/usr/share/ceph/mgr/telemetry/module.py", line 337, in gather_crashinfo
            (etype, eid) = c.get('entity_name', '').split('.')
        ValueError: too many values to unpack

The entity name in question was

client.rgw.stage2-rgw02-object02.s2r6
, which indeed won't split correctly. The fix is to add a max-split count of 1 so that only the first '.' is considered a separator.


Related issues 2 (0 open2 closed)

Copied to mgr - Backport #44057: nautilus: telemetry module can crash on entity name with multiple '.' separatorsResolvedKonstantin ShalyginActions
Copied to mgr - Backport #44058: mimic: telemetry module can crash on entity name with multiple '.' separatorsRejectedActions
Actions #1

Updated by Dan Mick over 4 years ago

  • Project changed from Ceph to mgr
Actions #2

Updated by Alexandre Marangone over 4 years ago

Dan, I'm looking into this. I'm not certain on how you expect the crash to look on the server side.
It would be easy to specify a maxsplit of 1 but then the reported entity_name in the crash would be client.$hash. Would it be more useful to get client.<client_type>.$hash?

Also it looks like any radosgw crash would trigger this since the expectation is that there's only 1 dot in the name and the default naming convention for rgw is client.rgw.`hostname -s`

Actions #3

Updated by Dan Mick over 4 years ago

with maxsplit 1:

>>> s='client.rgw.stage2-rgw02-object02.s2r6'
>>> s.split('.', 1)
['client', 'rgw.stage2-rgw02-object02.s2r6']

which is what you want, I think. As for the hash, the point of the hash is to obscure any customer identifiers like hostname or zone name or whatever is stuffed into the name.

Actions #4

Updated by Alexandre Marangone over 4 years ago

Gotcha. I thought it could have been important to identify client type (i.e. rgw) in the entity name

Actions #5

Updated by Sage Weil about 4 years ago

  • Priority changed from Normal to Urgent
  • Backport set to nautilus,mimic
Actions #6

Updated by Dan Mick about 4 years ago

  • Status changed from In Progress to Fix Under Review
  • Pull request ID set to 33094
Actions #7

Updated by Sage Weil about 4 years ago

  • Status changed from Fix Under Review to Pending Backport
Actions #8

Updated by Konstantin Shalygin about 4 years ago

  • Copied to Backport #44057: nautilus: telemetry module can crash on entity name with multiple '.' separators added
Actions #9

Updated by Konstantin Shalygin about 4 years ago

  • Copied to Backport #44058: mimic: telemetry module can crash on entity name with multiple '.' separators added
Actions #10

Updated by Nathan Cutler about 3 years ago

  • Status changed from Pending Backport to Resolved

While running with --resolve-parent, the script "backport-create-issue" noticed that all backports of this issue are in status "Resolved" or "Rejected".

Actions

Also available in: Atom PDF