Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions daemon/daemon.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,19 @@
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

import functools, traceback

def log_exceptions(f):
''' decorator logging exceptions and not letting them past '''
@functools.wraps(f)
def wrapper( self, *args, **kwargs ):
try:
return f( self, *args, **kwargs )
except Exception:
self.log(traceback.format_exc())
return None
return wrapper

def to_did(namespace, name):
return f"{namespace}:{name}"

Expand Down Expand Up @@ -296,6 +309,7 @@ def tape_replicas_by_rse(self, active_handles):
tape_replicas_by_rse.setdefault(rse, {})[replica.did()] = replica
return tape_replicas_by_rse

@log_exceptions
@synchronized
def check_project_state(self):
if self.Removed:
Expand All @@ -311,6 +325,7 @@ def check_project_state(self):
self.log("removing project:", reason)
self.remove_me(reason) # this will cancel this and other repeating task

@log_exceptions
@synchronized
def sync_replicas(self):
if self.Removed:
Expand Down Expand Up @@ -382,6 +397,7 @@ def sync_replicas(self):
self.error(textwrap.indent(traceback.format_exc(), " "))
self.debug("sync_replicas done")

@log_exceptions
@synchronized
def update_replicas_availability(self):
if self.Removed:
Expand Down Expand Up @@ -448,6 +464,7 @@ def __init__(self, db, rse_config, rucio_client, url_schemes):
self.RucioClient = rucio_client
self.URLSchemes = url_schemes or None

@log_exceptions
def clean(self):
self.debug("cleaner...")
try:
Expand Down