public Task<Result<MachineMapping>> RegisterMachineAsync(OperationContext context, MachineLocation machineLocation) { return context.PerformOperationAsync(Tracer, async () => { if (Configuration.DistributedContentConsumerOnly) { return Result.Success(new MachineMapping(machineLocation, new MachineId(0))); } // Get the local machine id var machineIdAndIsAdded = await _clusterStateKey.UseNonConcurrentReplicatedHashAsync( context, Configuration.RetryWindow, RedisOperation.StartupGetOrAddLocalMachine, (batch, key) => batch.GetOrAddMachineAsync(key, machineLocation.ToString(), _clock.UtcNow), timeout: Configuration.ClusterRedisOperationTimeout) .ThrowIfFailureAsync(); Tracer.Debug(context, $"Assigned machine id={machineIdAndIsAdded.machineId}, location={machineLocation}, isAdded={machineIdAndIsAdded.isAdded}."); return Result.Success(new MachineMapping(machineLocation, new MachineId(machineIdAndIsAdded.machineId))); }, traceOperationStarted: false, extraEndMessage: r => { if (r.Succeeded) { return $"MachineLocation=[{r.Value.Location}] MachineId=[{r.Value.Id}]"; } else { return $"MachineLocation=[{machineLocation}]"; } }); }
internal async Task <int> RegisterMachineAsync(OperationContext context, MachineLocation machineLocation) { // Get the local machine id var machineIdAndIsAdded = await _clusterStateKey.UseReplicatedHashAsync( context, RedisOperation.StartupGetOrAddLocalMachine, (batch, key) => batch.GetOrAddMachineAsync(key, machineLocation.ToString(), _clock.UtcNow)) .ThrowIfFailureAsync(); Tracer.Debug(context, $"Assigned machine id={machineIdAndIsAdded.machineId}, location={machineLocation}, isAdded={machineIdAndIsAdded.isAdded}."); return(machineIdAndIsAdded.machineId); }
public async Task <MachineMapping> RegisterMachineAsync(OperationContext context, MachineLocation machineLocation) { // Get the local machine id var machineIdAndIsAdded = await _clusterStateKey.UseNonConcurrentReplicatedHashAsync( context, _configuration.RetryWindow, RedisOperation.StartupGetOrAddLocalMachine, (batch, key) => batch.GetOrAddMachineAsync(key, machineLocation.ToString(), _clock.UtcNow), timeout : _configuration.ClusterRedisOperationTimeout) .ThrowIfFailureAsync(); Tracer.Debug(context, $"Assigned machine id={machineIdAndIsAdded.machineId}, location={machineLocation}, isAdded={machineIdAndIsAdded.isAdded}."); return(new MachineMapping(machineLocation, new MachineId(machineIdAndIsAdded.machineId))); }
internal async Task <int> RegisterMachineAsync(OperationContext context, MachineLocation machineLocation) { // Get the local machine id return(await ExecuteRedisFallbackAsync(context, redisDb => redisDb.ExecuteBatchAsync(context, async batch => { var machineIdAndIsAdded = await batch.GetOrAddMachineAsync(_clusterStateKey, machineLocation.ToString(), _clock.UtcNow); Tracer.Debug(context, $"Assigned machine id={machineIdAndIsAdded.machineId}, location={machineLocation}, isAdded={machineIdAndIsAdded.isAdded}."); return Result.Success(machineIdAndIsAdded.machineId); }, RedisOperation.StartupGetOrAddLocalMachine)).ThrowIfFailureAsync()); }