public async Task DeleteCompareExchangeValue() { var key = GetStringQueryString("key"); var raftRequestId = GetRaftRequestIdFromQuery(); // ReSharper disable once PossibleInvalidOperationException var index = GetLongQueryString("index", true).Value; await ServerStore.EnsureNotPassiveAsync(); using (ServerStore.ContextPool.AllocateOperationContext(out TransactionOperationContext context)) { var command = new RemoveCompareExchangeCommand(Database.Name, key, index, context, raftRequestId); using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream())) { (var raftIndex, var response) = await ServerStore.SendToLeaderAsync(context, command); await ServerStore.Cluster.WaitForIndexNotification(raftIndex); var result = (CompareExchangeCommandBase.CompareExchangeResult)response; context.Write(writer, new DynamicJsonValue { [nameof(CompareExchangeResult <object> .Index)] = result.Index, [nameof(CompareExchangeResult <object> .Value)] = result.Value, [nameof(CompareExchangeResult <object> .Successful)] = result.Index == raftIndex }); } } }
public async Task DeleteCompareExchangeValue() { var prefix = Database.Name + "/"; var key = prefix + GetStringQueryString("key"); // ReSharper disable once PossibleInvalidOperationException var index = GetLongQueryString("index", true).Value; ServerStore.EnsureNotPassive(); using (ServerStore.ContextPool.AllocateOperationContext(out TransactionOperationContext context)) { var command = new RemoveCompareExchangeCommand(key, index, context); using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream())) { (var raftIndex, var res) = await ServerStore.SendToLeaderAsync(command); await ServerStore.Cluster.WaitForIndexNotification(raftIndex); using (context.OpenReadTransaction()) { var tuple = (AddOrUpdateCompareExchangeCommand.CompareExchangeResult)res; context.Write(writer, new DynamicJsonValue { [nameof(CompareExchangeResult <object> .Index)] = tuple.Index, [nameof(CompareExchangeResult <object> .Value)] = tuple.Value, [nameof(CompareExchangeResult <object> .Successful)] = tuple.Index == raftIndex }); } } } }