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


Java IdealState.setBatchMessageMode方法代码示例

本文整理汇总了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);
}
 
开发者ID:apache,项目名称:helix,代码行数:14,代码来源:ZKHelixAdmin.java

示例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);
}
 
开发者ID:apache,项目名称:helix,代码行数:41,代码来源:TestBatchMessageHandling.java

示例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());
}
 
开发者ID:apache,项目名称:helix,代码行数:35,代码来源:TestResourceThreadpoolSize.java

示例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()));
}
 
开发者ID:apache,项目名称:helix,代码行数:75,代码来源:TestBatchMessageWrapper.java

示例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()));
}
 
开发者ID:apache,项目名称:helix,代码行数:63,代码来源:TestBatchMessage.java

示例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()));

}
 
开发者ID:apache,项目名称:helix,代码行数:71,代码来源:TestBatchMessage.java


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