Example #1
0
 /**
  * @param sn ServerName to get a connection against.
  * @return The AdminProtocol we got when we connected to <code>sn</code> May have come from cache,
  *     may not be good, may have been setup by this invocation, or may be null.
  * @throws IOException
  */
 @SuppressWarnings("deprecation")
 private static AdminService.BlockingInterface getCachedConnection(
     ClusterConnection connection, ServerName sn) throws IOException {
   if (sn == null) {
     return null;
   }
   AdminService.BlockingInterface service = null;
   try {
     service = connection.getAdmin(sn);
   } catch (RetriesExhaustedException e) {
     if (e.getCause() != null && e.getCause() instanceof ConnectException) {
       // Catch this; presume it means the cached connection has gone bad.
     } else {
       throw e;
     }
   } catch (SocketTimeoutException e) {
     LOG.debug("Timed out connecting to " + sn);
   } catch (NoRouteToHostException e) {
     LOG.debug("Connecting to " + sn, e);
   } catch (SocketException e) {
     LOG.debug("Exception connecting to " + sn);
   } catch (UnknownHostException e) {
     LOG.debug("Unknown host exception connecting to  " + sn);
   } catch (FailedServerException e) {
     if (LOG.isDebugEnabled()) {
       LOG.debug("Server " + sn + " is in failed server list.");
     }
   } catch (IOException ioe) {
     Throwable cause = ioe.getCause();
     if (ioe instanceof ConnectException) {
       // Catch. Connect refused.
     } else if (cause != null && cause instanceof EOFException) {
       // Catch. Other end disconnected us.
     } else if (cause != null
         && cause.getMessage() != null
         && cause.getMessage().toLowerCase(Locale.ROOT).contains("connection reset")) {
       // Catch. Connection reset.
     } else {
       throw ioe;
     }
   }
   return service;
 }