Ejemplo n.º 1
1
 @NotNull
 private Map<String, Ref> getRemoteRefs(@NotNull Repository db, @NotNull GitVcsRoot gitRoot)
     throws Exception {
   long retryInterval = myConfig.getConnectionRetryIntervalMillis();
   int attemptsLeft = myConfig.getConnectionRetryAttempts();
   while (true) {
     final long start = System.currentTimeMillis();
     Transport transport = null;
     FetchConnection connection = null;
     try {
       transport =
           myTransportFactory.createTransport(
               db, gitRoot.getRepositoryFetchURL(), gitRoot.getAuthSettings());
       connection = transport.openFetch();
       return connection.getRefsMap();
     } catch (NotSupportedException nse) {
       throw friendlyNotSupportedException(gitRoot, nse);
     } catch (TransportException te) {
       attemptsLeft--;
       if (isRecoverable(te) && attemptsLeft > 0) {
         LOG.warn(
             "List remote refs failed: "
                 + te.getMessage()
                 + ", "
                 + attemptsLeft
                 + " attempt(s) left");
       } else {
         throw friendlyTransportException(te, gitRoot);
       }
     } catch (WrongPassphraseException e) {
       throw new VcsException(e.getMessage(), e);
     } finally {
       if (connection != null) connection.close();
       if (transport != null) transport.close();
       final long finish = System.currentTimeMillis();
       PERFORMANCE_LOG.debug(
           "[getRemoteRefs] repository: "
               + LogUtil.describe(gitRoot)
               + ", took "
               + (finish - start)
               + "ms");
     }
     Thread.sleep(retryInterval);
     retryInterval *= 2;
   }
 }
  private boolean selectNextNode() {
    if (nextClient >= nodes.size()) {
      return false;
    }

    if (currentTransport != null) {
      stats.nodeRetries++;
    }

    closeTransport();
    currentNode = nodes.get(nextClient++);
    SettingsUtils.pinNode(settings, currentNode);
    currentTransport = transportFactory.create(settings, currentNode);
    return true;
  }
  protected StubConnection createConnection() throws Exception {
    URI bindURI = getBindURI();

    // Note: on platforms like OS X we cannot bind to the actual hostname, so we
    // instead use the original host name (typically localhost) to bind to

    URI actualURI = this.broker.getConnectURI();
    URI connectURI =
        new URI(
            actualURI.getScheme(),
            actualURI.getUserInfo(),
            bindURI.getHost(),
            actualURI.getPort(),
            actualURI.getPath(),
            bindURI.getQuery(),
            bindURI.getFragment());

    Transport transport = TransportFactory.connect(connectURI);
    StubConnection connection = new StubConnection(transport);
    connections.add(connection);
    return connection;
  }