framework
framework copied to clipboard
shrink/extend of vpool failed due to empty volumedriver config
Problem
Shrink/extend of vpools failed when an empty config exists in the config arakoon
If someone accidentally edit a config file that doesn't exists in the arakoon config an empty will be created.
If you edit a file via ovs config edit and you exit the file without changing/edit something a new file will be created.
root@LC1SRV0008:~# ovs config edit /ovs/vpools/55ecf5fa-fa9c-408b-8451-033ba80f9da2/hosts/myvpool027vPjmmFjwC6xbTRB/config
root@LC1SRV0008:~# ovs config edit /ovs/vpools/55ecf5fa-fa9c-408b-8451-033ba80f9da2/hosts/myvpool027vPjmmFjwC6xbTRB/config2
root@LC1SRV0008:~# ovs config list /ovs/vpools/55ecf5fa-fa9c-408b-8451-033ba80f9da2/hosts/myvpool027vPjmmFjwC6xbTRB
config
config2
Ignoring empty files would be great.
Solved
Removed the empty config file
Logs
2018-01-30 15:05:17 68100 +0100 - stor-02.uk-dc-1 - 28169/139860339844864 - celery/celery.worker.job - 23 - ERROR - Task ovs.storagerouter.add_vpool[acc85ab3-7424-48f0-8eb7-304f20255c87] raised unexpected: ValueError('No JSON object could
be decoded',)
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/celery/app/trace.py", line 240, in trace_task
R = retval = fun(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/celery/app/trace.py", line 438, in __protected_call__
return self.run(*args, **kwargs)
File "/opt/OpenvStorage/ovs/lib/storagerouter.py", line 880, in add_vpool
storagedriver_config.load()
File "/opt/OpenvStorage/ovs/extensions/storageserver/storagedriver.py", line 333, in load
if Configuration.exists(self.key):
File "/usr/lib/python2.7/dist-packages/ovs_extensions/generic/configuration.py", line 187, in exists
cls.get(key, raw)
File "/usr/lib/python2.7/dist-packages/ovs_extensions/generic/configuration.py", line 107, in get
data = cls._get(key_entries[0], raw, **kwargs)
File "/usr/lib/python2.7/dist-packages/ovs_extensions/generic/configuration.py", line 301, in _get
return json.loads(data)
File "/usr/lib/python2.7/json/__init__.py", line 339, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/json/decoder.py", line 364, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
2018-01-30 15:25:50 41400 +0100 - stor-04.uk-dc-1 - 23541/140647420155648 - celery/celery.worker.job - 77 - ERROR - Task ovs.storagerouter.remove_storagedriver[72e64f61-a3c6-48d3-89ee-e809024036db] raised unexpected: ValueError('No JSON o
bject could be decoded',)
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/celery/app/trace.py", line 240, in trace_task
R = retval = fun(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/celery/app/trace.py", line 438, in __protected_call__
return self.run(*args, **kwargs)
File "/opt/OpenvStorage/ovs/lib/storagerouter.py", line 1059, in remove_storagedriver
if Configuration.exists(sd_key) is True:
File "/usr/lib/python2.7/dist-packages/ovs_extensions/generic/configuration.py", line 187, in exists
cls.get(key, raw)
File "/usr/lib/python2.7/dist-packages/ovs_extensions/generic/configuration.py", line 107, in get
data = cls._get(key_entries[0], raw, **kwargs)
File "/usr/lib/python2.7/dist-packages/ovs_extensions/generic/configuration.py", line 301, in _get
return json.loads(data)
File "/usr/lib/python2.7/json/__init__.py", line 339, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/json/decoder.py", line 364, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded