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


Java HRegionInterface.replicateLogEntries方法代码示例

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


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

示例1: shipEdits

import org.apache.hadoop.hbase.ipc.HRegionInterface; //导入方法依赖的package包/类
/**
 * Do the shipping logic
 */
protected void shipEdits() {
  int sleepMultiplier = 1;
  if (this.currentNbEntries == 0) {
    LOG.warn("Was given 0 edits to ship");
    return;
  }
  while (this.isActive()) {
    try {
      HRegionInterface rrs = getRS();
      LOG.debug("Replicating " + currentNbEntries);
      rrs.replicateLogEntries(Arrays.copyOf(this.entriesArray, currentNbEntries));
      if (this.lastLoggedPosition != this.position) {
        this.manager.logPositionAndCleanOldLogs(this.currentPath,
            this.peerClusterZnode, this.position, queueRecovered);
        this.lastLoggedPosition = this.position;
      }
      this.totalReplicatedEdits += currentNbEntries;
      this.metrics.shippedBatchesRate.inc(1);
      this.metrics.shippedOpsRate.inc(
          this.currentNbOperations);
      this.metrics.setAgeOfLastShippedOp(
          this.entriesArray[this.entriesArray.length-1].getKey().getWriteTime());
      LOG.debug("Replicated in total: " + this.totalReplicatedEdits);
      break;

    } catch (IOException ioe) {
      // Didn't ship anything, but must still age the last time we did
      this.metrics.refreshAgeOfLastShippedOp();
      if (ioe instanceof RemoteException) {
        ioe = ((RemoteException) ioe).unwrapRemoteException();
        LOG.warn("Can't replicate because of an error on the remote cluster: ", ioe);
      } else {
        if (ioe instanceof SocketTimeoutException) {
          // This exception means we waited for more than 60s and nothing
          // happened, the cluster is alive and calling it right away
          // even for a test just makes things worse.
          sleepForRetries("Encountered a SocketTimeoutException. Since the" +
            "call to the remote cluster timed out, which is usually " +
            "caused by a machine failure or a massive slowdown",
            this.socketTimeoutMultiplier);
        } else {
          LOG.warn("Can't replicate because of a local or network error: ", ioe);
        }
      }

      try {
        boolean down;
        // Spin while the slave is down and we're not asked to shutdown/close
        do {
          down = isSlaveDown();
          if (down) {
            if (sleepForRetries("Since we are unable to replicate", sleepMultiplier)) {
              sleepMultiplier++;
            } else {
              chooseSinks();
            }
          }
        } while (this.isActive() && down );
      } catch (InterruptedException e) {
        LOG.debug("Interrupted while trying to contact the peer cluster");
      }
    }
  }
}
 
开发者ID:lifeng5042,项目名称:RStore,代码行数:68,代码来源:ReplicationSource.java


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