Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
del instances[k]
updated = True
else:
instances = {}
instance_data = instances.get(instance_name)
if not instance_data or force:
if obj:
instance_data = instances[instance_name] = obj
updated = True
else:
instance_data = {}
if updated:
with open(index_path, 'w') as fp:
json.dump(instances, fp, sort_keys=True, indent=2, separators=(',', ': '))
return instance_data
except Timeout:
puts_err(colored.red(textwrap.fill("Couldn't access index, it seems locked.")))
sys.exit(1)
sys.exit(ReturnCode.GENERIC_COMMUNICATION_ERROR)
except EthNodeInterfaceError as e:
click.secho(str(e), fg="red")
sys.exit(ReturnCode.ETH_INTERFACE_ERROR)
except RaidenUnrecoverableError as ex:
click.secho(f"FATAL: An un-recoverable error happen, Raiden is bailing {ex}", fg="red")
write_stack_trace(ex)
sys.exit(ReturnCode.FATAL)
except APIServerPortInUseError as ex:
click.secho(
f"ERROR: API Address {ex} is in use. Use --api-address "
f"to specify a different port.",
fg="red",
)
sys.exit(ReturnCode.PORT_ALREADY_IN_USE)
except filelock.Timeout:
name_or_id = ID_TO_NETWORKNAME.get(kwargs["network_id"], kwargs["network_id"])
click.secho(
f"FATAL: Another Raiden instance already running for account "
f"{to_checksum_address(address)} on network id {name_or_id}",
fg="red",
)
sys.exit(1)
except Exception as ex:
write_stack_trace(ex)
sys.exit(1)
finally:
# teardown order is important because of side-effects, both the
# switch_monitor and profiler could use the tracing api, for the
# teardown code to work correctly the teardown has to be done in the
# reverse order of the initialization.
if switch_monitor is not None:
def wrapper(*args, **kwargs):
try:
return func(*args, **kwargs)
except filelock.Timeout as e:
Log.debug(e)
except Exception as e:
Log.warning(f'{e} thrown while running {func.__name__}()')
return wrapper
def lock(self, name):
"""
Lock access to a specific name. Returns True when locking
was successful or False if this name is already locked.
"""
self._locks[name] = FileLock('{}/backy_{}.lock'.format(self._lock_dir, name), timeout=0)
try:
self._locks[name].acquire()
except Timeout:
return False
else:
return True
def load(user):
_logger.debug('Trying to load cache for user "{}"'.format(user))
try:
lock = _get_file_lock(user)
except:
# no lock, no luck
_logger.debug('Cannot get cache file lock object: using empty cache')
return _Cache(user)
# acquire cache lock
try:
# wait one second until timeout...
lock.acquire(1)
except filelock.Timeout:
# cache is already locked: return empty cache (will not be saved)
_logger.warn('Cache is locked by lock file "{}": using empty cache'.format(lock.lock_file))
return _Cache(user)
except Exception as e:
# other exception: return empty cache (will not be saved)
_logger.warn('Cannot acquire lock file "{}": {}'.format(lock.lock_file, e))
return _Cache(user)
_logger.debug('Cache lock file "{}" acquired'.format(lock.lock_file))
try:
cache_file_name = get_cache_file_name(user)
except:
# no lock, no luck
_logger.debug('Cannot get cache file name: using empty cache')
lock.release(force=True)
def hold_lock(lock_file, reporter=verbosity1):
py.path.local(lock_file.dirname).ensure(dir=1)
lock = FileLock(str(lock_file))
try:
try:
lock.acquire(0.0001)
except Timeout:
reporter("lock file {} present, will block until released".format(lock_file))
lock.acquire()
yield
finally:
lock.release(force=True)
for x in projects:
worker_args.append([x, logdir, args.loglevel,
args.backupcount, config,
args.check_changes,
args.uri, source_root,
args.batch])
try:
project_results = pool.map(worker, worker_args, 1)
except KeyboardInterrupt:
return FAILURE_EXITVAL
else:
if any([x == FAILURE_EXITVAL for x in project_results]):
ret = FAILURE_EXITVAL
if all([x == CONTINUE_EXITVAL for x in project_results]):
ret = CONTINUE_EXITVAL
except Timeout:
logger.warning("Already running, exiting.")
return FAILURE_EXITVAL
logging.shutdown()
return ret
def execute_locked(request, obj, message, call, *args, **kwargs):
"""Helper function to catch possible lock exception."""
try:
result = call(*args, **kwargs)
# With False the call is supposed to show errors on its own
if result is None or result:
messages.success(request, message)
except Timeout as error:
messages.error(
request,
_('Failed to lock the repository, another operation is in progress.')
)
report_error(error, request)
return redirect_param(obj, '#repository')
def esmon_virt(workspace, config_fpath):
"""
Start to install virtual machines
"""
# pylint: disable=bare-except
lock_file = config_fpath + ".lock"
lock = filelock.FileLock(lock_file)
try:
with lock.acquire(timeout=0):
try:
ret = esmon_virt_locked(workspace, config_fpath)
except:
ret = -1
logging.error("exception: %s", traceback.format_exc())
lock.release()
except filelock.Timeout:
ret = -1
logging.error("someone else is holding lock of file [%s], aborting "
"to prevent conflicts", lock_file)
return ret
def is_device_locked(serialno):
import filelock
try:
with device_lock(serialno, timeout=0.000001):
return False
except filelock.Timeout:
return True