/// <summary> /// isLastFile param true by default to correctly restore identities and compare exchange from V41 ravendbdump file. /// </summary> /// <param name="ensureStepsProcessed"></param> /// <param name="isLastFile"></param> /// <returns></returns> public async Task <SmugglerResult> ExecuteAsync(bool ensureStepsProcessed = true, bool isLastFile = true) { var result = _result ?? new SmugglerResult(); using (_patcher?.Initialize()) using (var initializeResult = await _source.InitializeAsync(_options, result)) await using (_destination.InitializeAsync(_options, result, initializeResult.BuildNumber)) { ModifyV41OperateOnTypes(initializeResult.BuildNumber, isLastFile); var buildType = BuildVersion.Type(initializeResult.BuildNumber); var currentType = await _source.GetNextTypeAsync(); while (currentType != DatabaseItemType.None) { await ProcessTypeAsync(currentType, result, buildType, ensureStepsProcessed); currentType = await _source.GetNextTypeAsync(); } if (ensureStepsProcessed) { EnsureProcessed(result); } return(result); } }