private async Task <CollectionPrepareResult> CheckFullCollectionTransitAsync(ITextStatusNotifier progress, CancellationToken token) { _logger.Debug("Detected full transit for collection {Collection}", _collectionName); progress.Status = "Removing documents from destination..."; await _destination.DeleteAllDocumentsAsync(token); progress.Status = "Counting documents..."; var count = await _source.CountAllAsync(token); return(new CollectionPrepareResult(SourceFilter.Empty, count)); }
private async Task <CollectionPrepareResult> CheckIterativeCollectionAsync(ITextStatusNotifier progress, IterativeTransitOptions iterOpts, CancellationToken token) { _logger.Debug("Detected iterative transit for collection {Collection} with checkpoint field {Field}", _collectionName, iterOpts.Field); progress.Status = "Searching checkpoint..."; var filter = await CreateIterativeFilterAsync(iterOpts, token); _logger.Debug("Counting how many documents should be transferred"); progress.Status = "Counting documents..."; var count = await _source.CountLagAsync(filter, token); _logger.Debug("Collection {Collection} has lag {Lag:N0}", _collectionName, count); return(new CollectionPrepareResult(filter, count)); }
public async Task <CollectionPrepareResult> PrepareCollectionAsync( IterativeTransitOptions?iterativeTransitOptions, ITextStatusNotifier progress, CancellationToken token) { var sw = new Stopwatch(); sw.Start(); var result = iterativeTransitOptions != null ? await CheckIterativeCollectionAsync(progress, iterativeTransitOptions, token) : await CheckFullCollectionTransitAsync(progress, token); sw.Stop(); _logger.Debug("Collection check was completed in {Elapsed} ms", sw.ElapsedMilliseconds); return(result); }