@Override public ZNRecord update(ZNRecord currentData) { if (currentData != null) { ClusterConstraints constraints = new ClusterConstraints(currentData); constraints.removeConstraintItem(constraintId); return constraints.getRecord(); } return null; } }, AccessOption.PERSISTENT);
@Override public ZNRecord update(ZNRecord currentData) { ClusterConstraints constraints = currentData == null ? new ClusterConstraints(constraintType) : new ClusterConstraints(currentData); constraints.addConstraintItem(constraintId, constraintItem); return constraints.getRecord(); } }, AccessOption.PERSISTENT);
public ClusterConstraints build() { ClusterConstraints constraints = new ClusterConstraints(_constraintType); for (String constraintId : _constraintBuilderMap.keySet()) { ConstraintItemBuilder builder = _constraintBuilderMap.get(constraintId); constraints.addConstraintItem(constraintId, builder.build()); } return constraints; } }
new ClusterConstraints(record)); ClusterConstraints constraint = new ClusterConstraints(record); "localhost_12918"); Map<ConstraintAttribute, String> msgAttr = ClusterConstraints.toConstraintAttributes(msg1); Set<ConstraintItem> matches = constraint.match(msgAttr); System.out.println(msg1 + " matches(" + matches.size() + "): " + matches); Assert.assertEquals(matches.size(), 5); "localhost_12919"); msgAttr = ClusterConstraints.toConstraintAttributes(msg2); matches = constraint.match(msgAttr); System.out.println(msg2 + " matches(" + matches.size() + "): " + matches); Assert.assertEquals(matches.size(), 5);
Map<ConstraintAttribute, String> msgAttr = ClusterConstraints.toConstraintAttributes(message); Set<ConstraintItem> matches = constraint.match(msgAttr); matches = selectConstraints(matches, msgAttr);
new ClusterConstraints(record)); ClusterConstraints constraint = new ClusterConstraints(record); stateAttr1.put(ConstraintAttribute.RESOURCE, "TestDB"); Set<ConstraintItem> matches = constraint.match(stateAttr1); System.out.println(stateAttr1 + " matches(" + matches.size() + "): " + matches); Assert.assertEquals(matches.size(), 3); stateAttr2.put(ConstraintAttribute.RESOURCE, "MyDB"); matches = constraint.match(stateAttr2); System.out.println(stateAttr2 + " matches(" + matches.size() + "): " + matches); Assert.assertEquals(matches.size(), 2);
HelixAdmin admin = new ZKHelixAdmin(zkClient); ZNRecord record = admin.getConstraints(clusterName, constraintType).getRecord(); if (constraintId == null) {
/** * Add multiple constraint items. * @param items (constraint identifier, {@link ConstrantItem}) pairs */ public void addConstraintItems(Map<String, ConstraintItem> items) { for (String constraintId : items.keySet()) { addConstraintItem(constraintId, items.get(constraintId)); } }
/** * get constraints associated with given type * @param constraintType : constraint-type. e.g. MESSAGE_CONSTRAINT * @return json-formated constraints */ public String getConstraints(String clusterName, String constraintType) { if (clusterName == null || constraintType == null) { throw new IllegalArgumentException( "fail to get constraint. missing clusterName|constraintType"); } ConstraintType type = ConstraintType.valueOf(constraintType); ClusterConstraints constraints = _admin.getConstraints(clusterName, type); return new String(constraints.serialize(new ZNRecordSerializer())); }
accessor.getProperty(keyBuilder.constraint(ConstraintType.MESSAGE_CONSTRAINT.toString())); Assert.assertNotNull(constraints, "message-constraint should exist"); ConstraintItem item = constraints.getConstraintItem("constraint1"); Assert.assertNotNull(item, "message-constraint for constraint1 should exist"); Assert.assertEquals(item.getConstraintValue(), "1"); item = constraints.getConstraintItem("constraint1"); Assert.assertNotNull(item, "message-constraint for constraint1 should exist"); Assert.assertEquals(item.getConstraintValue(), "1"); accessor.getProperty(keyBuilder.constraint(ConstraintType.MESSAGE_CONSTRAINT.toString())); Assert.assertNotNull(constraints, "message-constraint should exist"); item = constraints.getConstraintItem("constraint1"); Assert.assertNull(item, "message-constraint for constraint1 should NOT exist");
new ClusterConstraints(record)); "localhost_0"); Map<ConstraintAttribute, String> msgAttr = ClusterConstraints.toConstraintAttributes(msg1); Set<ConstraintItem> matches = constraint.match(msgAttr); System.out.println(msg1 + " matches(" + matches.size() + "): " + matches); Assert.assertEquals(matches.size(), 5); "localhost_1"); msgAttr = ClusterConstraints.toConstraintAttributes(msg2); matches = constraint.match(msgAttr); System.out.println(msg2 + " matches(" + matches.size() + "): " + matches); Assert.assertEquals(matches.size(), 5);
Map<ConstraintAttribute, String> msgAttr = ClusterConstraints.toConstraintAttributes(message); Set<ConstraintItem> matches = constraint.match(msgAttr); matches = selectConstraints(matches, msgAttr);
public ClusterConstraints build() { ClusterConstraints constraints = new ClusterConstraints(_constraintType); for (String constraintId : _constraintBuilderMap.keySet()) { ConstraintItemBuilder builder = _constraintBuilderMap.get(constraintId); constraints.addConstraintItem(constraintId, builder.build()); } return constraints; } }
/** * Add multiple constraint items. * @param items (constraint identifier, {@link ConstrantItem}) pairs */ public void addConstraintItems(Map<String, ConstraintItem> items) { for (String constraintId : items.keySet()) { addConstraintItem(constraintId, items.get(constraintId)); } }
/** * get constraints associated with given type * @param constraintType : constraint-type. e.g. MESSAGE_CONSTRAINT * @return json-formated constraints */ public String getConstraints(String clusterName, String constraintType) { if (clusterName == null || constraintType == null) { throw new IllegalArgumentException( "fail to get constraint. missing clusterName|constraintType"); } ConstraintType type = ConstraintType.valueOf(constraintType); ClusterConstraints constraints = _admin.getConstraints(clusterName, type); return new String(constraints.serialize(new ZNRecordSerializer())); }
@Override public ZNRecord update(ZNRecord currentData) { if (currentData != null) { ClusterConstraints constraints = new ClusterConstraints(currentData); constraints.removeConstraintItem(constraintId); return constraints.getRecord(); } return null; } }, AccessOption.PERSISTENT);
@Override public ZNRecord update(ZNRecord currentData) { ClusterConstraints constraints = currentData == null ? new ClusterConstraints(constraintType) : new ClusterConstraints(currentData); constraints.addConstraintItem(constraintId, constraintItem); return constraints.getRecord(); } }, AccessOption.PERSISTENT);
/** * Instantiate constraints from a pre-populated ZNRecord * @param record ZNRecord containing all constraints */ public ClusterConstraints(ZNRecord record) { super(record); for (String constraintId : _record.getMapFields().keySet()) { ConstraintItemBuilder builder = new ConstraintItemBuilder(); ConstraintItem item = builder.addConstraintAttributes(_record.getMapField(constraintId)).build(); // ignore item with empty attributes or no constraint-value if (item.getAttributes().size() > 0 && item.getConstraintValue() != null) { addConstraintItem(constraintId, item); } else { LOG.error("Skip invalid constraint. key: " + constraintId + ", value: " + _record.getMapField(constraintId)); } } }
/** * Instantiate constraints from a pre-populated ZNRecord * @param record ZNRecord containing all constraints */ public ClusterConstraints(ZNRecord record) { super(record); for (String constraintId : _record.getMapFields().keySet()) { ConstraintItemBuilder builder = new ConstraintItemBuilder(); ConstraintItem item = builder.addConstraintAttributes(_record.getMapField(constraintId)).build(); // ignore item with empty attributes or no constraint-value if (item.getAttributes().size() > 0 && item.getConstraintValue() != null) { addConstraintItem(constraintId, item); } else { LOG.error("Skip invalid constraint. key: " + constraintId + ", value: " + _record.getMapField(constraintId)); } } }