The oslo.log JSONFormatter gets stuck when passed an RBDVolumeIOWrapper
Bug #1908607 reported by
Sofia Enriquez
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Ubuntu Cloud Archive |
Fix Released
|
Undecided
|
Unassigned | ||
Train |
New
|
Undecided
|
Unassigned | ||
Ussuri |
New
|
Undecided
|
Unassigned | ||
Victoria |
New
|
Undecided
|
Unassigned | ||
Wallaby |
Fix Released
|
Undecided
|
Unassigned | ||
os-brick |
Invalid
|
Undecided
|
Sofia Enriquez | ||
oslo.serialization |
Fix Committed
|
Undecided
|
Sofia Enriquez | ||
python-oslo.serialization (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Focal |
New
|
Undecided
|
Unassigned | ||
Groovy |
New
|
Undecided
|
Unassigned |
Bug Description
Currently volume backup gets stuck in creating status when debug and use_json are True. Only using Ceph for backups.
How reproducible:
Always
Steps to Reproduce:
1. Enable Ceph for backups.
2. Enable debug and json format log:
/etc/cinder/
~~~
[DEFAULT]
...
debug = True
...
use_json = True
~~~
3. Create volume backup
$ cinder backup-create <voume id> --name <backup name>
Actual results:
The created backup gets stuck in creating status
Expected results:
The backup is created and become active
Changed in os-brick: | |
assignee: | nobody → Sofia Enriquez (lsofia-enriquez) |
tags: | added: backup error volume |
Changed in os-brick: | |
status: | New → Invalid |
summary: |
- [Ceph] utils.py don't display well the json logs + The oslo.log JSONFormatter gets stuck when passed an RBDVolumeIOWrapper |
Changed in oslo.serialization: | |
assignee: | nobody → Sofia Enriquez (lsofia-enriquez) |
Changed in python-oslo.serialization (Ubuntu): | |
status: | New → Fix Released |
To post a comment you must log in.
Some notes on what is failing here:
The oslo.log JSONFormatter gets stuck when passed an RBDVolumeIOWrapper from os-brick. This happens via os-brick's utils.trace() method which passes a connector containing {'path': RBDVolumeIOWrap per}.
The oslo.log JSONFormatter format() method calls oslo_serializat ion's jsonutils. to_primitive and passes in this RBDVolumeIOWrapper object.
The to_primitive method eventually calls RBDVolumeIOWrap per.read( ) which I suspect is not intended.
This can be replicated without the oslo.log layers by adding the following into os-brick's utils.trace method just before the '<== %(func)s' line: to_primitive( mask_result, fallback=repr)
jsonutils.