markFailed method

  1. @override
Future<void> markFailed(
  1. String runId,
  2. Object error,
  3. StackTrace stack, {
  4. bool terminal = false,
})

Implementation

@override
Future<void> markFailed(
  String runId,
  Object error,
  StackTrace stack, {
  bool terminal = false,
}) async {
  await _client.run((Connection conn) async {
    final now = _nowUtc();
    if (terminal) {
      await _deleteWatcherForRun(conn, runId);
    }
    await conn.execute(
      Sql.named('''
        UPDATE $_runsTable
           SET status = @status,
               last_error = @error::jsonb,
               updated_at = @updatedAt
         WHERE id = @id
      '''),
      parameters: {
        'status':
            (terminal ? WorkflowStatus.failed : WorkflowStatus.running).name,
        'error': jsonEncode({
          'error': error.toString(),
          'stack': stack.toString(),
        }),
        'id': runId,
        'updatedAt': now,
      },
    );
  });
}