You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by il...@apache.org on 2019/04/18 11:31:00 UTC

[ignite] branch master updated: IGNITE-11753 Improve error message on first connection attempt to secured cluster - Fixes #6469.

This is an automated email from the ASF dual-hosted git repository.

ilyak pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new 010f538  IGNITE-11753 Improve error message on first connection attempt to secured cluster - Fixes #6469.
010f538 is described below

commit 010f53822f8210990a0fc9a8b59011af10bc4dae
Author: Ilya Kasnacheev <il...@gmail.com>
AuthorDate: Thu Apr 18 14:30:19 2019 +0300

    IGNITE-11753 Improve error message on first connection attempt to secured cluster - Fixes #6469.
    
    Signed-off-by: Ilya Kasnacheev <il...@gmail.com>
---
 .../java/org/apache/ignite/internal/client/GridClient.java   |  9 ++++++++-
 .../apache/ignite/internal/client/impl/GridClientImpl.java   |  5 +++++
 .../internal/client/router/impl/GridRouterClientImpl.java    |  7 ++++++-
 .../apache/ignite/internal/commandline/CommandHandler.java   | 12 +++++++++++-
 4 files changed, 30 insertions(+), 3 deletions(-)

diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/GridClient.java b/modules/core/src/main/java/org/apache/ignite/internal/client/GridClient.java
index 0cba502..0405a90 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/GridClient.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/client/GridClient.java
@@ -153,4 +153,11 @@ public interface GridClient extends AutoCloseable {
      * {@code try-with-resources} statement.
      */
     @Override public void close();
-}
\ No newline at end of file
+
+    /**
+     * If client was not connected topology, throw last error encountered.
+     *
+     * @throws GridClientException If client was not connected
+     */
+    public void throwLastError() throws GridClientException;
+}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/impl/GridClientImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/client/impl/GridClientImpl.java
index d045a62..21e09bf 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/impl/GridClientImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/client/impl/GridClientImpl.java
@@ -349,6 +349,11 @@ public class GridClientImpl implements GridClient {
         return top;
     }
 
+    /** {@inheritDoc} */
+    @Override public void throwLastError() throws GridClientException {
+        top.nodes();
+    }
+
     /**
      * @return Connection manager.
      */
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/router/impl/GridRouterClientImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/client/router/impl/GridRouterClientImpl.java
index 59833fc..f3c9d39 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/router/impl/GridRouterClientImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/client/router/impl/GridRouterClientImpl.java
@@ -219,4 +219,9 @@ public class GridRouterClientImpl implements GridClient {
     @Override public void close() {
         clientImpl.close();
     }
-}
\ No newline at end of file
+
+    /** {@inheritDoc} */
+    @Override public void throwLastError() throws GridClientException {
+        clientImpl.throwLastError();
+    }
+}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java
index 1ddeee2..f656d34 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/commandline/CommandHandler.java
@@ -53,6 +53,7 @@ import org.apache.ignite.internal.client.GridClientFactory;
 import org.apache.ignite.internal.client.GridClientHandshakeException;
 import org.apache.ignite.internal.client.GridClientNode;
 import org.apache.ignite.internal.client.GridServerUnreachableException;
+import org.apache.ignite.internal.client.impl.GridClientImpl;
 import org.apache.ignite.internal.client.impl.connection.GridClientConnectionResetException;
 import org.apache.ignite.internal.client.ssl.GridSslBasicContextFactory;
 import org.apache.ignite.internal.commandline.argument.CommandArgUtils;
@@ -2797,6 +2798,8 @@ public class CommandHandler {
 
             boolean tryConnectAgain = true;
 
+            boolean suppliedAuth = !F.isEmpty(args.getUserName()) && !F.isEmpty(args.getPassword());
+
             int tryConnectMaxCount = 3;
 
             while (tryConnectAgain) {
@@ -2857,6 +2860,10 @@ public class CommandHandler {
                 }
 
                 try (GridClient client = GridClientFactory.start(clientCfg)) {
+                    // If connection is unsuccessful, fail before doing any operations:
+                    if (!client.connected())
+                        client.throwLastError();
+
                     switch (args.command()) {
                         case ACTIVATE:
                             activate(client);
@@ -2896,13 +2903,16 @@ public class CommandHandler {
                 }
                 catch (Throwable e) {
                     if (tryConnectMaxCount > 0 && isAuthError(e)) {
-                        log("Authentication error, try connection again.");
+                        log(suppliedAuth ?
+                            "Authentication error, please try again." : "This cluster requires authentication.");
 
                         if (F.isEmpty(args.getUserName()))
                             args.setUserName(requestDataFromConsole("user: "));
 
                         args.setPassword(new String(requestPasswordFromConsole("password: ")));
 
+                        suppliedAuth = true;
+
                         tryConnectAgain = true;
 
                         tryConnectMaxCount--;