public static List <string> GetServersWithServerRoleInSite(string serverName, ServerRole serverRole) { IADToplogyConfigurationSession iadtoplogyConfigurationSession = ADSessionFactory.CreateIgnoreInvalidRootOrgSession(true); IADServer iadserver = null; if (!string.IsNullOrEmpty(serverName)) { if (!SharedHelper.StringIEquals(serverName, "localhost")) { goto IL_2F; } } try { iadserver = iadtoplogyConfigurationSession.FindServerByName(Environment.MachineName); goto IL_5A; } catch (LocalServerNotFoundException) { goto IL_5A; } IL_2F: string nodeNameFromFqdn = MachineName.GetNodeNameFromFqdn(serverName); iadserver = iadtoplogyConfigurationSession.FindServerByName(nodeNameFromFqdn); string arg = "FindServerByName"; if (iadserver == null) { ExTraceGlobals.ReplayConfigurationTracer.TraceDebug <string, string>(0L, "GetServersWithServerRoleInSite: {0} didn't find any server for {1}", arg, serverName); } IL_5A: return(ReplayConfiguration.GetServersWithServerRoleInSiteByServer(iadserver, serverRole)); }
private bool CleanupServers(IADToplogyConfigurationSession adSession, IClusterDB clusdb, HashSet <Guid> serverGuids, Dictionary <Guid, IADServer> validServers) { if (validServers.Count == 0) { ReplayCrimsonEvents.ClusdbPeriodicCleanupSkipped.Log <string, string>("Server", "Could not find a single valid server in the cached list"); return(false); } IADServer value = validServers.First <KeyValuePair <Guid, IADServer> >().Value; if (adSession.FindServerByName(value.Name) == null) { ReplayCrimsonEvents.ClusdbPeriodicCleanupSkipped.Log <string, string>("Server", "Could not find a single valid server in AD"); return(false); } bool result = false; try { this.RemoveStaleServerGuids(clusdb, serverGuids); serverGuids.ExceptWith(this.staleServers); result = true; } catch (Exception ex) { ReplayCrimsonEvents.ClusdbPeriodicCleanupFailed.Log <string, string>("Server", ex.ToString()); } this.staleServers = serverGuids; return(result); }
// Token: 0x060000AB RID: 171 RVA: 0x00004F20 File Offset: 0x00003120 protected override void RunInternal() { IADToplogyConfigurationSession iadtoplogyConfigurationSession = ADSessionFactory.CreateIgnoreInvalidRootOrgSession(true); IADServer iadserver = iadtoplogyConfigurationSession.FindServerByName(this.m_nodeName.NetbiosName); if (iadserver == null) { throw new ServerNotFoundException(this.m_nodeName.NetbiosName); } IADDatabase[] array = iadtoplogyConfigurationSession.GetAllDatabases(iadserver).ToArray <IADDatabase>(); if (array.Length <= 0) { AmTrace.Info("Server '{0}' does not have any databases that needs to be marked as dismounted", new object[] { this.m_nodeName }); return; } AmDbActionCode actionCode = new AmDbActionCode(AmDbActionInitiator.Automatic, this.m_reasonCode, AmDbActionCategory.SyncState); foreach (IADDatabase db in array) { AmDbClusterDatabaseSyncOperation operation = new AmDbClusterDatabaseSyncOperation(db, actionCode); this.m_clusDbSyncRequests++; base.EnqueueDatabaseOperation(operation); } base.StartDatabaseOperations(); }
public static IADDatabaseAvailabilityGroup GetLocalServerDatabaseAvailabilityGroup(out string errorMessage) { IADDatabaseAvailabilityGroup iaddatabaseAvailabilityGroup = null; Exception ex = null; errorMessage = string.Empty; try { IADToplogyConfigurationSession iadtoplogyConfigurationSession = ADSessionFactory.CreateIgnoreInvalidRootOrgSession(true); IADServer iadserver = iadtoplogyConfigurationSession.FindServerByName(Dependencies.ManagementClassHelper.LocalMachineName); if (iadserver != null) { iaddatabaseAvailabilityGroup = iadtoplogyConfigurationSession.FindDagByServer(iadserver); if (iaddatabaseAvailabilityGroup == null) { ex = new CouldNotFindDagObjectForServer(iadserver.Name); } } else { ex = new CouldNotFindServerObject(Environment.MachineName); } } catch (ADTransientException ex2) { AmTrace.Error("GetLocalServerDatabaseAvailabilityGroup got exception: {0}", new object[] { ex2 }); ex = ex2; } catch (ADExternalException ex3) { AmTrace.Error("GetLocalServerDatabaseAvailabilityGroup got exception: {0}", new object[] { ex3 }); ex = ex3; } catch (ADOperationException ex4) { AmTrace.Error("GetLocalServerDatabaseAvailabilityGroup got exception: {0}", new object[] { ex4 }); ex = ex4; } if (iaddatabaseAvailabilityGroup == null) { errorMessage = ex.Message; if (string.IsNullOrEmpty(errorMessage)) { errorMessage = ex.ToString(); } } return(iaddatabaseAvailabilityGroup); }
public void DoDumpsterRedeliveryIfRequired(Guid dbGuid) { IADToplogyConfigurationSession iadtoplogyConfigurationSession = ADSessionFactory.CreatePartiallyConsistentRootOrgSession(true); IADDatabase db = iadtoplogyConfigurationSession.FindDatabaseByGuid(dbGuid); IADServer server = iadtoplogyConfigurationSession.FindServerByName(Environment.MachineName); IADDatabaseAvailabilityGroup dag = iadtoplogyConfigurationSession.FindDagByServer(server); ReplayConfiguration replayConfig = RemoteReplayConfiguration.TaskGetReplayConfig(dag, db, server); DumpsterRedeliveryWrapper.DoRedeliveryIfRequired(replayConfig); }
public void TriggerDumpsterEx(Guid dbGuid, bool fTriggerSafetyNet, DateTime failoverTimeUtc, DateTime startTimeUtc, DateTime endTimeUtc, long lastLogGenBeforeActivation, long numLogsLost) { IADToplogyConfigurationSession iadtoplogyConfigurationSession = ADSessionFactory.CreatePartiallyConsistentRootOrgSession(true); IADDatabase db = iadtoplogyConfigurationSession.FindDatabaseByGuid(dbGuid); IADServer server = iadtoplogyConfigurationSession.FindServerByName(Environment.MachineName); IADDatabaseAvailabilityGroup dag = iadtoplogyConfigurationSession.FindDagByServer(server); ReplayConfiguration configuration = RemoteReplayConfiguration.TaskGetReplayConfig(dag, db, server); DumpsterRedeliveryWrapper.MarkRedeliveryRequired(configuration, failoverTimeUtc, startTimeUtc, endTimeUtc, lastLogGenBeforeActivation, numLogsLost); }
public void TriggerDumpster(Guid dbGuid, DateTime inspectorTime) { IADToplogyConfigurationSession iadtoplogyConfigurationSession = ADSessionFactory.CreatePartiallyConsistentRootOrgSession(true); IADDatabase db = iadtoplogyConfigurationSession.FindDatabaseByGuid(dbGuid); IADServer server = iadtoplogyConfigurationSession.FindServerByName(Environment.MachineName); IADDatabaseAvailabilityGroup dag = iadtoplogyConfigurationSession.FindDagByServer(server); ReplayConfiguration configuration = RemoteReplayConfiguration.TaskGetReplayConfig(dag, db, server); DumpsterRedeliveryWrapper.MarkRedeliveryRequired(configuration, inspectorTime, 0L, 0L); }
// Token: 0x06000087 RID: 135 RVA: 0x000045F4 File Offset: 0x000027F4 protected IADDatabase[] GetDatabases() { IADToplogyConfigurationSession iadtoplogyConfigurationSession = ADSessionFactory.CreateIgnoreInvalidRootOrgSession(true); IADServer iadserver = iadtoplogyConfigurationSession.FindServerByName(this.m_nodeName.NetbiosName); if (iadserver == null) { throw new ServerNotFoundException(this.m_nodeName.NetbiosName); } return(iadtoplogyConfigurationSession.GetAllDatabases(iadserver).ToArray <IADDatabase>()); }
public static IADDatabaseAvailabilityGroup GetLocalServerDatabaseAvailabilityGroup(IADToplogyConfigurationSession adSession, out Exception exception) { IADDatabaseAvailabilityGroup dag = null; Exception objNotFoundEx = null; exception = null; exception = SharedHelper.RunADOperationEx(delegate(object param0, EventArgs param1) { if (adSession == null) { adSession = ADSessionFactory.CreateIgnoreInvalidRootOrgSession(true); } if (adSession != null) { IADServer iadserver = adSession.FindServerByName(SharedDependencies.ManagementClassHelper.LocalMachineName); if (iadserver != null) { ADObjectId databaseAvailabilityGroup = iadserver.DatabaseAvailabilityGroup; if (databaseAvailabilityGroup != null) { dag = adSession.ReadADObject <IADDatabaseAvailabilityGroup>(databaseAvailabilityGroup); return; } } else { objNotFoundEx = new CouldNotFindServerObject(Environment.MachineName); } } }); if (objNotFoundEx != null) { exception = objNotFoundEx; } return(dag); }