public async Task <IUpdateResponse <SystemEventElasticsearchDocument> > UpdateWithRetryOnPreviousIndexAsync( string documentId, SystemEventElasticsearchPartialDocument partialDocument, CancellationToken cancellationToken, int retryOnConflict) { try { var indexName = _indexFactory.GetIndexName(); return(await _esClient.UpdateAsync <SystemEventElasticsearchDocument, SystemEventElasticsearchPartialDocument>( documentId, u => u .Index(indexName) .Doc(partialDocument) .RetryOnConflict(retryOnConflict), cancellationToken : cancellationToken)); } catch { // Ignore } var previousIndexName = _indexFactory.GetPreviousIndexName(); return(await _esClient.UpdateAsync <SystemEventElasticsearchDocument, SystemEventElasticsearchPartialDocument>( documentId, u => u .Index(previousIndexName) .Doc(partialDocument) .RetryOnConflict(retryOnConflict), cancellationToken : cancellationToken)); }
public async Task <IUpdateResponse <SystemEventElasticsearchDocument> > UpdateAsync( string documentId, SystemEventElasticsearchPartialDocument partialDocument, CancellationToken cancellationToken, int retryOnConflict = 3, bool retryWithPreviousIndex = false) { string indexName = null; var latency = PreInvoke(_clientName, _updateMethodName, documentId, partialDocument); try { indexName = _indexFactory.GetIndexName(); Task <IUpdateResponse <SystemEventElasticsearchDocument> > updateResult = null; if (retryWithPreviousIndex) { updateResult = UpdateWithRetryOnPreviousIndexAsync( documentId, partialDocument, cancellationToken, retryOnConflict); } else { updateResult = _esClient.UpdateAsync <SystemEventElasticsearchDocument, SystemEventElasticsearchPartialDocument>( documentId, u => u .Index(indexName) .Doc(partialDocument) .RetryOnConflict(retryOnConflict), cancellationToken: cancellationToken); } var result = await updateResult; PostInvokeSuccess(latency, _clientName, _updateMethodName, documentId, partialDocument, indexName); return(result); } catch (Exception ex) { PostInvokeFailure(_clientName, _updateMethodName, ex, documentId, partialDocument, indexName); throw; } }