public async Task <UpdateItemResult> UpdateItemUsingRetryPolicyAsync(UpdateItemRequest request, RetryPolicy retryPolicy) { var retryCount = 0; Exception lastException; do { if (retryCount > 0) { await Task.Delay(retryPolicy.GetDelay(retryCount)).ConfigureAwait(false); } try { return(await UpdateItemAsync(request).ConfigureAwait(false)); } catch (DynamoDbException ex) when(ex.IsTransient) { lastException = ex; } retryCount++; } while (retryPolicy.ShouldRetry(retryCount)); throw lastException; }
// Conditional patch public Task <UpdateItemResult> PatchAsync(Key <T> key, IList <Change> changes, Expression[] conditions, ReturnValues?returnValues = null) { #region Preconditions if (changes == null) { throw new ArgumentNullException(nameof(changes)); } if (conditions == null) { throw new ArgumentNullException(nameof(conditions)); } #endregion var request = new UpdateItemRequest(tableName, key, changes) { ReturnValues = returnValues }; if (conditions.Length > 0) { request.SetConditions(conditions); } return(client.UpdateItemWithRetryPolicy(request, retryPolicy)); }
public async Task <UpdateItemResult> UpdateItemAsync(UpdateItemRequest request) { var httpRequest = Setup("UpdateItem", request.ToJson()); var json = await SendAndReadJsonElementAsync(httpRequest).ConfigureAwait(false); return(UpdateItemResult.FromJsonElement(json)); }
public Task <UpdateItemResult> PatchAsync(Key <T> key, IList <Change> changes, ReturnValues returnValues) { var request = new UpdateItemRequest(tableName, key, changes) { ReturnValues = returnValues }; return(client.UpdateItemWithRetryPolicy(request, retryPolicy)); }
public async Task <UpdateItemResult> UpdateItemAsync(UpdateItemRequest request) { var httpRequest = Setup("UpdateItem", request.ToJson()); var responseText = await SendAsync(httpRequest).ConfigureAwait(false); var responseJson = JsonObject.Parse(responseText); return(UpdateItemResult.FromJson(responseJson)); }
// Conditional patch public Task <UpdateItemResult> PatchAsync( Key <T> key, Change[] changes, Expression[] conditions, ReturnValues?returnValues = null) { var request = new UpdateItemRequest(tableName, key, changes, conditions, returnValues); return(client.UpdateItemUsingRetryPolicyAsync(request, retryPolicy)); }
public async Task <UpdateItemResult> PatchAsync(Key <T> key, params Change[] changes) { #region Preconditions if (changes == null) { throw new ArgumentNullException(nameof(changes)); } #endregion var request = new UpdateItemRequest(tableName, key, changes); return(await client.UpdateItemWithRetryPolicy(request, retryPolicy).ConfigureAwait(false)); }
public async Task <UpdateItemResult> UpdateItemWithRetryPolicy(UpdateItemRequest request, RetryPolicy retryPolicy) { var retryCount = 0; Exception lastError = null; while (retryPolicy.ShouldRetry(retryCount)) { try { return(await UpdateItem(request).ConfigureAwait(false)); } catch (DynamoDbException ex) when(ex.IsTransient) { lastError = ex; } retryCount++; await Task.Delay(retryPolicy.GetDelay(retryCount)).ConfigureAwait(false); } throw lastError; }
public Task <UpdateItemResult> PatchAsync(Key <T> key, Change[] changes, ReturnValues returnValues) { var request = new UpdateItemRequest(tableName, key, changes, returnValues: returnValues); return(client.UpdateItemUsingRetryPolicyAsync(request, retryPolicy)); }
public async Task <UpdateItemResult> PatchAsync(Key <T> key, params Change[] changes) { var request = new UpdateItemRequest(tableName, key, changes); return(await client.UpdateItemUsingRetryPolicyAsync(request, retryPolicy).ConfigureAwait(false)); }