def touch_transfer(external_host, transfer_id, session=None):
"""
Update the timestamp of requests in a transfer. Fails silently if the transfer_id does not exist.
:param request_host: Name of the external host.
:param transfer_id: External transfer job id as a string.
:param session: Database session to use.
"""
record_counter('core.request.touch_transfer')
try:
# don't touch it if it's already touched in 30 seconds
session.query(models.Request).with_hint(models.Request, "INDEX(REQUESTS REQUESTS_EXTERNALID_UQ)", 'oracle')\
.filter_by(external_id=transfer_id)\
.filter(models.Request.state == RequestState.SUBMITTED)\
.filter(models.Request.updated_at < datetime.datetime.utcnow() - datetime.timedelta(seconds=30))\
.update({'updated_at': datetime.datetime.utcnow()}, synchronize_session=False)
except IntegrityError, e:
raise RucioException(e.args)
评论列表
文章目录