Package com.linkedin.helix

Examples of com.linkedin.helix.HelixManager


    System.out.println("START " + clusterName + " at "
        + new Date(System.currentTimeMillis()));

    HelixDataAccessor accessor =
        new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor(_gZkClient));
    HelixManager manager = new DummyClusterManager(clusterName, accessor);
    ClusterEvent event = new ClusterEvent("testEvent");
    event.addAttribute("helixmanager", manager);

    final String resourceName = "testResource_pending";
    String[] resourceGroups = new String[] { resourceName };
View Full Code Here


    System.out.println("START " + clusterName + " at "
        + new Date(System.currentTimeMillis()));

    HelixDataAccessor accessor =
        new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor(_gZkClient));
    HelixManager manager = new DummyClusterManager(clusterName, accessor);
    ClusterEvent event = new ClusterEvent("testEvent");
    event.addAttribute("helixmanager", manager);

    final String resourceName = "testResource_xfer";
    String[] resourceGroups = new String[] { resourceName };
View Full Code Here

  }

  public static HelixManager startHelixController(final String zkConnectString,
      final String clusterName, final String controllerName, final String controllerMode)
  {
    HelixManager manager = null;
    try
    {
      if (controllerMode.equalsIgnoreCase(STANDALONE))
      {
        manager = HelixManagerFactory.getZKHelixManager(clusterName, controllerName,
            InstanceType.CONTROLLER, zkConnectString);
        manager.connect();
      } else if (controllerMode.equalsIgnoreCase(DISTRIBUTED))
      {
        manager = HelixManagerFactory.getZKHelixManager(clusterName, controllerName,
            InstanceType.CONTROLLER_PARTICIPANT, zkConnectString);

        DistClusterControllerStateModelFactory stateModelFactory = new DistClusterControllerStateModelFactory(
            zkConnectString);

        // StateMachineEngine genericStateMachineHandler = new
        // StateMachineEngine();
        StateMachineEngine stateMach = manager.getStateMachineEngine();
        stateMach.registerStateModelFactory("LeaderStandby", stateModelFactory);
        // manager.getMessagingService().registerMessageHandlerFactory(MessageType.STATE_TRANSITION.toString(),
        // genericStateMachineHandler);
        manager.connect();
      } else
      {
        logger.error("cluster controller mode:" + controllerMode + " NOT supported");
        // throw new
        // IllegalArgumentException("Unsupported cluster controller mode:" +
View Full Code Here

    if (propertyTransServicePort > 0)
    {
      ZKPropertyTransferServer.getInstance().init(propertyTransServicePort, zkConnectString);
    }
   
    HelixManager manager = startHelixController(zkConnectString, clusterName, controllerName,
        controllerMode);
    try
    {
      Thread.currentThread().join();
    }
    catch (InterruptedException e)
    {
      logger.info("controller:" + controllerName + ", " + Thread.currentThread().getName()
          + " interrupted");
    }
    finally
    {
      manager.disconnect();
      ZKPropertyTransferServer.getInstance().shutdown();
    }

  }
View Full Code Here

  }

  @Override
  public void process(ClusterEvent event) throws Exception
  {
    HelixManager manager = event.getAttribute("helixmanager");
    ClusterDataCache cache = event.getAttribute("ClusterDataCache");
    if (manager == null || cache == null)
    {
      throw new StageException("Missing attributes in event:" + event
          + ". Requires HelixManager | DataCache");
    }

    String controllerVersion = manager.getVersion();
    if (controllerVersion == null)
    {
      String errorMsg = "Missing version of controller: " + manager.getInstanceName()
          + ". Pipeline will not continue.";
      LOG.error(errorMsg);
      throw new StageException(errorMsg);
    }

    Map<String, LiveInstance> liveInstanceMap = cache.getLiveInstances();
    for (LiveInstance liveInstance : liveInstanceMap.values())
    {
      String participantVersion = liveInstance.getHelixVersion();
      if (!isCompatible(controllerVersion, participantVersion))
      {
        String errorMsg = "cluster manager versions are incompatible; pipeline will not continue. "
                        + "controller:" + manager.getInstanceName() + ", controllerVersion:" + controllerVersion
                        + "; participant:" + liveInstance.getInstanceName() + ", participantVersion:" + participantVersion;
        LOG.error(errorMsg);
        throw new StageException(errorMsg);
      }
    }
View Full Code Here

  {
    long startTime = System.currentTimeMillis();
    logger.info("START ReadClusterDataStage.process()");

   
    HelixManager manager = event.getAttribute("helixmanager");
    if (manager == null)
    {
      throw new StageException("HelixManager attribute value is null");
    }
    HelixDataAccessor dataAccessor = manager.getHelixDataAccessor();
    _cache.refresh(dataAccessor);
   
    ClusterStatusMonitor clusterStatusMonitor = (ClusterStatusMonitor) event.getAttribute("clusterStatusMonitor");
    if(clusterStatusMonitor != null)
    {
View Full Code Here

            break;
          }
          else if (_command._commandType == CommandType.STOP)
          {
            // TODO add data trigger for STOP command
            HelixManager manager = _command._nodeOpArg._manager;
            manager.disconnect();
            Thread thread = _command._nodeOpArg._thread;
            thread.interrupt();

            // System.err.println("stop " +
            // _command._nodeOpArg._manager.getInstanceName());
View Full Code Here

    long startTime = System.currentTimeMillis();
    // String aggTypeName =
    // DEFAULT_AGG_TYPE+AggregationType.DELIM+DEFAULT_DECAY_PARAM;
    // _defaultAggType = AggregationTypeFactory.getAggregationType(aggTypeName);

    HelixManager manager = event.getAttribute("helixmanager");
    HealthDataCache cache = event.getAttribute("HealthDataCache");

    if (manager == null || cache == null)
    {
      throw new StageException("helixmanager|HealthDataCache attribute value is null");
    }
    if(_alertsHolder == null)
    {
      _statsHolder = new StatsHolder(manager, cache);
      _alertsHolder = new AlertsHolder(manager, cache, _statsHolder);
    }
    else
    {
      _statsHolder.updateCache(cache);
      _alertsHolder.updateCache(cache);
    }
    if (_statsHolder.getStatsList().size() == 0)
    {
      logger.info("stat holder is empty");
      return;
    }

    // init agg stats from cache
    // initAggStats(cache);

    Map<String, LiveInstance> liveInstances = cache.getLiveInstances();

    long currTime = System.currentTimeMillis();
    // for each live node, read node's stats
    long readInstancesStart = System.currentTimeMillis();
    for (LiveInstance instance : liveInstances.values())
    {
      String instanceName = instance.getInstanceName();
      logger.debug("instanceName: " + instanceName);
      // XXX: now have map of HealthStats, so no need to traverse them...verify
      // correctness
      Map<String, HealthStat> stats;
      stats = cache.getHealthStats(instanceName);
      // find participants stats
      long modTime = -1;
      // TODO: get healthreport child node modified time and reportAgeStat based on that
      boolean reportedAge = false;
      for (HealthStat participantStat : stats.values())
      {
        if (participantStat != null && !reportedAge)
        {
          // generate and report stats for how old this node's report is
          modTime = participantStat.getLastModifiedTimeStamp();
          reportAgeStat(instance, modTime, currTime);
          reportedAge = true;
        }
        // System.out.println(modTime);
        // XXX: need to convert participantStat to a better format
        // need to get instanceName in here

        if (participantStat != null)
        {
          // String timestamp = String.valueOf(instance.getModifiedTime()); WANT
          // REPORT LEVEL TS
          Map<String, Map<String, String>> statMap =
              participantStat.getHealthFields(instanceName);
          for (String key : statMap.keySet())
          {
            _statsHolder.applyStat(key, statMap.get(key));
          }
        }
      }
    }
    // Call _statsHolder.persistStats() once per pipeline. This will
    // write the updated persisted stats into zookeeper
    _statsHolder.persistStats();
    logger.info("Done processing stats: "
        + (System.currentTimeMillis() - readInstancesStart));
    // populate _statStatus
    _statStatus = _statsHolder.getStatsMap();

    for (String statKey : _statStatus.keySet())
    {
      logger.debug("Stat key, value: " + statKey + ": " + _statStatus.get(statKey));
    }

    long alertExecuteStartTime = System.currentTimeMillis();
    // execute alerts, populate _alertStatus
    _alertStatus =
        AlertProcessor.executeAllAlerts(_alertsHolder.getAlertList(),
                                        _statsHolder.getStatsList());
    logger.info("done executing alerts: "
        + (System.currentTimeMillis() - alertExecuteStartTime));
    for (String originAlertName : _alertStatus.keySet())
    {
      _alertBeanCollection.setAlerts(originAlertName,
                                     _alertStatus.get(originAlertName),
                                     manager.getClusterName());
    }

    executeAlertActions(manager);
    // Write alert fire history to zookeeper
    updateAlertHistory(manager);
View Full Code Here

  @Transition(to="LEADER",from="STANDBY")
  public void onBecomeLeaderFromStandby(Message message, NotificationContext context)
      throws Exception
  {
    LOG.info("Become LEADER from STANDBY");
    HelixManager manager = context.getManager();
    if (manager == null)
    {
      throw new IllegalArgumentException("Require HelixManager in notification conext");
    }
    for (ChangeType notificationType : _notificationTypes)
    {
      if (notificationType == ChangeType.LIVE_INSTANCE)
      {
        manager.addLiveInstanceChangeListener(_particHolder);
      }
      else if (notificationType == ChangeType.CONFIG)
      {
        manager.addConfigChangeListener(_particHolder);
      }
      else if (notificationType == ChangeType.EXTERNAL_VIEW)
      {
        manager.addExternalViewChangeListener(_particHolder);
      }
      else
      {
        LOG.error("Unsupport notificationType:" + notificationType.toString());
      }
View Full Code Here

  @Transition(to="STANDBY",from="LEADER")
  public void onBecomeStandbyFromLeader(Message message, NotificationContext context)
  {
    LOG.info("Become STANDBY from LEADER");
    HelixManager manager = context.getManager();
    // manager.removeListener(_particHolder);
    if (manager == null)
    {
      throw new IllegalArgumentException("Require HelixManager in notification conext");
    }
   
    Builder keyBuilder = new Builder(manager.getClusterName());
    for (ChangeType notificationType : _notificationTypes)
    {
      if (notificationType == ChangeType.LIVE_INSTANCE)
      {
        manager.removeListener(keyBuilder.liveInstances(), _particHolder);
      }
      else if (notificationType == ChangeType.CONFIG)
      {
        manager.removeListener(keyBuilder.instanceConfigs(), _particHolder);
      }
      else if (notificationType == ChangeType.EXTERNAL_VIEW)
      {
        manager.removeListener(keyBuilder.externalViews(), _particHolder);
      }
      else
      {
        LOG.error("Unsupport notificationType:" + notificationType.toString());
      }
View Full Code Here

TOP

Related Classes of com.linkedin.helix.HelixManager

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.