def __check_suspicious_files(req, suspicious_patterns): """ Check suspicious files when a transfer failed. :param req: Request object. :param suspicious_patterns: A list of regexp pattern object. """ is_suspicious = False if not suspicious_patterns: return is_suspicious try: logging.debug("Checking suspicious file for request: %s, transfer error: %s", req['request_id'], req['err_msg']) for pattern in suspicious_patterns: if pattern.match(req['err_msg']): is_suspicious = True break if is_suspicious: reason = 'Reported by conveyor' urls = request_core.get_sources(req['request_id'], rse_id=req['source_rse_id']) if urls: pfns = [] for url in urls: pfns.append(url['url']) if pfns: logging.debug("Found suspicious urls: %s", str(pfns)) replica_core.declare_bad_file_replicas(pfns, reason=reason, issuer=InternalAccount('root'), status=BadFilesStatus.SUSPICIOUS) except Exception as error: logging.warning("Failed to check suspicious file with request: %s - %s", req['request_id'], str(error)) return is_suspicious
def get_source_rse(request_id, scope, name, src_url, session=None): try: if not request_id: return None, None sources = request_core.get_sources(request_id, session=session) for source in sources: if source['url'] == src_url: src_rse_id = source['rse_id'] src_rse_name = rse_core.get_rse_name(src_rse_id, session=session) logging.debug("Find rse name %s for %s" % (src_rse_name, src_url)) return src_rse_name, src_rse_id # cannot find matched surl logging.warn('Cannot get correct RSE for source url: %s' % (src_url)) return None, None except: logging.error('Cannot get correct RSE for source url: %s(%s)' % (src_url, traceback.format_exc())) return None, None