当前位置: 首页>>代码示例>>Java>>正文


Java NotificationContext.getType方法代码示例

本文整理汇总了Java中org.apache.helix.NotificationContext.getType方法的典型用法代码示例。如果您正苦于以下问题:Java NotificationContext.getType方法的具体用法?Java NotificationContext.getType怎么用?Java NotificationContext.getType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.apache.helix.NotificationContext的用法示例。


在下文中一共展示了NotificationContext.getType方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: handleEvent

import org.apache.helix.NotificationContext; //导入方法依赖的package包/类
@Override
protected void handleEvent(ClusterEvent event) {
  NotificationContext changeContext = event.getAttribute(AttributeName.changeContext.name());
  // session has expired clean up the routing table
  if (changeContext.getType() == NotificationContext.Type.FINALIZE) {
    reset();
  } else {
    // refresh routing table.
    HelixManager manager = event.getAttribute(AttributeName.helixmanager.name());
    if (manager == null) {
      logger.error("HelixManager is null for router update event : " + event);
      throw new HelixException("HelixManager is null for router update event.");
    }
    _dataCache.refresh(manager.getHelixDataAccessor());
    refresh(_dataCache.getExternalViews().values(), _dataCache.getInstanceConfigMap().values(),
        _dataCache.getLiveInstances().values());
  }
}
 
开发者ID:apache,项目名称:helix,代码行数:19,代码来源:RoutingTableProvider.java

示例2: subscribeDataChange

import org.apache.helix.NotificationContext; //导入方法依赖的package包/类
private void subscribeDataChange(String path, NotificationContext context) {
  NotificationContext.Type type = context.getType();
  if (type == NotificationContext.Type.INIT || type == NotificationContext.Type.CALLBACK) {
    logger.info(
        _manager.getInstanceName() + " subscribe data-change. path: " + path + ", listener: "
            + _listener);
    _zkClient.subscribeDataChanges(path, this);

  } else if (type == NotificationContext.Type.FINALIZE) {
    logger.info(
        _manager.getInstanceName() + " unsubscribe data-change. path: " + path + ", listener: "
            + _listener);

    _zkClient.unsubscribeDataChanges(path, this);
  }
}
 
开发者ID:apache,项目名称:helix,代码行数:17,代码来源:CallbackHandler.java

示例3: queueEvent

import org.apache.helix.NotificationContext; //导入方法依赖的package包/类
public void queueEvent(NotificationContext context, ClusterEventType eventType,
    HelixConstants.ChangeType changeType) {
  ClusterEvent event = new ClusterEvent(_clusterName, eventType);
  if (context == null || context.getType() != NotificationContext.Type.CALLBACK) {
    _dataCache.requireFullRefresh();
  } else {
    _dataCache.notifyDataChange(changeType, context.getPathChanged());
  }

  event.addAttribute(AttributeName.helixmanager.name(), context.getManager());
  event.addAttribute(AttributeName.changeContext.name(), context);
  queueEvent(event);
}
 
开发者ID:apache,项目名称:helix,代码行数:14,代码来源:RoutingTableProvider.java

示例4: enqueueTask

import org.apache.helix.NotificationContext; //导入方法依赖的package包/类
public void enqueueTask(NotificationContext changeContext)
    throws Exception {
  //async mode only applicable to CALLBACK from ZK, During INIT and FINALIZE invoke the callback's immediately.
  if (_batchModeEnabled && changeContext.getType() == NotificationContext.Type.CALLBACK) {
    logger.info("Enqueuing callback");
    _queue.put(changeContext);
  } else {
    invoke(changeContext);
  }
  if (_monitor != null) {
    _monitor.increaseCallbackUnbatchedCounters();
  }
}
 
开发者ID:apache,项目名称:helix,代码行数:14,代码来源:CallbackHandler.java

示例5: subscribeChildChange

import org.apache.helix.NotificationContext; //导入方法依赖的package包/类
private void subscribeChildChange(String path, NotificationContext context) {
  NotificationContext.Type type = context.getType();
  if (type == NotificationContext.Type.INIT || type == NotificationContext.Type.CALLBACK) {
    logger.info(
        _manager.getInstanceName() + " subscribes child-change. path: " + path + ", listener: "
            + _listener);
    _zkClient.subscribeChildChanges(path, this);
  } else if (type == NotificationContext.Type.FINALIZE) {
    logger.info(
        _manager.getInstanceName() + " unsubscribe child-change. path: " + path + ", listener: "
            + _listener);

    _zkClient.unsubscribeChildChanges(path, this);
  }
}
 
开发者ID:apache,项目名称:helix,代码行数:16,代码来源:CallbackHandler.java

示例6: onLiveInstanceChange

import org.apache.helix.NotificationContext; //导入方法依赖的package包/类
@Override
public void onLiveInstanceChange(List<LiveInstance> liveInstances,
    NotificationContext changeContext) {
  logger.info("START: Generic GenericClusterController.onLiveInstanceChange() for cluster " + _clusterName);
  if (changeContext == null || changeContext.getType() != Type.CALLBACK) {
    _cache.requireFullRefresh();
    _taskCache.requireFullRefresh();
  }

  if (liveInstances == null) {
    liveInstances = Collections.emptyList();
  }
  _cache.setLiveInstances(liveInstances);
  _taskCache.setLiveInstances(liveInstances);

  // Go though the live instance list and make sure that we are observing them
  // accordingly. The action is done regardless of the paused flag.
  if (changeContext.getType() == NotificationContext.Type.INIT
      || changeContext.getType() == NotificationContext.Type.CALLBACK) {
    checkLiveInstancesObservation(liveInstances, changeContext);
  } else if (changeContext.getType() == NotificationContext.Type.FINALIZE) {
    // on finalize, should remove all message/current-state listeners
    logger.info("remove message/current-state listeners. lastSeenInstances: " + _lastSeenInstances
        + ", lastSeenSessions: " + _lastSeenSessions);
    liveInstances = Collections.emptyList();
    checkLiveInstancesObservation(liveInstances, changeContext);
  }

  pushToEventQueues(ClusterEventType.LiveInstanceChange, changeContext,
      Collections.<String, Object>singletonMap(AttributeName.eventData.name(), liveInstances));

  logger.info(
      "END: Generic GenericClusterController.onLiveInstanceChange() for cluster " + _clusterName);
}
 
开发者ID:apache,项目名称:helix,代码行数:35,代码来源:GenericHelixController.java

示例7: onIdealStateChange

import org.apache.helix.NotificationContext; //导入方法依赖的package包/类
@Override
@PreFetch(enabled = false)
public void onIdealStateChange(List<IdealState> idealStates, NotificationContext changeContext) {
  logger.info(
      "START: Generic GenericClusterController.onIdealStateChange() for cluster " + _clusterName);
  notifyCaches(changeContext, ChangeType.IDEAL_STATE);
  pushToEventQueues(ClusterEventType.IdealStateChange, changeContext,
      Collections.<String, Object>emptyMap());

  if (changeContext.getType() != Type.FINALIZE) {
    checkRebalancingTimer(changeContext.getManager(), idealStates, _cache.getClusterConfig());
  }

  logger.info("END: GenericClusterController.onIdealStateChange() for cluster " + _clusterName);
}
 
开发者ID:apache,项目名称:helix,代码行数:16,代码来源:GenericHelixController.java

示例8: notifyCaches

import org.apache.helix.NotificationContext; //导入方法依赖的package包/类
private void notifyCaches(NotificationContext context, ChangeType changeType) {
  if (context == null || context.getType() != Type.CALLBACK) {
    _cache.requireFullRefresh();
    _taskCache.requireFullRefresh();
  } else {
    _cache.notifyDataChange(changeType, context.getPathChanged());
    _taskCache.notifyDataChange(changeType, context.getPathChanged());
  }
}
 
开发者ID:apache,项目名称:helix,代码行数:10,代码来源:GenericHelixController.java

示例9: callParticipantCode

import org.apache.helix.NotificationContext; //导入方法依赖的package包/类
private void callParticipantCode(NotificationContext context) {
  // since ZkClient.unsubscribe() does not immediately remove listeners
  // from zk, it is possible that two listeners exist when leadership transfers
  // therefore, double check to make sure only one participant invokes the code
  if (context.getType() == Type.CALLBACK) {
    HelixManager manager = context.getManager();
    // DataAccessor accessor = manager.getDataAccessor();
    HelixDataAccessor accessor = manager.getHelixDataAccessor();
    Builder keyBuilder = accessor.keyBuilder();

    String instance = manager.getInstanceName();
    String sessionId = manager.getSessionId();

    // get resource name from partition key: "PARTICIPANT_LEADER_XXX_0"
    String resourceName = _partitionKey.substring(0, _partitionKey.lastIndexOf('_'));

    CurrentState curState =
        accessor.getProperty(keyBuilder.currentState(instance, sessionId, resourceName));
    if (curState == null) {
      return;
    }

    String state = curState.getState(_partitionKey);
    if (state == null || !state.equalsIgnoreCase("LEADER")) {
      return;
    }
  }

  try {
    _callback.onCallback(context);
  } catch (Exception e) {
    LOG.error("Error invoking callback:" + _callback, e);
  }
}
 
开发者ID:apache,项目名称:helix,代码行数:35,代码来源:CustomCodeInvoker.java

示例10: onExternalViewChange

import org.apache.helix.NotificationContext; //导入方法依赖的package包/类
@Override
public void onExternalViewChange(List<ExternalView> externalViewList,
    NotificationContext changeContext) {
  if (changeContext.getType() == Type.CALLBACK) {
    cbCnt++;
  }
}
 
开发者ID:apache,项目名称:helix,代码行数:8,代码来源:TestBucketizedResource.java

示例11: onCallback

import org.apache.helix.NotificationContext; //导入方法依赖的package包/类
@Override
public void onCallback(NotificationContext context) {
  HelixManager manager = context.getManager();
  Type type = context.getType();
  _isCallbackInvoked = true;
  // System.out.println(type + ": TestCallback invoked on " + manager.getInstanceName());
}
 
开发者ID:apache,项目名称:helix,代码行数:8,代码来源:TestHelixCustomCodeRunner.java

示例12: setupWatcher

import org.apache.helix.NotificationContext; //导入方法依赖的package包/类
private void setupWatcher() throws Exception {

    LiveInstanceChangeListener listener = new LiveInstanceChangeListener() {
      @Override
      public void onLiveInstanceChange(List<LiveInstance> liveInstances,
          NotificationContext changeContext) {
        if (changeContext.getType() != NotificationContext.Type.FINALIZE) {
          refreshCache();
        }
      }
    };
    admin.addLiveInstanceChangeListener(listener);
  }
 
开发者ID:apache,项目名称:helix,代码行数:14,代码来源:ServiceDiscovery.java

示例13: onControllerChange

import org.apache.helix.NotificationContext; //导入方法依赖的package包/类
@Override
public void onControllerChange(NotificationContext changeContext) {
  logger.info("START: GenericClusterController.onControllerChange() for cluster " + _clusterName);
  _cache.requireFullRefresh();
  _taskCache.requireFullRefresh();
  if (changeContext != null && changeContext.getType() == Type.FINALIZE) {
    logger.info("GenericClusterController.onControllerChange() FINALIZE for cluster " + _clusterName);
    return;
  }
  HelixDataAccessor accessor = changeContext.getManager().getHelixDataAccessor();

  // double check if this controller is the leader
  Builder keyBuilder = accessor.keyBuilder();
  LiveInstance leader = accessor.getProperty(keyBuilder.controllerLeader());
  if (leader == null) {
    logger
        .warn("No controller exists for cluster:" + changeContext.getManager().getClusterName());
    return;
  } else {
    String leaderName = leader.getInstanceName();

    String instanceName = changeContext.getManager().getInstanceName();
    if (leaderName == null || !leaderName.equals(instanceName)) {
      logger.warn("leader name does NOT match, my name: " + instanceName + ", leader: " + leader);
      return;
    }
  }

  PauseSignal pauseSignal = accessor.getProperty(keyBuilder.pause());
  MaintenanceSignal maintenanceSignal = accessor.getProperty(keyBuilder.maintenance());
  _paused = updateControllerState(changeContext, pauseSignal, _paused);
  _inMaintenanceMode = updateControllerState(changeContext, maintenanceSignal, _inMaintenanceMode);

  synchronized (this) {
    if (_clusterStatusMonitor == null) {
      _clusterStatusMonitor = new ClusterStatusMonitor(changeContext.getManager().getClusterName());
    }
  }
  _clusterStatusMonitor.setEnabled(!_paused);
  logger.info("END: GenericClusterController.onControllerChange() for cluster " + _clusterName);
}
 
开发者ID:apache,项目名称:helix,代码行数:42,代码来源:GenericHelixController.java

示例14: onCallback

import org.apache.helix.NotificationContext; //导入方法依赖的package包/类
@Override
public void onCallback(NotificationContext context) {
  NotificationContext.Type type = context.getType();
  _callbackInvokeMap.put(type, Boolean.TRUE);
}
 
开发者ID:apache,项目名称:helix,代码行数:6,代码来源:TestDisableCustomCodeRunner.java


注:本文中的org.apache.helix.NotificationContext.getType方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。