Handle keys with metadata only

Bug #1967674 reported by Ekaterina Chernova
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
etcd3gw
Fix Released
Undecided
Ekaterina Chernova

Bug Description

If there is a key with just metadata (no value set up), the exceptions raised

  File "/usr/lib/python3.6/multiprocessing/process.py", line 258, in _bootstrap
    self.run()
  File "/usr/lib/python3.6/multiprocessing/process.py", line 93, in run
    self._target(*self._args, **self._kwargs)
  File "/var/lib/openstack/lib/python3.6/site-packages/cotyledon/_utils.py", line 63, in _bootstrap_process
    target(*args, **kwargs)
  File "/var/lib/openstack/lib/python3.6/site-packages/cotyledon/_service.py", line 161, in create_and_wait
    sw = cls(*args, **kwargs)
  File "/var/lib/openstack/lib/python3.6/site-packages/cotyledon/_service.py", line 175, in __init__
    self.service = config.service(worker_id, *args, **kwargs)
  File "/var/lib/openstack/lib/python3.6/site-packages/aodh/evaluator/__init__.py", line 215, in __init__
    self.partition_coordinator.join_group(self.PARTITIONING_GROUP_NAME)
  File "/var/lib/openstack/lib/python3.6/site-packages/aodh/coordination.py", line 190, in join_group
    return _inner()
  File "/var/lib/openstack/lib/python3.6/site-packages/tenacity/__init__.py", line 329, in wrapped_f
    return self.call(f, *args, **kw)
  File "/var/lib/openstack/lib/python3.6/site-packages/tenacity/__init__.py", line 409, in call
    do = self.iter(retry_state=retry_state)
  File "/var/lib/openstack/lib/python3.6/site-packages/tenacity/__init__.py", line 356, in iter
    return fut.result()
  File "/usr/lib/python3.6/concurrent/futures/_base.py", line 425, in result
    return self.__get_result()
  File "/usr/lib/python3.6/concurrent/futures/_base.py", line 384, in __get_result
    raise self._exception
  File "/var/lib/openstack/lib/python3.6/site-packages/tenacity/__init__.py", line 412, in call
    result = fn(*args, **kwargs)
  File "/var/lib/openstack/lib/python3.6/site-packages/aodh/coordination.py", line 173, in _inner
    join_req.get()
  File "/var/lib/openstack/lib/python3.6/site-packages/tooz/coordination.py", line 666, in get
    return self._fut.result(timeout=timeout)
  File "/usr/lib/python3.6/concurrent/futures/_base.py", line 432, in result
    return self.__get_result()
  File "/usr/lib/python3.6/concurrent/futures/_base.py", line 384, in __get_result
    raise self._exception
  File "/var/lib/openstack/lib/python3.6/site-packages/futurist/_utils.py", line 49, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/var/lib/openstack/lib/python3.6/site-packages/tenacity/__init__.py", line 329, in wrapped_f
    return self.call(f, *args, **kw)
  File "/var/lib/openstack/lib/python3.6/site-packages/tenacity/__init__.py", line 409, in call
    do = self.iter(retry_state=retry_state)
  File "/var/lib/openstack/lib/python3.6/site-packages/tenacity/__init__.py", line 356, in iter
    return fut.result()
  File "/usr/lib/python3.6/concurrent/futures/_base.py", line 425, in result
    return self.__get_result()
  File "/usr/lib/python3.6/concurrent/futures/_base.py", line 384, in __get_result
    raise self._exception
  File "/var/lib/openstack/lib/python3.6/site-packages/tenacity/__init__.py", line 412, in call
    result = fn(*args, **kwargs)
  File "/var/lib/openstack/lib/python3.6/site-packages/tooz/drivers/etcd3gw.py", line 42, in wrapper
    return func(*args, **kwargs)
  File "/var/lib/openstack/lib/python3.6/site-packages/tooz/drivers/etcd3gw.py", line 329, in _join_group
    members = self.client.get_prefix(prefix_group)
  File "/var/lib/openstack/lib/python3.6/site-packages/etcd3gw/client.py", line 267, in get_prefix
    sort_target=sort_target)
  File "/var/lib/openstack/lib/python3.6/site-packages/etcd3gw/client.py", line 238, in get
    return [value_with_metadata(item) for item in result['kvs']]
  File "/var/lib/openstack/lib/python3.6/site-packages/etcd3gw/client.py", line 238, in <listcomp>
    return [value_with_metadata(item) for item in result['kvs']]
  File "/var/lib/openstack/lib/python3.6/site-packages/etcd3gw/client.py", line 235, in value_with_metadata
    value = _decode(item.pop('value'))
KeyError: 'value'

need to handle this situation

Changed in python-etcd3gw:
assignee: nobody → Ekaterina Chernova (efedorova)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to etcd3gw (master)

Fix proposed to branch: master
Review: https://review.opendev.org/c/openstack/etcd3gw/+/836244

Changed in python-etcd3gw:
status: New → In Progress
description: updated
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to etcd3gw (master)

Reviewed: https://review.opendev.org/c/openstack/etcd3gw/+/836244
Committed: https://opendev.org/openstack/etcd3gw/commit/e00c9f2ec4205650aff7ffd8972591b9f8c45ae0
Submitter: "Zuul (22348)"
Branch: master

commit e00c9f2ec4205650aff7ffd8972591b9f8c45ae0
Author: Ekaterina Chernova <email address hidden>
Date: Sun Apr 3 15:55:48 2022 +0300

    Handle key has only metadata and no value

    Some other etcd clients may add key
     without providing 'value'.

    This patch adds compatibility, so etcd can be used
    together with another clients

    Closes-bug: #1967674
    Change-Id: I6319d58462481aac4b15048aad57de77094e8769

Changed in python-etcd3gw:
status: In Progress → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/etcd3gw 2.0.0

This issue was fixed in the openstack/etcd3gw 2.0.0 release.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.