public Task <BoolResult> RegisterCheckpointAsync(OperationContext context, CheckpointState checkpointState) { TriggerGarbageCollection(context); var msg = checkpointState.ToString(); return(context.PerformOperationWithTimeoutAsync( Tracer, context => { var blobName = GenerateBlobName(); checkpointState.Consumers.TryAdd(_primaryMachineLocation); if (_configuration.WriteLegacyFormat) { return _storage.WriteAsync(context, blobName, JsonSerializer.Serialize(checkpointState, _jsonSerializerOptions)); } else { return _storage.WriteAsync(context, blobName, checkpointState); } }, traceOperationStarted: false, extraStartMessage: msg, extraEndMessage: _ => msg, timeout: _configuration.RegisterCheckpointTimeout)); }
private void WriteLatestCheckpoint(OperationContext context, CheckpointState?checkpointState) { try { _database.SetGlobalEntry(CheckpointInfoKey, checkpointState == null ? null : $"{checkpointState.Value.CheckpointId},{checkpointState.Value.CheckpointTime}"); } catch (Exception e) { _tracer.Warning(context, $"Failed to write latest checkpoint state '{checkpointState?.ToString()}' to database: {e}"); } }