gpt4 book ai didi

com.linecorp.centraldogma.server.internal.replication.ZooKeeperCommandExecutor.absolutePath()方法的使用及代码示例

转载 作者:知者 更新时间:2024-03-16 18:51:31 25 4
gpt4 key购买 nike

本文整理了Java中com.linecorp.centraldogma.server.internal.replication.ZooKeeperCommandExecutor.absolutePath()方法的一些代码示例,展示了ZooKeeperCommandExecutor.absolutePath()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。ZooKeeperCommandExecutor.absolutePath()方法的具体详情如下:
包路径:com.linecorp.centraldogma.server.internal.replication.ZooKeeperCommandExecutor
类名称:ZooKeeperCommandExecutor
方法名:absolutePath

ZooKeeperCommandExecutor.absolutePath介绍

暂无

代码示例

代码示例来源:origin: line/centraldogma

private void createParentNodes() throws Exception {
  if (createdParentNodes) {
    return;
  }
  // Create the zkPath if it does not exist.
  createZkPathIfMissing(absolutePath());
  createZkPathIfMissing(absolutePath(LOG_PATH));
  createZkPathIfMissing(absolutePath(LOG_BLOCK_PATH));
  createZkPathIfMissing(absolutePath(LOCK_PATH));
  createdParentNodes = true;
}

代码示例来源:origin: com.linecorp.centraldogma/centraldogma-server

private void createParentNodes() throws Exception {
  if (createdParentNodes) {
    return;
  }
  // Create the zkPath if it does not exist.
  createZkPathIfMissing(absolutePath());
  createZkPathIfMissing(absolutePath(LOG_PATH));
  createZkPathIfMissing(absolutePath(LOG_BLOCK_PATH));
  createZkPathIfMissing(absolutePath(LOCK_PATH));
  createdParentNodes = true;
}

代码示例来源:origin: com.linecorp.centraldogma/centraldogma-server-shaded

private void createParentNodes() throws Exception {
  if (createdParentNodes) {
    return;
  }
  // Create the zkPath if it does not exist.
  createZkPathIfMissing(absolutePath());
  createZkPathIfMissing(absolutePath(LOG_PATH));
  createZkPathIfMissing(absolutePath(LOG_BLOCK_PATH));
  createZkPathIfMissing(absolutePath(LOCK_PATH));
  createdParentNodes = true;
}

代码示例来源:origin: line/centraldogma

private <T> T blockingExecute(Command<T> command) throws Exception {
  createParentNodes();
  try (SafeLock ignored = safeLock(command.executionPath())) {
    // NB: We are sure no other replicas will append the conflicting logs (the commands with the
    //     same execution path) while we hold the lock for the command's execution path.
    //
    //     Other replicas may still append the logs with different execution paths, because, by design,
    //     two commands never conflict with each other if they have different execution paths.
    final List<String> recentRevisions = curator.getChildren().forPath(absolutePath(LOG_PATH));
    if (!recentRevisions.isEmpty()) {
      final long lastRevision = recentRevisions.stream().mapToLong(Long::parseLong).max().getAsLong();
      replayLogs(lastRevision);
    }
    final T result = delegate.execute(command).get();
    final ReplicationLog<T> log = new ReplicationLog<>(replicaId(), command, result);
    // Store the command execution log to ZooKeeper.
    final long revision = storeLog(log);
    logger.debug("logging OK. revision = {}, log = {}", revision, log);
    return result;
  }
}

代码示例来源:origin: com.linecorp.centraldogma/centraldogma-server-shaded

private <T> T blockingExecute(int replicaId, Command<T> command) throws Exception {
  createParentNodes();
  try (SafeLock ignored = safeLock(command.executionPath())) {
    // NB: We are sure no other replicas will append the conflicting logs (the commands with the
    //     same execution path) while we hold the lock for the command's execution path.
    //
    //     Other replicas may still append the logs with different execution paths, because, by design,
    //     two commands never conflict with each other if they have different execution paths.
    final List<String> recentRevisions = curator.getChildren().forPath(absolutePath(LOG_PATH));
    if (!recentRevisions.isEmpty()) {
      final long lastRevision = recentRevisions.stream().mapToLong(Long::parseLong).max().getAsLong();
      replayLogs(lastRevision);
    }
    final T result = delegate.execute(replicaId, command).get();
    final ReplicationLog<T> log = new ReplicationLog<>(replicaId(), command, result);
    // Store the command execution log to ZooKeeper.
    final long revision = storeLog(log);
    logger.debug("logging OK. revision = {}, log = {}", revision, log);
    return result;
  }
}

代码示例来源:origin: line/centraldogma

@VisibleForTesting
Optional<ReplicationLog<?>> loadLog(long revision, boolean skipIfSameReplica) {
  try {
    createParentNodes();
    final String logPath = absolutePath(LOG_PATH) + '/' + pathFromRevision(revision);
    final LogMeta logMeta = Jackson.readValue(curator.getData().forPath(logPath), LogMeta.class);
    if (skipIfSameReplica && replicaId() == logMeta.replicaId()) {
      return Optional.empty();
    }
    final byte[] bytes = new byte[logMeta.size()];
    int offset = 0;
    for (long blockId : logMeta.blocks()) {
      final String blockPath = absolutePath(LOG_BLOCK_PATH) + '/' + pathFromRevision(blockId);
      final byte[] b = curator.getData().forPath(blockPath);
      System.arraycopy(b, 0, bytes, offset, b.length);
      offset += b.length;
    }
    assert logMeta.size() == offset;
    final ReplicationLog<?> log = Jackson.readValue(bytes, ReplicationLog.class);
    return Optional.of(log);
  } catch (Exception e) {
    logger.error("Failed to load a log at revision {}; entering read-only mode", revision, e);
    stopLater();
    throw new ReplicationException("failed to load a log at revision " + revision, e);
  }
}

代码示例来源:origin: com.linecorp.centraldogma/centraldogma-server

private <T> T blockingExecute(Command<T> command) throws Exception {
  createParentNodes();
  try (SafeLock ignored = safeLock(command.executionPath())) {
    // NB: We are sure no other replicas will append the conflicting logs (the commands with the
    //     same execution path) while we hold the lock for the command's execution path.
    //
    //     Other replicas may still append the logs with different execution paths, because, by design,
    //     two commands never conflict with each other if they have different execution paths.
    final List<String> recentRevisions = curator.getChildren().forPath(absolutePath(LOG_PATH));
    if (!recentRevisions.isEmpty()) {
      final long lastRevision = recentRevisions.stream().mapToLong(Long::parseLong).max().getAsLong();
      replayLogs(lastRevision);
    }
    final T result = delegate.execute(command).get();
    final ReplicationLog<T> log = new ReplicationLog<>(replicaId(), command, result);
    // Store the command execution log to ZooKeeper.
    final long revision = storeLog(log);
    logger.debug("logging OK. revision = {}, log = {}", revision, log);
    return result;
  }
}

代码示例来源:origin: line/centraldogma

private long storeLog(ReplicationLog<?> log) {
  try {
    final byte[] bytes = Jackson.writeValueAsBytes(log);
    assert bytes.length > 0;
    final LogMeta logMeta = new LogMeta(log.replicaId(), System.currentTimeMillis(), bytes.length);
    final int count = (bytes.length + MAX_BYTES - 1) / MAX_BYTES;
    for (int i = 0; i < count; ++i) {
      final int start = i * MAX_BYTES;
      final int end = Math.min((i + 1) * MAX_BYTES, bytes.length);
      final byte[] b = Arrays.copyOfRange(bytes, start, end);
      final String blockPath = curator.create()
                      .withMode(CreateMode.PERSISTENT_SEQUENTIAL)
                      .forPath(absolutePath(LOG_BLOCK_PATH) + '/', b);
      final long blockId = revisionFromPath(blockPath);
      logMeta.appendBlock(blockId);
    }
    final String logPath =
        curator.create().withMode(CreateMode.PERSISTENT_SEQUENTIAL)
            .forPath(absolutePath(LOG_PATH) + '/', Jackson.writeValueAsBytes(logMeta));
    return revisionFromPath(logPath);
  } catch (Exception e) {
    logger.error("Failed to store a log; entering read-only mode: {}", log, e);
    stopLater();
    throw new ReplicationException("failed to store a log: " + log, e);
  }
}

代码示例来源:origin: line/centraldogma

private SafeLock safeLock(String executionPath) {
  final InterProcessMutex mtx = mutexMap.computeIfAbsent(
      executionPath, k -> new InterProcessMutex(curator, absolutePath(LOCK_PATH, executionPath)));
  try {
    mtx.acquire();
  } catch (Exception e) {
    logger.error("Failed to acquire a lock for {}; entering read-only mode", executionPath, e);
    stopLater();
    throw new ReplicationException("failed to acquire a lock for " + executionPath, e);
  }
  return () -> {
    try {
      mtx.release();
    } catch (Exception ignored) {
      // Ignore.
    }
  };
}

代码示例来源:origin: com.linecorp.centraldogma/centraldogma-server-shaded

private long storeLog(ReplicationLog<?> log) {
  try {
    final byte[] bytes = Jackson.writeValueAsBytes(log);
    assert bytes.length > 0;
    final LogMeta logMeta = new LogMeta(log.replicaId(), System.currentTimeMillis(), bytes.length);
    final int count = (bytes.length + MAX_BYTES - 1) / MAX_BYTES;
    for (int i = 0; i < count; ++i) {
      final int start = i * MAX_BYTES;
      final int end = Math.min((i + 1) * MAX_BYTES, bytes.length);
      final byte[] b = Arrays.copyOfRange(bytes, start, end);
      final String blockPath = curator.create()
                      .withMode(CreateMode.PERSISTENT_SEQUENTIAL)
                      .forPath(absolutePath(LOG_BLOCK_PATH) + '/', b);
      final long blockId = revisionFromPath(blockPath);
      logMeta.appendBlock(blockId);
    }
    final String logPath =
        curator.create().withMode(CreateMode.PERSISTENT_SEQUENTIAL)
            .forPath(absolutePath(LOG_PATH) + '/', Jackson.writeValueAsBytes(logMeta));
    return revisionFromPath(logPath);
  } catch (Exception e) {
    logger.error("Failed to store a log; entering read-only mode: {}", log, e);
    stopLater();
    throw new ReplicationException("failed to store a log: " + log, e);
  }
}

代码示例来源:origin: com.linecorp.centraldogma/centraldogma-server

private long storeLog(ReplicationLog<?> log) {
  try {
    final byte[] bytes = Jackson.writeValueAsBytes(log);
    assert bytes.length > 0;
    final LogMeta logMeta = new LogMeta(log.replicaId(), System.currentTimeMillis(), bytes.length);
    final int count = (bytes.length + MAX_BYTES - 1) / MAX_BYTES;
    for (int i = 0; i < count; ++i) {
      final int start = i * MAX_BYTES;
      final int end = Math.min((i + 1) * MAX_BYTES, bytes.length);
      final byte[] b = Arrays.copyOfRange(bytes, start, end);
      final String blockPath = curator.create()
                      .withMode(CreateMode.PERSISTENT_SEQUENTIAL)
                      .forPath(absolutePath(LOG_BLOCK_PATH) + '/', b);
      final long blockId = revisionFromPath(blockPath);
      logMeta.appendBlock(blockId);
    }
    final String logPath =
        curator.create().withMode(CreateMode.PERSISTENT_SEQUENTIAL)
            .forPath(absolutePath(LOG_PATH) + '/', Jackson.writeValueAsBytes(logMeta));
    return revisionFromPath(logPath);
  } catch (Exception e) {
    logger.error("Failed to store a log; entering read-only mode: {}", log, e);
    stopLater();
    throw new ReplicationException("failed to store a log: " + log, e);
  }
}

代码示例来源:origin: com.linecorp.centraldogma/centraldogma-server

@VisibleForTesting
Optional<ReplicationLog<?>> loadLog(long revision, boolean skipIfSameReplica) {
  try {
    createParentNodes();
    final String logPath = absolutePath(LOG_PATH) + '/' + pathFromRevision(revision);
    final LogMeta logMeta = Jackson.readValue(curator.getData().forPath(logPath), LogMeta.class);
    if (skipIfSameReplica && replicaId() == logMeta.replicaId()) {
      return Optional.empty();
    }
    final byte[] bytes = new byte[logMeta.size()];
    int offset = 0;
    for (long blockId : logMeta.blocks()) {
      final String blockPath = absolutePath(LOG_BLOCK_PATH) + '/' + pathFromRevision(blockId);
      final byte[] b = curator.getData().forPath(blockPath);
      System.arraycopy(b, 0, bytes, offset, b.length);
      offset += b.length;
    }
    assert logMeta.size() == offset;
    final ReplicationLog<?> log = Jackson.readValue(bytes, ReplicationLog.class);
    return Optional.of(log);
  } catch (Exception e) {
    logger.error("Failed to load a log at revision {}; entering read-only mode", revision, e);
    stopLater();
    throw new ReplicationException("failed to load a log at revision " + revision, e);
  }
}

代码示例来源:origin: com.linecorp.centraldogma/centraldogma-server

private SafeLock safeLock(String executionPath) {
  final InterProcessMutex mtx = mutexMap.computeIfAbsent(
      executionPath, k -> new InterProcessMutex(curator, absolutePath(LOCK_PATH, executionPath)));
  try {
    mtx.acquire();
  } catch (Exception e) {
    logger.error("Failed to acquire a lock for {}; entering read-only mode", executionPath, e);
    stopLater();
    throw new ReplicationException("failed to acquire a lock for " + executionPath, e);
  }
  return () -> {
    try {
      mtx.release();
    } catch (Exception ignored) {
      // Ignore.
    }
  };
}

代码示例来源:origin: com.linecorp.centraldogma/centraldogma-server-shaded

private SafeLock safeLock(String executionPath) {
  final InterProcessMutex mtx = mutexMap.computeIfAbsent(
      executionPath, k -> new InterProcessMutex(curator, absolutePath(LOCK_PATH, executionPath)));
  try {
    mtx.acquire();
  } catch (Exception e) {
    logger.error("Failed to acquire a lock for {}; entering read-only mode", executionPath, e);
    stopLater();
    throw new ReplicationException("failed to acquire a lock for " + executionPath, e);
  }
  return () -> {
    try {
      mtx.release();
    } catch (Exception ignored) {
      // Ignore.
    }
  };
}

代码示例来源:origin: com.linecorp.centraldogma/centraldogma-server-shaded

@VisibleForTesting
Optional<ReplicationLog<?>> loadLog(long revision, boolean skipIfSameReplica) {
  try {
    createParentNodes();
    final String logPath = absolutePath(LOG_PATH) + '/' + pathFromRevision(revision);
    final LogMeta logMeta = Jackson.readValue(curator.getData().forPath(logPath), LogMeta.class);
    if (skipIfSameReplica && replicaId() == logMeta.replicaId()) {
      return Optional.empty();
    }
    final byte[] bytes = new byte[logMeta.size()];
    int offset = 0;
    for (long blockId : logMeta.blocks()) {
      final String blockPath = absolutePath(LOG_BLOCK_PATH) + '/' + pathFromRevision(blockId);
      final byte[] b = curator.getData().forPath(blockPath);
      System.arraycopy(b, 0, bytes, offset, b.length);
      offset += b.length;
    }
    assert logMeta.size() == offset;
    final ReplicationLog<?> log = Jackson.readValue(bytes, ReplicationLog.class);
    return Optional.of(log);
  } catch (Exception e) {
    logger.error("Failed to load a log at revision {}; entering read-only mode", revision, e);
    stopLater();
    throw new ReplicationException("failed to load a log at revision " + revision, e);
  }
}

代码示例来源:origin: line/centraldogma

logWatcher = new PathChildrenCache(curator, absolutePath(LOG_PATH),
                  true, false, logWatcherExecutor);
logWatcher.getListenable().addListener(this, MoreExecutors.directExecutor());
leaderSelectorExecutor = Executors.newSingleThreadExecutor(
    new DefaultThreadFactory("zookeeper-leader-selector", true));
leaderSelector = new LeaderSelector(curator, absolutePath(LEADER_PATH),
                  leaderSelectorExecutor, oldLogRemover);
leaderSelector.start();

代码示例来源:origin: com.linecorp.centraldogma/centraldogma-server-shaded

logWatcher = new PathChildrenCache(curator, absolutePath(LOG_PATH),
                  true, false, logWatcherExecutor);
logWatcher.getListenable().addListener(this, MoreExecutors.directExecutor());
leaderSelectorExecutor = Executors.newSingleThreadExecutor(
    new DefaultThreadFactory("zookeeper-leader-selector", true));
leaderSelector = new LeaderSelector(curator, absolutePath(LEADER_PATH),
                  leaderSelectorExecutor, oldLogRemover);
leaderSelector.start();

代码示例来源:origin: com.linecorp.centraldogma/centraldogma-server

logWatcher = new PathChildrenCache(curator, absolutePath(LOG_PATH),
                  true, false, logWatcherExecutor);
logWatcher.getListenable().addListener(this, MoreExecutors.directExecutor());
leaderSelectorExecutor = Executors.newSingleThreadExecutor(
    new DefaultThreadFactory("zookeeper-leader-selector", true));
leaderSelector = new LeaderSelector(curator, absolutePath(LEADER_PATH),
                  leaderSelectorExecutor, oldLogRemover);
leaderSelector.start();

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com