ó
è¾bc           @   so   d  d l  m Z d  d l Z e j d d k Z e r@ d d Un d  d l Z d d Z d Z d Z
 d	 „  Z d S(
   iÿÿÿÿ(   t   sleepNi    i   s   from . import dbg      ð?i€   gn†ðù!	@c         O   sÆ   t  } | j d d ƒ } d | k r. | d =n  x‘ t rÁ y |  | | Ž  SWq1 t j k
 r½ t ru t j d | ƒ n  t | ƒ | d 9} | t k rž t } n  | d 8} | d k r¾ ‚  q¾ q1 Xq1 Wd S(   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"
    t   max_retriesiÿÿÿÿs%   dbutils.DeadlockWrap: sleeping %1.3f
i   i   N(	   t   _deadlock_MinSleepTimet   gett   Truet   dbt   DBLockDeadlockErrort   _deadlock_VerboseFilet   writet   _sleept   _deadlock_MaxSleepTime(   t   functiont   _argst   _kwargst	   sleeptimeR   (    (    s#   /usr/lib/python2.7/bsddb/dbutils.pyt   DeadlockWrap/   s$    
	

	
(   t   timeR    R	   t   syst   version_infot   absolute_importR   R   R
   t   NoneR   R   (    (    (    s#   /usr/lib/python2.7/bsddb/dbutils.pyt   <module>   s   
