private boolean canRetryDriverConnection(Exception e) {
   if (e instanceof DriverException && e.getMessage().contains("Connection thread interrupted"))
     return true;
   if (e instanceof NoHostAvailableException) {
     if (((NoHostAvailableException) e).getErrors().values().size() == 1) {
       Throwable cause = ((NoHostAvailableException) e).getErrors().values().iterator().next();
       if (cause != null
           && cause.getCause() instanceof java.nio.channels.ClosedByInterruptException) {
         return true;
       }
     }
   }
   return false;
 }