def set_new_dids(dids, new_flag, session=None):
"""
Set/reset the flag new
:param dids: A list of dids
:param new_flag: A boolean to flag new DIDs.
:param session: The database session in use.
"""
for did in dids:
try:
# session.query(models.DataIdentifier).filter_by(scope=did['scope'], name=did['name']).with_for_update(nowait=True).first()
# session.query(models.DataIdentifier).filter_by(scope=did['scope'], name=did['name']).first()
rowcount = session.query(models.DataIdentifier).filter_by(scope=did['scope'], name=did['name']).update({'is_new': new_flag}, synchronize_session=False)
if not rowcount:
raise exception.DataIdentifierNotFound("Data identifier '%s:%s' not found" % (did['scope'], did['name']))
except DatabaseError as error:
raise exception.DatabaseException('%s : Cannot update %s:%s' % (error.args[0], did['scope'], did['name']))
try:
session.flush()
except IntegrityError as error:
raise exception.RucioException(error.args[0])
except DatabaseError as error:
raise exception.RucioException(error.args[0])
return True
评论列表
文章目录