renewRunLease method

  1. @override
Future<bool> renewRunLease(
  1. String runId, {
  2. required String ownerId,
  3. Duration leaseDuration = const Duration(seconds: 30),
})

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;
}