def run(once=False, threads=1): """ Starts up the Judge-Clean threads. """ setup_logging() if rucio.db.sqla.util.is_old_db(): raise exception.DatabaseException( 'Database was not updated, daemon won\'t start') client_time, db_time = datetime.utcnow(), get_db_time() max_offset = timedelta(hours=1, seconds=10) if type(db_time) is datetime: if db_time - client_time > max_offset or client_time - db_time > max_offset: logging.critical( 'Offset between client and db time too big. Stopping Cleaner') return executable = 'judge-cleaner' hostname = socket.gethostname() sanity_check(executable=executable, hostname=hostname) if once: rule_cleaner(once) else: logging.info('Cleaner starting %s threads' % str(threads)) threads = [ threading.Thread(target=rule_cleaner, kwargs={'once': once}) for i in range(0, threads) ] [t.start() for t in threads] # Interruptible joins require a timeout. while threads[0].is_alive(): [t.join(timeout=3.14) for t in threads]
def run(once=False, younger_than=3, nattempts=10, vos=None, limit_suspicious_files_on_rse=5): """ Starts up the Suspicious-Replica-Recoverer threads. """ setup_logging() logger = formatted_logger(logging.log) if rucio.db.sqla.util.is_old_db(): raise DatabaseException('Database was not updated, daemon won\'t start') client_time, db_time = datetime.utcnow(), get_db_time() max_offset = timedelta(hours=1, seconds=10) if isinstance(db_time, datetime): if db_time - client_time > max_offset or client_time - db_time > max_offset: logger(logging.CRITICAL, 'Offset between client and db time too big. Stopping Suspicious-Replica-Recoverer.') return sanity_check(executable='rucio-replica-recoverer', hostname=socket.gethostname()) if once: declare_suspicious_replicas_bad(once, younger_than, nattempts, vos, limit_suspicious_files_on_rse) else: logger(logging.INFO, 'Suspicious file replicas recovery starting 1 worker.') t = threading.Thread(target=declare_suspicious_replicas_bad, kwargs={'once': once, 'younger_than': younger_than, 'nattempts': nattempts, 'vos': vos, 'limit_suspicious_files_on_rse': limit_suspicious_files_on_rse}) t.start() logger(logging.INFO, 'Waiting for interrupts') # Interruptible joins require a timeout. while t.is_alive(): t.join(timeout=3.14)
def run(once=False, threads=1): """ Starts up the Judge-Clean threads. """ client_time, db_time = datetime.utcnow(), get_db_time() max_offset = timedelta(hours=1, seconds=10) if db_time - client_time > max_offset or client_time - db_time > max_offset: logging.critical( 'Offset between client and db time too big. Stopping Cleaner') return hostname = socket.gethostname() sanity_check(executable='rucio-judge-cleaner', hostname=hostname) if once: rule_cleaner(once) else: logging.info('Cleaner starting %s threads' % str(threads)) threads = [ threading.Thread(target=rule_cleaner, kwargs={'once': once}) for i in xrange(0, threads) ] [t.start() for t in threads] # Interruptible joins require a timeout. while threads[0].is_alive(): [t.join(timeout=3.14) for t in threads]
def run(once=False, younger_than=3, nattempts=10, rse_expression='MOCK', vos=None, max_replicas_per_rse=100): """ Starts up the Suspicious-Replica-Recoverer threads. """ client_time, db_time = datetime.utcnow(), get_db_time() max_offset = timedelta(hours=1, seconds=10) if isinstance(db_time, datetime): if db_time - client_time > max_offset or client_time - db_time > max_offset: logging.critical('Offset between client and db time too big. Stopping Suspicious-Replica-Recoverer.') return sanity_check(executable='rucio-replica-recoverer', hostname=socket.gethostname()) if once: declare_suspicious_replicas_bad(once, younger_than, nattempts, rse_expression, vos, max_replicas_per_rse) else: logging.info('Suspicious file replicas recovery starting 1 worker.') t = threading.Thread(target=declare_suspicious_replicas_bad, kwargs={'once': once, 'younger_than': younger_than, 'nattempts': nattempts, 'rse_expression': rse_expression, 'vos': vos, 'max_replicas_per_rse': max_replicas_per_rse}) t.start() logging.info('waiting for interrupts') # Interruptible joins require a timeout. while t.isAlive(): t.join(timeout=3.14)