本文整理汇总了Java中org.apache.helix.model.IdealState.setBatchMessageMode方法的典型用法代码示例。如果您正苦于以下问题:Java IdealState.setBatchMessageMode方法的具体用法?Java IdealState.setBatchMessageMode怎么用?Java IdealState.setBatchMessageMode使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.apache.helix.model.IdealState
的用法示例。
在下文中一共展示了IdealState.setBatchMessageMode方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: enableBatchMessageMode
import org.apache.helix.model.IdealState; //导入方法依赖的package包/类
@Override
public void enableBatchMessageMode(String clusterName, String resourceName,
boolean enabled) {
// TODO: Change IdealState to ResourceConfig when configs are migrated to ResourceConfig
IdealState idealState = getResourceIdealState(clusterName, resourceName);
if (idealState == null) {
throw new HelixException("Cluster " + clusterName + ", resource: " + resourceName
+ ", ideal-state does not exist");
}
idealState.setBatchMessageMode(enabled);
setResourceIdealState(clusterName, resourceName, idealState);
}
示例2: testSubMessageFailed
import org.apache.helix.model.IdealState; //导入方法依赖的package包/类
@Test
public void testSubMessageFailed() throws InterruptedException {
TestOnlineOfflineStateModel._numOfSuccessBeforeFail = 6;
// Let one instance handle all the batch messages.
_participants[0].getStateMachineEngine().registerStateModelFactory("OnlineOffline",
new TestOnlineOfflineStateModelFactory(), "TestFactory");
for (int i = 1; i < _participants.length; i++) {
_participants[i].syncStop();
}
// Add 1 db with batch message enabled. Each db has 10 partitions.
// So it will have 1 batch message and 10 sub messages.
String dbName = "TestDBSubMessageFail";
IdealState idealState = new FullAutoModeISBuilder(dbName).setStateModel("OnlineOffline")
.setStateModelFactoryName("TestFactory").setNumPartitions(10).setNumReplica(1).build();
idealState.setBatchMessageMode(true);
_setupTool.getClusterManagementTool().addResource(CLUSTER_NAME, dbName, idealState);
_setupTool.rebalanceStorageCluster(CLUSTER_NAME, dbName, 1);
Thread.sleep(1000L);
int numOfOnlines = 0;
int numOfErrors = 0;
ExternalView externalView =
_setupTool.getClusterManagementTool().getResourceExternalView(CLUSTER_NAME, dbName);
for (String partition : externalView.getPartitionSet()) {
if (externalView.getStateMap(partition).values().contains("ONLINE")) {
numOfOnlines++;
}
if (externalView.getStateMap(partition).values().contains("ERROR")) {
numOfErrors++;
}
}
Assert.assertEquals(numOfErrors, 4);
Assert.assertEquals(numOfOnlines, 6);
}
示例3: testBatchMessageThreadPoolSize
import org.apache.helix.model.IdealState; //导入方法依赖的package包/类
@Test
public void testBatchMessageThreadPoolSize() throws InterruptedException {
int customizedPoolSize = 5;
_participants[0].getStateMachineEngine().registerStateModelFactory("OnlineOffline",
new TestOnlineOfflineStateModelFactory(customizedPoolSize, 2000), "TestFactory");
for (int i = 1; i < _participants.length; i++) {
_participants[i].syncStop();
}
Thread.sleep(2000L);
// Add 10 dbs with batch message enabled. Each db has 10 partitions.
// So it will have 10 batch messages and each batch message has 10 sub messages.
int numberOfDbs = 10;
for (int i = 0; i < numberOfDbs; i++) {
String dbName = "TestDBABatch" + i;
IdealState idealState = new FullAutoModeISBuilder(dbName).setStateModel("OnlineOffline")
.setStateModelFactoryName("TestFactory").setNumPartitions(10).setNumReplica(1).build();
idealState.setBatchMessageMode(true);
_setupTool.getClusterManagementTool().addResource(CLUSTER_NAME, dbName, idealState);
_setupTool.rebalanceStorageCluster(CLUSTER_NAME, dbName, 1);
}
Thread.sleep(2000L);
DefaultMessagingService svc =
(DefaultMessagingService) (_participants[0].getMessagingService());
HelixTaskExecutor helixExecutor = svc.getExecutor();
ThreadPoolExecutor executor = (ThreadPoolExecutor) (helixExecutor._batchMessageExecutorService);
Assert.assertNotNull(executor);
Assert.assertTrue(executor.getPoolSize() >= numberOfDbs);
BestPossibleExternalViewVerifier verifier =
new BestPossibleExternalViewVerifier.Builder(CLUSTER_NAME).setZkAddr(ZK_ADDR).build();
Assert.assertTrue(verifier.verify());
}
示例4: testBasic
import org.apache.helix.model.IdealState; //导入方法依赖的package包/类
@Test
public void testBasic() throws Exception {
String className = TestHelper.getTestClassName();
String methodName = TestHelper.getTestMethodName();
String clusterName = className + "_" + methodName;
final int n = 2;
System.out.println("START " + clusterName + " at " + new Date(System.currentTimeMillis()));
TestHelper.setupCluster(clusterName, ZK_ADDR, 12918, // startPort
"localhost", // participantNamePrefix
"TestDB", // resourceNamePrefix
1, // resourceNb
2, // partitionNb
n, // nodesNb
2, // replica
"MasterSlave", true);
// enable batch-message
ZKHelixDataAccessor accessor =
new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_gZkClient));
Builder keyBuilder = accessor.keyBuilder();
IdealState idealState = accessor.getProperty(keyBuilder.idealStates("TestDB0"));
idealState.setBatchMessageMode(true);
accessor.setProperty(keyBuilder.idealStates("TestDB0"), idealState);
ClusterControllerManager controller =
new ClusterControllerManager(ZK_ADDR, clusterName, "controller_0");
controller.syncStart();
// start participants
MockParticipantManager[] participants = new MockParticipantManager[n];
TestMockMSModelFactory[] ftys = new TestMockMSModelFactory[n];
for (int i = 0; i < n; i++) {
String instanceName = "localhost_" + (12918 + i);
ftys[i] = new TestMockMSModelFactory();
participants[i] = new MockParticipantManager(ZK_ADDR, clusterName, instanceName);
participants[i].getStateMachineEngine().registerStateModelFactory("MasterSlave", ftys[i]);
participants[i].syncStart();
// wait for each participant to complete state transitions, so we have deterministic results
HelixClusterVerifier _clusterVerifier =
new BestPossibleExternalViewVerifier.Builder(clusterName).setZkAddr(ZK_ADDR).build();
Thread.sleep(100);
Assert.assertTrue(_clusterVerifier.verify(),
"participant: " + instanceName + " fails to complete all transitions");
}
// check batch-msg-wrapper counts
MockBatchMsgWrapper wrapper = (MockBatchMsgWrapper) ftys[0].getBatchMessageWrapper("TestDB0");
// System.out.println("startCount: " + wrapper._startCount);
Assert.assertEquals(wrapper._startCount, 3,
"Expect 3 batch.start: O->S, S->M, and M->S for 1st participant");
// System.out.println("endCount: " + wrapper._endCount);
Assert.assertEquals(wrapper._endCount, 3,
"Expect 3 batch.end: O->S, S->M, and M->S for 1st participant");
wrapper = (MockBatchMsgWrapper) ftys[1].getBatchMessageWrapper("TestDB0");
// System.out.println("startCount: " + wrapper._startCount);
Assert.assertEquals(wrapper._startCount, 2,
"Expect 2 batch.start: O->S and S->M for 2nd participant");
// System.out.println("endCount: " + wrapper._endCount);
Assert.assertEquals(wrapper._startCount, 2,
"Expect 2 batch.end: O->S and S->M for 2nd participant");
// clean up
controller.syncStop();
for (int i = 0; i < n; i++) {
participants[i].syncStop();
}
System.out.println("END " + clusterName + " at " + new Date(System.currentTimeMillis()));
}
示例5: testBasic
import org.apache.helix.model.IdealState; //导入方法依赖的package包/类
@Test
public void testBasic() throws Exception {
// Logger.getRootLogger().setLevel(Level.INFO);
String className = TestHelper.getTestClassName();
String methodName = TestHelper.getTestMethodName();
String clusterName = className + "_" + methodName;
int n = 2;
System.out.println("START " + clusterName + " at " + new Date(System.currentTimeMillis()));
TestHelper.setupCluster(clusterName, ZK_ADDR, 12918, // participant port
"localhost", // participant name prefix
"TestDB", // resource name prefix
1, // resources
32, // partitions per resource
n, // number of nodes
2, // replicas
"MasterSlave", true); // do rebalance
// enable batch message
ZKHelixDataAccessor accessor =
new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_gZkClient));
Builder keyBuilder = accessor.keyBuilder();
IdealState idealState = accessor.getProperty(keyBuilder.idealStates("TestDB0"));
idealState.setBatchMessageMode(true);
accessor.setProperty(keyBuilder.idealStates("TestDB0"), idealState);
// register a message listener so we know how many message generated
TestZkChildListener listener = new TestZkChildListener();
_gZkClient.subscribeChildChanges(keyBuilder.messages("localhost_12918").getPath(), listener);
ClusterControllerManager controller =
new ClusterControllerManager(ZK_ADDR, clusterName, "controller_0");
controller.syncStart();
// start participants
MockParticipantManager[] participants = new MockParticipantManager[n];
for (int i = 0; i < n; i++) {
String instanceName = "localhost_" + (12918 + i);
participants[i] = new MockParticipantManager(ZK_ADDR, clusterName, instanceName);
participants[i].syncStart();
}
boolean result =
ClusterStateVerifier.verifyByZkCallback(new BestPossAndExtViewZkVerifier(ZK_ADDR,
clusterName));
Assert.assertTrue(result);
// Change to three is because there is an extra factory registered
// So one extra NO_OP message send
Assert.assertTrue(listener._maxNbOfChilds <= 3,
"Should get no more than 2 messages (O->S and S->M)");
// clean up
// wait for all zk callbacks done
controller.syncStop();
for (int i = 0; i < n; i++) {
participants[i].syncStop();
}
System.out.println("END " + clusterName + " at " + new Date(System.currentTimeMillis()));
}
示例6: testSubMsgExecutionFail
import org.apache.helix.model.IdealState; //导入方法依赖的package包/类
@Test
public void testSubMsgExecutionFail() throws Exception {
String className = TestHelper.getTestClassName();
String methodName = TestHelper.getTestMethodName();
String clusterName = className + "_" + methodName;
final int n = 5;
MockParticipantManager[] participants = new MockParticipantManager[n];
System.out.println("START " + clusterName + " at " + new Date(System.currentTimeMillis()));
TestHelper.setupCluster(clusterName, ZK_ADDR, 12918, "localhost", "TestDB", 1, // resource#
6, // partition#
n, // nodes#
3, // replicas#
"MasterSlave", true);
// enable batch message
ZKHelixDataAccessor accessor =
new ZKHelixDataAccessor(clusterName, _baseAccessor);
Builder keyBuilder = accessor.keyBuilder();
IdealState idealState = accessor.getProperty(keyBuilder.idealStates("TestDB0"));
idealState.setBatchMessageMode(true);
accessor.setProperty(keyBuilder.idealStates("TestDB0"), idealState);
// get MASTER for errPartition
String errPartition = "TestDB0_0";
String masterOfPartition0 = null;
for (Map.Entry<String, String> entry : idealState.getInstanceStateMap(errPartition).entrySet()) {
if (entry.getValue().equals("MASTER")) {
masterOfPartition0 = entry.getKey();
break;
}
}
Assert.assertNotNull(masterOfPartition0);
ClusterControllerManager controller = new ClusterControllerManager(ZK_ADDR, clusterName);
controller.syncStart();
for (int i = 0; i < n; i++) {
String instanceName = "localhost_" + (12918 + i);
if (instanceName.equals(masterOfPartition0)) {
Map<String, Set<String>> errPartitions = new HashMap<String, Set<String>>();
errPartitions.put("SLAVE-MASTER", TestHelper.setOf("TestDB0_0"));
participants[i] = new MockParticipantManager(ZK_ADDR, clusterName, instanceName);
participants[i].setTransition(new ErrTransition(errPartitions));
} else {
participants[i] = new MockParticipantManager(ZK_ADDR, clusterName, instanceName);
}
participants[i].syncStart();
}
Map<String, Map<String, String>> errStates = new HashMap<String, Map<String, String>>();
errStates.put("TestDB0", new HashMap<String, String>());
errStates.get("TestDB0").put(errPartition, masterOfPartition0);
boolean result =
ClusterStateVerifier.verifyByPolling(new ClusterStateVerifier.BestPossAndExtViewZkVerifier(
ZK_ADDR, clusterName, errStates));
Assert.assertTrue(result);
Map<String, Set<String>> errorStateMap = new HashMap<String, Set<String>>();
errorStateMap.put(errPartition, TestHelper.setOf(masterOfPartition0));
// verify "TestDB0_0", masterOfPartition0 is in ERROR state
TestHelper.verifyState(clusterName, ZK_ADDR, errorStateMap, "ERROR");
System.out.println("END " + clusterName + " at " + new Date(System.currentTimeMillis()));
}