Beispiel #1
0
 internal static void ActOnClusDbHang(LatencyChecker.ClusDbHungAction action)
 {
     if (action != null && action.TakeAction && action.HungInfo != null)
     {
         ReplayCrimsonEvents.HungNodeRecoveryActionStart.Log <string>(LatencyChecker.ConvertAmServerNamesToString(action.TargetNodes));
         bool flag;
         if (RegistryParameters.IsKillClusterServiceOnClusApiHang)
         {
             flag = true;
             if (action.TargetNodes != null && action.TargetNodes.Length > 0)
             {
                 AmServerName             amServerName = action.TargetNodes[0];
                 RpcKillServiceImpl.Reply reply        = RpcKillServiceImpl.SendKillRequest(amServerName.Fqdn, "Clussvc", action.HungInfo.ApiHungStartTime.LocalTime, false, RegistryParameters.RpcKillServiceTimeoutInMSec);
                 flag = (reply != null && reply.IsSucceeded && reply.IsSucceeded);
             }
         }
         else
         {
             flag = false;
             ReplayCrimsonEvents.SkippedSendingClussvcKillRequest.LogPeriodic(action.HungInfo.ApiName, TimeSpan.FromMinutes(15.0));
         }
         if (!flag)
         {
             string text = LatencyChecker.ConvertAmServerNamesToString(action.TargetNodes);
             ReplayCrimsonEvents.HungNodeRebootRequested.Log <string>(text);
             LatencyChecker.TriggerNodeRestart(action.HungInfo.CurrentGumId.ToString(), (action.HungInfo.CurrentLockOwnerName != null) ? action.HungInfo.CurrentLockOwnerName.NetbiosName : "NULL", text, action.HungInfo, action);
             return;
         }
     }
     else if (action == null || action.HungInfo == null)
     {
         ReplayCrimsonEvents.GenericMessage.Log <string>("ActOnClusDbHang: Action is null or action.HungInfo is null");
     }
 }