�`^c@soddlmZddlZejddkZer@ddUnddlZddZdZdZ
d �ZdS(
i�(tsleepNiisfrom . import dbg�gn��@cOs�t}|jdd�}d|kr.|d=nx�tr�y|||�SWq1tjk
r�trutjd|�nt|�|d9}|tkr�t}n|d8}|dkr��q�q1Xq1WdS(s?DeadlockWrap(function, *_args, **_kwargs) - automatically retries
function in case of a database deadlock.
This is a function intended to be used to wrap database calls such
that they perform retrys with exponentially backing off sleeps in
between when a DBLockDeadlockError exception is raised.
A 'max_retries' parameter may optionally be passed to prevent it
from retrying forever (in which case the exception will be reraised).
d = DB(...)
d.open(...)
DeadlockWrap(d.put, "foo", data="bar") # set key "foo" to "bar"
tmax_retriesi�s%dbutils.DeadlockWrap: sleeping %1.3f
iiN( t_deadlock_MinSleepTimetgettTruetdbtDBLockDeadlockErrort_deadlock_VerboseFiletwritet_sleept_deadlock_MaxSleepTime(tfunctiont_argst_kwargst sleeptimeR((s#/sys/lib/python2.7/bsddb/dbutils.pytDeadlockWrap/s$
(ttimeRR tsystversion_infotabsolute_importRRR
tNoneRR(((s#/sys/lib/python2.7/bsddb/dbutils.pyt<module>s
|