renewRunLease method
Renews the lease for runId when owned by ownerId.
Returns true when the lease is extended, or false if ownership
has changed or the run is no longer runnable.
Implementation
@override
Future<bool> renewRunLease(
String runId, {
required String ownerId,
Duration leaseDuration = const Duration(seconds: 30),
}) async {
final now = _clock.now().toUtc();
final leaseExpiresAt = now.add(leaseDuration);
final updated = await _connections.runInTransaction((ctx) async {
final query = ctx
.query<StemWorkflowRun>()
.whereEquals('id', runId)
.whereEquals('namespace', namespace)
.whereEquals('status', WorkflowStatus.running.name)
.whereEquals('ownerId', ownerId);
return query.update({
'leaseExpiresAt': leaseExpiresAt,
'updatedAt': now,
});
});
return updated > 0;
}