internal static void JoinForceCleanupNode(AmServerName pamServer, AmServerName serverName, HaTaskOutputHelper output) { string verboseLog = null; output.AppendLogMessage("{0} is probably cleaned up, try to evict it and join it back", new object[] { serverName.NetbiosName }); try { ReplayRpcClientWrapper.RunEvictNodeFromCluster(pamServer, serverName, out verboseLog); DagTaskHelper.LogRemoteVerboseLog(output, pamServer.Fqdn, verboseLog); output.AppendLogMessage("Sleep one minute before we issue add", new object[0]); Thread.Sleep(DatabaseAvailabilityGroupAction.WaitBetweenOps); output.AppendLogMessage("joining {0}", new object[] { serverName.NetbiosName }); ReplayRpcClientWrapper.RunAddNodeToCluster(pamServer, serverName, out verboseLog); } finally { DagTaskHelper.LogRemoteVerboseLog(output, pamServer.Fqdn, verboseLog); } }
internal static void JoinOneNode(AmServerName pamServer, AmServerName serverName, HaTaskOutputHelper output) { string verboseLog = null; try { output.AppendLogMessage("joining {0}", new object[] { serverName.NetbiosName }); ReplayRpcClientWrapper.RunAddNodeToCluster(pamServer, serverName, out verboseLog); } catch (DagTaskServerException ex) { Exception ex2; if (!ex.TryGetInnerExceptionOfType(out ex2) && !ex.TryGetInnerExceptionOfType(out ex2)) { throw; } DagTaskHelper.LogRemoteVerboseLog(output, pamServer.Fqdn, verboseLog); output.AppendLogMessage("{0} is probably just starting up, retry add after 1 minute", new object[] { serverName.NetbiosName }); Thread.Sleep(DatabaseAvailabilityGroupAction.WaitBetweenOps); ReplayRpcClientWrapper.RunAddNodeToCluster(pamServer, serverName, out verboseLog); } finally { DagTaskHelper.LogRemoteVerboseLog(output, pamServer.Fqdn, verboseLog); } }