/**
   * Get the {@link voldemort.store.socket.SocketStore} to redirect to for the donor, creating one
   * if needed.
   *
   * @param storeName Name of the store
   * @param donorNodeId Donor node id
   * @return <code>SocketStore</code> object for <code>storeName</code> and <code>donorNodeId</code>
   */
  private Store<ByteArray, byte[], byte[]> getRedirectingSocketStore(
      String storeName, int donorNodeId) {
    if (!storeRepository.hasRedirectingSocketStore(storeName, donorNodeId)) {
      synchronized (storeRepository) {
        if (!storeRepository.hasRedirectingSocketStore(storeName, donorNodeId)) {
          Node donorNode = getNodeIfPresent(donorNodeId);
          logger.info(
              "Creating new redirecting store for donor node "
                  + donorNode.getId()
                  + " and store "
                  + storeName);
          storeRepository.addRedirectingSocketStore(
              donorNode.getId(),
              storeFactory.create(
                  storeName,
                  donorNode.getHost(),
                  donorNode.getSocketPort(),
                  RequestFormatType.PROTOCOL_BUFFERS,
                  RequestRoutingType.IGNORE_CHECKS));
        }
      }
    }

    return storeRepository.getRedirectingSocketStore(storeName, donorNodeId);
  }
Beispiel #2
0
 private Store<ByteArray, byte[], byte[]> createNodeStore(String storeName, Node node) {
   return storeFactory.create(
       storeName,
       node.getHost(),
       node.getSocketPort(),
       voldemortConfig.getRequestFormatType(),
       RequestRoutingType.NORMAL);
 }
 @Override
 protected Store<ByteArray, byte[], byte[]> getStore(
     String storeName, String host, int port, RequestFormatType type) {
   return storeFactory.create(storeName, host, port, type, requestRoutingType);
 }