[ovs-dev] [PATCH] Python: Make Row's __getattr__ less error prone

Ben Pfaff blp at ovn.org
Sat Oct 6 00:43:43 UTC 2018


On Fri, Oct 05, 2018 at 04:31:07PM +0100, lucasagomes at gmail.com wrote:
> From: Lucas Alvares Gomes <lucasagomes at gmail.com>
> 
> Calling getattr() on a Row object after invoking delkey() with a value
> that does not exist in the object will cause getattr() to fail with a
> KeyError error. For example:
> 
> Oct 05 14:59:28 neutron-server[28435]:   File
> "/usr/local/lib/python2.7/dist-packages/ovsdbapp/backend/ovs_idl/connection.py",
> line 122, in run
> Oct 05 14:59:28 neutron-server[28435]:
> txn.results.put(txn.do_commit())
> Oct 05 14:59:28 neutron-server[28435]:   File
> "/usr/local/lib/python2.7/dist-packages/ovsdbapp/backend/ovs_idl/transaction.py",
> line 86, in do_commit
> Oct 05 14:59:28 neutron-server[28435]:     command.run_idl(txn)
> Oct 05 14:59:28 neutron-server[28435]:   File
> "/usr/local/lib/python2.7/dist-packages/ovsdbapp/backend/ovs_idl/command.py",
> line 299, in run_idl
> Oct 05 14:59:28 neutron-server[28435]:     if
> isinstance(getattr(record, self.column), dict):
> Oct 05 14:59:28 neutron-server[28435]:   File
> "/usr/local/lib/python2.7/dist-packages/ovs/db/idl.py", line 843, in
> __getattr__
> Oct 05 14:59:28 neutron-server[28435]:     del dmap[key]
> Oct 05 14:59:28 neutron-server[28435]: KeyError: 'bogusvalue'
> 
> This patch is replacing the "del dmap[key]" instruction with a
> "dmap.pop(key, None)" instruction instead because a pop() (with a
> default value) will not raise an exception in case the key does not
> exist in the object in the first place, it will just ignore it.
> 
> Signed-Off-By: Lucas Alvares Gomes <lucasagomes at gmail.com>

Thanks, applied to master and backported as far as it would go.


More information about the dev mailing list