[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@3.142.42.247: ~ $
#------------------------------------------------------------------------
#
# Copyright (C) 2000 Autonomous Zone Industries
#
# License:      This is free software.  You may use this software for any
#               purpose including modification/redistribution, so long as
#               this header remains intact and that you do not claim any
#               rights of ownership or authorship of this software.  This
#               software has been tested, but no warranty is expressed or
#               implied.
#
# Author: Gregory P. Smith <greg@krypto.org>
#
# Note: I don't know how useful this is in reality since when a
#       DBLockDeadlockError happens the current transaction is supposed to be
#       aborted.  If it doesn't then when the operation is attempted again
#       the deadlock is still happening...
#       --Robin
#
#------------------------------------------------------------------------


#
# import the time.sleep function in a namespace safe way to allow
# "from bsddb.dbutils import *"
#
from time import sleep as _sleep

import sys
absolute_import = (sys.version_info[0] >= 3)
if absolute_import :
    # Because this syntaxis is not valid before Python 2.5
    exec("from . import db")
else :
    import db

# always sleep at least N seconds between retrys
_deadlock_MinSleepTime = 1.0/128
# never sleep more than N seconds between retrys
_deadlock_MaxSleepTime = 3.14159

# Assign a file object to this for a "sleeping" message to be written to it
# each retry
_deadlock_VerboseFile = None


def DeadlockWrap(function, *_args, **_kwargs):
    """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"
    """
    sleeptime = _deadlock_MinSleepTime
    max_retries = _kwargs.get('max_retries', -1)
    if 'max_retries' in _kwargs:
        del _kwargs['max_retries']
    while True:
        try:
            return function(*_args, **_kwargs)
        except db.DBLockDeadlockError:
            if _deadlock_VerboseFile:
                _deadlock_VerboseFile.write(
                    'dbutils.DeadlockWrap: sleeping %1.3f\n' % sleeptime)
            _sleep(sleeptime)
            # exponential backoff in the sleep time
            sleeptime *= 2
            if sleeptime > _deadlock_MaxSleepTime:
                sleeptime = _deadlock_MaxSleepTime
            max_retries -= 1
            if max_retries == -1:
                raise


#------------------------------------------------------------------------

Filemanager

Name Type Size Permission Actions
.__init__.pyo.40009 File 12.16 KB 0644
.db.pyo.40009 File 592 B 0644
.dbobj.pyo.40009 File 18.38 KB 0644
.dbrecio.pyo.40009 File 5.18 KB 0644
.dbshelve.pyo.40009 File 12.72 KB 0644
.dbutils.pyo.40009 File 1.59 KB 0644
__init__.py File 15.61 KB 0644
__init__.pyc File 12.16 KB 0644
__init__.pyo File 12.16 KB 0644
db.py File 2.67 KB 0644
db.pyc File 592 B 0644
db.pyo File 592 B 0644
dbobj.py File 11.07 KB 0644
dbobj.pyc File 18.38 KB 0644
dbobj.pyo File 18.38 KB 0644
dbrecio.py File 5.18 KB 0644
dbrecio.pyc File 5.18 KB 0644
dbrecio.pyo File 5.18 KB 0644
dbshelve.py File 11.31 KB 0644
dbshelve.pyc File 12.72 KB 0644
dbshelve.pyo File 12.72 KB 0644
dbtables.py File 30.14 KB 0644
dbtables.pyc File 23.95 KB 0644
dbtables.pyo File 23.82 KB 0644
dbutils.py File 2.89 KB 0644
dbutils.pyc File 1.59 KB 0644
dbutils.pyo File 1.59 KB 0644