private void GenerateDeltaForForceSync( IForceSyncItemService forceSyncItemService, IForceSyncAnalysisProvider forceSyncAnalysisProvider) { int batchSize = 100; List <string> forceSyncItemIds = new List <string>(); foreach (string forceSyncItemId in forceSyncItemService.GetItemsForForceSync()) { TraceManager.TraceInformation(String.Format(CultureInfo.InvariantCulture, "Will attempt to force sync work item {0} from migration source {1}", forceSyncItemId, forceSyncItemService.MigrationSourceid)); forceSyncItemIds.Add(forceSyncItemId); if (forceSyncItemIds.Count == batchSize) { forceSyncAnalysisProvider.GenerateDeltaForForceSync(forceSyncItemIds); forceSyncItemIds.Clear(); } } if (forceSyncItemIds.Count > 0) { forceSyncAnalysisProvider.GenerateDeltaForForceSync(forceSyncItemIds); } }
/// <summary> /// Generate delta table /// </summary> internal void GenerateDeltaTables(Guid sourceId) { Debug.Assert(m_serviceContainers.ContainsKey(sourceId), string.Format(MigrationToolkitResources.UnknownSourceId, sourceId)); IAnalysisProvider analysisProvider; if (!m_analysisProviders.TryGetValue(sourceId, out analysisProvider)) { throw new MigrationException(string.Format( MigrationToolkitResources.Culture, MigrationToolkitResources.UnknownSourceId, sourceId)); } try { ChangeGroupService cgService = m_serviceContainers[sourceId].GetService(typeof(ChangeGroupService)) as ChangeGroupService; Debug.Assert(null != cgService, "Change group service is not properly initialized"); cgService.RemoveIncompleteChangeGroups(); analysisProvider.GenerateDeltaTable(); } catch (MigrationUnresolvedConflictException) { // We have already created an unresolved conflict, just return. return; } catch (Exception e) { ConflictManager manager = m_serviceContainers[sourceId].GetService(typeof(ConflictManager)) as ConflictManager; ErrorManager.TryHandleException(e, manager); } IForceSyncAnalysisProvider forceSyncAnalysisProvider = analysisProvider as IForceSyncAnalysisProvider; if (forceSyncAnalysisProvider != null) { IForceSyncItemService forceSyncItemService = m_serviceContainers[sourceId].GetService(typeof(IForceSyncItemService)) as IForceSyncItemService; if (forceSyncItemService == null) { Debug.Fail("ForceSyncItemService not found"); } else { GenerateDeltaForForceSync(forceSyncItemService, forceSyncAnalysisProvider); } } }