lock.py 文件源码

python
阅读 30 收藏 0 点赞 0 评论 0

项目:rucio 作者: rucio01 项目源码 文件源码
def touch_dataset_locks(dataset_locks, session=None):
    """
    Update the accessed_at timestamp of the given dataset locks + eol_at.

    :param replicas: the list of dataset locks.
    :param session: The database session in use.

    :returns: True, if successful, False otherwise.
    """

    rse_ids, now = {}, datetime.utcnow()
    for dataset_lock in dataset_locks:
        if 'rse_id' not in dataset_lock:
            if dataset_lock['rse'] not in rse_ids:
                rse_ids[dataset_lock['rse']] = get_rse_id(rse=dataset_lock['rse'], session=session)
            dataset_lock['rse_id'] = rse_ids[dataset_lock['rse']]

        eol_at = define_eol(dataset_lock['scope'], dataset_lock['name'], rses=[{'id': dataset_lock['rse_id']}], session=session)
        try:
            session.query(models.DatasetLock).filter_by(scope=dataset_lock['scope'], name=dataset_lock['name'], rse_id=dataset_lock['rse_id']).\
                update({'accessed_at': dataset_lock.get('accessed_at') or now}, synchronize_session=False)
            session.query(models.ReplicationRule).filter_by(scope=dataset_lock['scope'], name=dataset_lock['name']).update({'eol_at': eol_at}, synchronize_session=False)
        except DatabaseError:
            return False

    return True
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号