Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.apache.helix.healthcheck;
  
  /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
  *
  *   http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
 
 import java.util.List;
 import java.util.Map;
 
 
 public class HealthStatsAggregator {
   private static final Logger LOG = Logger.getLogger(HealthStatsAggregator.class);
 
   public final static int DEFAULT_HEALTH_CHECK_LATENCY = 30 * 1000;
 
   private final HelixManager _manager;
       new HashMap<StringHelixStageLatencyMonitor>();
 
   public HealthStatsAggregator(HelixManager manager) {
      = manager;
 
     // health stats pipeline
     StatsAggregationStage statAggregationStage = new StatsAggregationStage();
     .addStage(statAggregationStage);
      = statAggregationStage.getClusterAlertMBeanCollection();
 
   }
 
   private void registerStageLatencyMonitor(Pipeline pipeline) {
     for (Stage stage : pipeline.getStages()) {
       String stgName = stage.getStageName();
       if (!.containsKey(stgName)) {
         try {
           .put(stage.getStageName(),
               new HelixStageLatencyMonitor(.getClusterName(), stgName));
         } catch (Exception e) {
           .error("Couldn't create StageLatencyMonitor mbean for stage: " + stgNamee);
         }
       } else {
         .error("StageLatencyMonitor for stage: " + stgName + " already exists. Skip register it");
       }
     }
   }
 
   public synchronized void aggregate() {
     if (!isEnabled()) {
       .info("HealthAggregationTask is disabled.");
       return;
     }
 
     if (!.isLeader()) {
       .error("Cluster manager: " + .getInstanceName()
           + " is not leader. Pipeline will not be invoked");
       return;
     }
 
     try {
       ClusterEvent event = new ClusterEvent("healthChange");
       event.addAttribute("helixmanager");
       event.addAttribute("HelixStageLatencyMonitorMap");
 
     } catch (Exception e) {
      .error("Exception while executing pipeline: " + e);
    }
  }
  private boolean isEnabled() {
    ConfigAccessor configAccessor = .getConfigAccessor();
    boolean enabled = true;
    if (configAccessor != null) {
      // zk-based cluster manager
      String isEnabled = configAccessor.get(scope"healthChange.enabled");
      if (isEnabled != null) {
        enabled = new Boolean(isEnabled);
      }
    } else {
      .debug("File-based cluster manager doesn't support disable healthChange");
    }
    return enabled;
  }
  public void init() {
    // Remove all the previous health check values, if any
    List<StringexistingHealthRecordNames =
        accessor.getChildNames(accessor.keyBuilder().healthReports(.getInstanceName()));
    for (String healthReportName : existingHealthRecordNames) {
      .info("Removing old healthrecord " + healthReportName);
          healthReportName));
    }
  }
  public void reset() {
    for (HelixStageLatencyMonitor stgLatencyMonitor : .values()) {
      stgLatencyMonitor.reset();
    }
  }
New to GrepCode? Check out our FAQ X