示例#1
0
        // Token: 0x06001955 RID: 6485 RVA: 0x00068D58 File Offset: 0x00066F58
        private bool DoesMountPointNeedToBeFixed(IEnumerable <CopyStatusClientCachedEntry> targetDbSet, out MountedFolderPath volumeName)
        {
            volumeName = MountedFolderPath.Empty;
            RpcDatabaseCopyStatus2 copyStatus = base.Context.TargetCopyStatus.CopyStatus;

            if (FailedSuspendedCopyAutoReseedWorkflow.DoesCopyHaveMountPointConfigured(copyStatus))
            {
                return(false);
            }
            CopyStatusClientCachedEntry copyStatusClientCachedEntry = targetDbSet.FirstOrDefault((CopyStatusClientCachedEntry status) => status.Result == CopyStatusRpcResult.Success && FailedSuspendedCopyAutoReseedWorkflow.DoesCopyHaveMountPointConfigured(status.CopyStatus));

            if (copyStatusClientCachedEntry == null)
            {
                base.TraceError("Database copy is missing a mount point, but no other copies in the grouping have mount points either.", new object[0]);
                return(false);
            }
            volumeName = new MountedFolderPath(copyStatusClientCachedEntry.CopyStatus.DatabaseVolumeName);
            return(true);
        }
示例#2
0
        // Token: 0x06001958 RID: 6488 RVA: 0x00069248 File Offset: 0x00067448
        private IEnumerable <CopyStatusClientCachedEntry> FindTargetDbSetFromNeighbors(AutoReseedContext context)
        {
            IEnumerable <CopyStatusClientCachedEntry> enumerable  = null;
            IEnumerable <CopyStatusClientCachedEntry> enumerable2 = null;
            Dictionary <AmServerName, IEnumerable <CopyStatusClientCachedEntry> > copyStatusesForDag           = context.CopyStatusesForDag;
            IEnumerable <KeyValuePair <AmServerName, IEnumerable <CopyStatusClientCachedEntry> > > enumerable3 = from kvp in copyStatusesForDag
                                                                                                                 let server = kvp.Key
                                                                                                                              let isTargetServer = this.IsTargetServer(server, context.TargetServerName)
                                                                                                                                                   where this.ShouldSelectServer(isTargetServer)
                                                                                                                                                   orderby isTargetServer descending
                                                                                                                                                   select kvp;

            foreach (KeyValuePair <AmServerName, IEnumerable <CopyStatusClientCachedEntry> > keyValuePair in enumerable3)
            {
                AmServerName key = keyValuePair.Key;
                IEnumerable <CopyStatusClientCachedEntry> value  = keyValuePair.Value;
                IEnumerable <CopyStatusClientCachedEntry> source = from status in value
                                                                   where status.Result == CopyStatusRpcResult.Success && FailedSuspendedCopyAutoReseedWorkflow.DoesCopyHaveMountPointConfigured(status.CopyStatus)
                                                                   select status;
                IEnumerable <IGrouping <string, CopyStatusClientCachedEntry> > databaseSets = source.GroupBy((CopyStatusClientCachedEntry status) => status.CopyStatus.DatabaseVolumeName, StringComparer.OrdinalIgnoreCase);
                IGrouping <string, CopyStatusClientCachedEntry> grouping = FailedSuspendedCopyAutoReseedWorkflow.FindDatabaseGrouping(context, databaseSets);
                if (grouping != null)
                {
                    int num = grouping.Count <CopyStatusClientCachedEntry>();
                    if (num == context.Dag.AutoDagDatabaseCopiesPerVolume)
                    {
                        enumerable2 = grouping;
                        break;
                    }
                }
            }
            if (enumerable2 != null)
            {
                Dictionary <Guid, CopyStatusClientCachedEntry> remoteDbMap = enumerable2.ToDictionary((CopyStatusClientCachedEntry status) => status.DbGuid);
                enumerable = from status in context.CopyStatusesForTargetServer
                             where remoteDbMap.ContainsKey(status.DbGuid)
                             select status;
                enumerable = enumerable.ToArray <CopyStatusClientCachedEntry>();
            }
            return(enumerable);
        }