[Kimchi-devel] [PATCH V3 1/5] Fix 'disk full' issue: Change objectstore exception handling

Royce Lv lvroyce at linux.vnet.ibm.com
Tue Apr 1 07:04:15 UTC 2014


On 2014年03月29日 00:40, Rodrigo Trujillo wrote:
> This patch changes __exit__ function of objectstore in order to log the
> error information. It also changes the return to make python raise the
> exception again, which will be caught by the functions that are using
> the objectstore.
>
> Signed-off-by: Rodrigo Trujillo <rodrigo.trujillo at linux.vnet.ibm.com>
> ---
>   src/kimchi/objectstore.py | 7 +++++++
>   1 file changed, 7 insertions(+)
>
> diff --git a/src/kimchi/objectstore.py b/src/kimchi/objectstore.py
> index d960ca9..b1c1bdd 100644
> --- a/src/kimchi/objectstore.py
> +++ b/src/kimchi/objectstore.py
> @@ -19,6 +19,7 @@
>   import json
>   import sqlite3
>   import threading
> +import traceback
>
>
>   try:
> @@ -29,6 +30,7 @@ except ImportError:
>
>   from kimchi import config
>   from kimchi.exception import NotFoundError
> +from kimchi.utils import kimchi_log
>
>
>   class ObjectStoreSession(object):
> @@ -116,3 +118,8 @@ class ObjectStore(object):
>
>       def __exit__(self, type, value, tb):
>           self._lock.release()
> +        if type is not None and issubclass(type, sqlite3.DatabaseError):
> +                # Logs the error and return False, which makes __exit__ raise
> +                # exception again
> +                kimchi_log.error(traceback.format_exc())
> +                return False
I appreciate the idea of this patch.
Howerver, I wrote a demo and it seems if I don't explicitly return True, 
it raises error as its default behavior
And as __exit__ accepted tb as its param, instead of format a traceback 
for ourselves,
we need to use the passed in tb.
And I'm not sure why we just raise DBerror?




More information about the Kimchi-devel mailing list