private String getContextPath(String resourceName) { return String.format("/%s/%s%s/%s/%s", _clusterName, PropertyType.PROPERTYSTORE.name(), TaskConstants.REBALANCER_CONTEXT_ROOT, resourceName, TaskConstants.CONTEXT_NODE); } }
private PropertyKey externalViewKey(PropertyKey.Builder keyBuilder, String resource) { PropertyKey evPropertyKey; if (_type.equals(PropertyType.EXTERNALVIEW)) { evPropertyKey = keyBuilder.externalView(resource); } else if (_type.equals(PropertyType.TARGETEXTERNALVIEW)) { evPropertyKey = keyBuilder.targetExternalView(resource); } else { throw new HelixException( "Failed to refresh ExternalViewCache, Wrong property type " + _type + "!"); } return evPropertyKey; }
private static void addEntry(PropertyType type, int numKeys, String template) { if (!templateMap.containsKey(type)) { templateMap.put(type, new HashMap<Integer, String>()); } logger.trace("Adding template for type:" + type.getType() + " arguments:" + numKeys + " template:" + template); templateMap.get(type).put(numKeys, template); }
StringRepresentation getControllerRepresentation(String clusterName) throws JsonGenerationException, JsonMappingException, IOException { Builder keyBuilder = new PropertyKey.Builder(clusterName); ZkClient zkClient = ResourceUtil.getAttributeFromCtx(getContext(), ResourceUtil.ContextKey.ZKCLIENT); ZKHelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(zkClient)); ZNRecord record = null; LiveInstance leader = accessor.getProperty(keyBuilder.controllerLeader()); if (leader != null) { record = leader.getRecord(); } else { record = new ZNRecord(""); DateFormat formatter = new SimpleDateFormat("yyyyMMdd-HHmmss.SSSSSS"); String time = formatter.format(new Date()); Map<String, String> contentMap = new TreeMap<String, String>(); contentMap.put("AdditionalInfo", "No leader exists"); record.setMapField(Level.HELIX_INFO + "-" + time, contentMap); } boolean paused = (accessor.getProperty(keyBuilder.pause()) == null ? false : true); record.setSimpleField(PropertyType.PAUSE.toString(), "" + paused); String retVal = ClusterRepresentationUtil.ZNRecordToJson(record); StringRepresentation representation = new StringRepresentation(retVal, MediaType.APPLICATION_JSON); return representation; }
public RoutingTableProviderMonitor(final PropertyType propertyType, String clusterName) { _propertyType = propertyType; _clusterName = clusterName == null ? DEFAULT : clusterName; // Don't put instanceName into sensor name. This detail information is in the MBean name already. _sensorName = String .format("%s.%s.%s", MonitorDomainNames.RoutingTableProvider.name(), _clusterName, _propertyType.name()); _dataRefreshLatencyGauge = new HistogramDynamicMetric("DataRefreshLatencyGauge", new Histogram( new SlidingTimeWindowArrayReservoir(DEFAULT_RESET_INTERVAL_MS, TimeUnit.MILLISECONDS))); _callbackCounter = new SimpleDynamicMetric("CallbackCounter", 0l); _eventQueueSizeGauge = new SimpleDynamicMetric("EventQueueSizeGauge", 0l); _dataRefreshCounter = new SimpleDynamicMetric("DataRefreshCounter", 0l); if (propertyType.equals(PropertyType.CURRENTSTATES)) { _statePropLatencyGauge = new HistogramDynamicMetric("StatePropagationLatencyGauge", new Histogram( new SlidingTimeWindowArrayReservoir(DEFAULT_RESET_INTERVAL_MS, TimeUnit.MILLISECONDS))); } }
private int constructOptions(PropertyType type) { int options = 0; if (type.isPersistent()) { options = options | AccessOption.PERSISTENT; } else { options = options | AccessOption.EPHEMERAL; } return options; }
@Override public int hashCode() { int result = (_type != null ? _type.hashCode() : 0); result = 31 * result + Arrays.hashCode(_params); result = 31 * result + (_typeClazz != null ? _typeClazz.hashCode() : 0); result = 31 * result + (_configScope != null ? _configScope.hashCode() : 0); return result; }
@Test public void testMBeanRegisteration() throws JMException { Set<RoutingTableProviderMonitor> monitors = new HashSet<>(); for (PropertyType type : PropertyType.values()) { monitors.add(new RoutingTableProviderMonitor(type, TEST_CLUSTER).register()); Assert.assertTrue(_beanServer.isRegistered(buildObjectName(type, TEST_CLUSTER))); } for (PropertyType type : PropertyType.values()) { monitors.add(new RoutingTableProviderMonitor(type, TEST_CLUSTER).register()); Assert.assertTrue(_beanServer.isRegistered(buildObjectName(type, TEST_CLUSTER, 1))); } for (PropertyType type : PropertyType.values()) { monitors.add(new RoutingTableProviderMonitor(type, TEST_CLUSTER).register()); Assert.assertTrue(_beanServer.isRegistered(buildObjectName(type, TEST_CLUSTER, 2))); } // Un-register all monitors for (RoutingTableProviderMonitor monitor : monitors) { monitor.unregister(); } for (PropertyType type : PropertyType.values()) { Assert.assertFalse(_beanServer.isRegistered(buildObjectName(type, TEST_CLUSTER))); Assert.assertFalse(_beanServer.isRegistered(buildObjectName(type, TEST_CLUSTER, 1))); Assert.assertFalse(_beanServer.isRegistered(buildObjectName(type, TEST_CLUSTER, 2))); } }
private void updateHistory(HelixManager manager) { HelixDataAccessor accessor = manager.getHelixDataAccessor(); Builder keyBuilder = accessor.keyBuilder(); LeaderHistory history = accessor.getProperty(keyBuilder.controllerLeaderHistory()); if (history == null) { history = new LeaderHistory(PropertyType.HISTORY.toString()); } history .updateHistory(manager.getClusterName(), manager.getInstanceName(), manager.getVersion()); if (!accessor.setProperty(keyBuilder.controllerLeaderHistory(), history)) { LOG.error("Failed to persist leader history to ZK!"); } } }
private int constructOptions(PropertyType type) { int options = 0; if (type.isPersistent()) { options = options | AccessOption.PERSISTENT; } else { options = options | AccessOption.EPHEMERAL; } return options; }
@Override public int hashCode() { int result = (_type != null ? _type.hashCode() : 0); result = 31 * result + Arrays.hashCode(_params); result = 31 * result + (_typeClazz != null ? _typeClazz.hashCode() : 0); result = 31 * result + (_configScope != null ? _configScope.hashCode() : 0); return result; }
private ObjectName getMBeanName() throws MalformedObjectNameException { return new ObjectName(String .format("%s:%s=%s,%s=%s", MonitorDomainNames.RoutingTableProvider.name(), CLUSTER_KEY, _clusterName, DATA_TYPE_KEY, _propertyType.name())); }
private void updateHistory(HelixManager manager) { HelixDataAccessor accessor = manager.getHelixDataAccessor(); Builder keyBuilder = accessor.keyBuilder(); LeaderHistory history = accessor.getProperty(keyBuilder.controllerLeaderHistory()); if (history == null) { history = new LeaderHistory(PropertyType.HISTORY.toString()); } history.updateHistory(manager.getClusterName(), manager.getInstanceName(), manager.getVersion()); if(!accessor.setProperty(keyBuilder.controllerLeaderHistory(), history)) { LOG.error("Failed to persist leader history to ZK!"); } } }
private PropertyKey externalViewsKey(PropertyKey.Builder keyBuilder) { PropertyKey evPropertyKey; if (_type.equals(PropertyType.EXTERNALVIEW)) { evPropertyKey = keyBuilder.externalViews(); } else if (_type.equals(PropertyType.TARGETEXTERNALVIEW)) { evPropertyKey = keyBuilder.targetExternalViews(); } else { throw new HelixException( "Failed to refresh ExternalViewCache, Wrong property type " + _type + "!"); } return evPropertyKey; }
private static void addEntry(PropertyType type, int numKeys, String template) { if (!templateMap.containsKey(type)) { templateMap.put(type, new HashMap<Integer, String>()); } logger.trace("Adding template for type:" + type.getType() + " arguments:" + numKeys + " template:" + template); templateMap.get(type).put(numKeys, template); }
private ObjectName getMBeanName() throws MalformedObjectNameException { return new ObjectName(String .format("%s:%s=%s,%s=%s", MonitorDomainNames.RoutingTableProvider.name(), CLUSTER_KEY, _clusterName, DATA_TYPE_KEY, _propertyType.name())); }
final ZNRecord emptyHistory = new ZNRecord(PropertyType.HISTORY.toString()); final List<String> emptyList = new ArrayList<String>(); emptyHistory.setListField(clusterName, emptyList);
private PropertyKey externalViewKey(PropertyKey.Builder keyBuilder, String resource) { PropertyKey evPropertyKey; if (_type.equals(PropertyType.EXTERNALVIEW)) { evPropertyKey = keyBuilder.externalView(resource); } else if (_type.equals(PropertyType.TARGETEXTERNALVIEW)) { evPropertyKey = keyBuilder.targetExternalView(resource); } else { throw new HelixException( "Failed to refresh ExternalViewCache, Wrong property type " + _type + "!"); } return evPropertyKey; }
/** * Update context of the Workflow or Job */ private void updateContext(String resourceName, ZNRecord record, HelixDataAccessor accessor) { String path = String.format("/%s/%s%s/%s/%s", _clusterName, PropertyType.PROPERTYSTORE.name(), TaskConstants.REBALANCER_CONTEXT_ROOT, resourceName, TaskConstants.CONTEXT_NODE); accessor.getBaseDataAccessor().set(path, record, AccessOption.PERSISTENT); _contextMap.put(resourceName, record); }
final ZNRecord emptyHistory = new ZNRecord(PropertyType.HISTORY.toString()); final List<String> emptyList = new ArrayList<String>(); emptyHistory.setListField(clusterName, emptyList);