You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2016/02/12 15:05:37 UTC

ignite git commit: IGNITE-1786: Further review (added toString() to requests, added debug to NIO listener).

Repository: ignite
Updated Branches:
  refs/heads/ignite-1786 64cfa62ae -> 119f2c935


IGNITE-1786: Further review (added toString() to requests, added debug to NIO listener).


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/119f2c93
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/119f2c93
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/119f2c93

Branch: refs/heads/ignite-1786
Commit: 119f2c9351e7a3ed298b9d63d916357f5b769234
Parents: 64cfa62
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Fri Feb 12 17:05:20 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Fri Feb 12 17:05:20 2016 +0300

----------------------------------------------------------------------
 .../processors/odbc/OdbcNioListener.java        | 97 +++++++++-----------
 .../processors/odbc/OdbcQueryCloseRequest.java  |  7 ++
 .../odbc/OdbcQueryExecuteRequest.java           | 10 ++
 .../processors/odbc/OdbcQueryFetchRequest.java  |  7 ++
 .../odbc/OdbcQueryGetColumnsMetaRequest.java    |  6 ++
 .../odbc/OdbcQueryGetTablesMetaRequest.java     |  7 ++
 .../internal/processors/odbc/OdbcUtils.java     | 13 +++
 7 files changed, 91 insertions(+), 56 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/119f2c93/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcNioListener.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcNioListener.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcNioListener.java
index 0a5ae0e..cf5585a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcNioListener.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcNioListener.java
@@ -29,7 +29,6 @@ import org.apache.ignite.internal.util.GridSpinBusyLock;
 import org.apache.ignite.internal.util.nio.GridNioServerListenerAdapter;
 import org.apache.ignite.internal.util.nio.GridNioSession;
 import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.lang.IgniteBiTuple;
 import org.jetbrains.annotations.Nullable;
 
@@ -52,7 +51,10 @@ import static org.apache.ignite.internal.processors.odbc.OdbcRequest.GET_TABLES_
  */
 public class OdbcNioListener extends GridNioServerListenerAdapter<OdbcRequest> {
     /** Query ID sequence. */
-    private static final AtomicLong qryIdGen = new AtomicLong();
+    private static final AtomicLong QRY_ID_GEN = new AtomicLong();
+
+    /** Request ID generator. */
+    private static final AtomicLong REQ_ID_GEN = new AtomicLong();
 
     /** Kernel context. */
     private final GridKernalContext ctx;
@@ -81,33 +83,39 @@ public class OdbcNioListener extends GridNioServerListenerAdapter<OdbcRequest> {
     /** {@inheritDoc} */
     @Override public void onConnected(GridNioSession ses) {
         if (log.isDebugEnabled())
-            log.debug("Driver connected");
+            log.debug("ODBC client connected: " + ses.remoteAddress());
     }
 
     /** {@inheritDoc} */
     @Override public void onDisconnected(GridNioSession ses, @Nullable Exception e) {
-        if (log.isDebugEnabled())
-            log.debug("Driver disconnected");
-
-        if (e != null) {
-            if (e instanceof RuntimeException)
-                U.error(log, "Failed to process request from remote client: " + ses, e);
+        if (log.isDebugEnabled()) {
+            if (e == null)
+                log.debug("ODBC client disconnected: " + ses.remoteAddress());
             else
-                U.warn(log, "Closed client session due to exception [ses=" + ses + ", msg=" + e.getMessage() + ']');
+                log.debug("ODBC client disconnected due to an error [addr=" + ses.remoteAddress() + ", err=" + e + ']');
         }
     }
 
     /** {@inheritDoc} */
-    @Override public void onMessage(GridNioSession ses, OdbcRequest msg) {
-        assert msg != null;
+    @Override public void onMessage(GridNioSession ses, OdbcRequest req) {
+        assert req != null;
 
-        if (log.isDebugEnabled())
-            log.debug("Received request from client: [msg=" + msg + ']');
+        long reqId = REQ_ID_GEN.incrementAndGet();
+        long startTime = 0;
 
-        OdbcResponse res = handle(msg);
+        if (log.isDebugEnabled()) {
+            startTime = System.nanoTime();
 
-        if (log.isDebugEnabled())
-            log.debug("Handling result: [res=" + res.status() + ']');
+            log.debug("ODBC request received [id=" + reqId + ", addr=" + ses.remoteAddress() + ", req=" + req + ']');
+        }
+
+        OdbcResponse res = handle(req);
+
+        if (log.isDebugEnabled()) {
+            long dur = (System.nanoTime() - startTime) / 1000;
+
+            log.debug("ODBC request processed [id=" + reqId + ", dur(mcs)=" + dur  + ", res=" + res.status() + ']');
+        }
 
         ses.send(res);
     }
@@ -121,14 +129,9 @@ public class OdbcNioListener extends GridNioServerListenerAdapter<OdbcRequest> {
     public OdbcResponse handle(OdbcRequest req) {
         assert req != null;
 
-        if (!busyLock.enterBusy()) {
-            String errMsg = "Failed to handle request [req=" + req +
-                    ", err=Received request while stopping grid]";
-
-            U.error(log, errMsg);
-
-            return new OdbcResponse(OdbcResponse.STATUS_FAILED, errMsg);
-        }
+        if (!busyLock.enterBusy())
+            return new OdbcResponse(OdbcResponse.STATUS_FAILED,
+                "Failed to handle ODBC request because node is stopping: " + req);
 
         try {
             switch (req.command()) {
@@ -148,8 +151,7 @@ public class OdbcNioListener extends GridNioServerListenerAdapter<OdbcRequest> {
                     return getTablesMeta((OdbcQueryGetTablesMetaRequest) req);
             }
 
-            return new OdbcResponse(OdbcResponse.STATUS_FAILED,
-                    "Failed to find registered handler for command: " + req.command());
+            return new OdbcResponse(OdbcResponse.STATUS_FAILED, "Unsupported ODBC request: " + req);
         }
         finally {
             busyLock.leaveBusy();
@@ -163,7 +165,7 @@ public class OdbcNioListener extends GridNioServerListenerAdapter<OdbcRequest> {
      * @return Response.
      */
     private OdbcResponse executeQuery(OdbcQueryExecuteRequest req) {
-        long qryId = qryIdGen.getAndIncrement();
+        long qryId = QRY_ID_GEN.getAndIncrement();
 
         try {
             SqlFieldsQuery qry = new SqlFieldsQuery(req.sqlQuery());
@@ -174,19 +176,16 @@ public class OdbcNioListener extends GridNioServerListenerAdapter<OdbcRequest> {
 
             if (cache == null)
                 return new OdbcResponse(OdbcResponse.STATUS_FAILED,
-                    "Failed to find cache with name: " + req.cacheName());
+                    "Cache doesn't exist (did you configure it?): " + req.cacheName());
 
             QueryCursor qryCur = cache.query(qry);
 
-            Iterator cur = qryCur.iterator();
+            Iterator iter = qryCur.iterator();
 
-            qryCurs.put(qryId, new IgniteBiTuple<>(qryCur, cur));
+            qryCurs.put(qryId, new IgniteBiTuple<>(qryCur, iter));
 
             List<?> fieldsMeta = ((QueryCursorImpl) qryCur).fieldsMeta();
 
-            if (log.isDebugEnabled())
-                log.debug("Field meta: " + fieldsMeta);
-
             OdbcQueryExecuteResult res = new OdbcQueryExecuteResult(qryId, convertMetadata(fieldsMeta));
 
             return new OdbcResponse(res);
@@ -237,8 +236,7 @@ public class OdbcNioListener extends GridNioServerListenerAdapter<OdbcRequest> {
             Iterator cur = qryCurs.get(req.queryId()).get2();
 
             if (cur == null)
-                return new OdbcResponse(OdbcResponse.STATUS_FAILED,
-                        "Failed to find query with ID: " + req.queryId());
+                return new OdbcResponse(OdbcResponse.STATUS_FAILED, "Failed to find query with ID: " + req.queryId());
 
             List<Object> items = new ArrayList<>();
 
@@ -273,12 +271,12 @@ public class OdbcNioListener extends GridNioServerListenerAdapter<OdbcRequest> {
                 // Parsing two-part table name.
                 String[] parts = req.tableName().split("\\.");
 
-                cacheName = removeQuotationMarksIfNeeded(parts[0]);
+                cacheName = OdbcUtils.removeQuotationMarksIfNeeded(parts[0]);
 
                 tableName = parts[1];
             }
             else {
-                cacheName = removeQuotationMarksIfNeeded(req.cacheName());
+                cacheName = OdbcUtils.removeQuotationMarksIfNeeded(req.cacheName());
 
                 tableName = req.tableName();
             }
@@ -293,13 +291,14 @@ public class OdbcNioListener extends GridNioServerListenerAdapter<OdbcRequest> {
                     if (!matches(field.getKey(), req.columnName()))
                         continue;
 
-                    OdbcColumnMeta columnMeta = new OdbcColumnMeta(req.cacheName(),
-                            table.name(), field.getKey(), field.getValue());
+                    OdbcColumnMeta columnMeta = new OdbcColumnMeta(req.cacheName(), table.name(),
+                        field.getKey(), field.getValue());
 
                     if (!meta.contains(columnMeta))
                         meta.add(columnMeta);
                 }
             }
+
             OdbcQueryGetColumnsMetaResult res = new OdbcQueryGetColumnsMetaResult(meta);
 
             return new OdbcResponse(res);
@@ -319,7 +318,7 @@ public class OdbcNioListener extends GridNioServerListenerAdapter<OdbcRequest> {
         try {
             List<OdbcTableMeta> meta = new ArrayList<>();
 
-            String realSchema = removeQuotationMarksIfNeeded(req.schema());
+            String realSchema = OdbcUtils.removeQuotationMarksIfNeeded(req.schema());
 
             for (String cacheName : ctx.cache().cacheNames())
             {
@@ -335,8 +334,7 @@ public class OdbcNioListener extends GridNioServerListenerAdapter<OdbcRequest> {
                     if (!matches("TABLE", req.tableType()))
                         continue;
 
-                    OdbcTableMeta tableMeta = new OdbcTableMeta(req.catalog(), cacheName,
-                            table.name(), "TABLE");
+                    OdbcTableMeta tableMeta = new OdbcTableMeta(req.catalog(), cacheName, table.name(), "TABLE");
 
                     if (!meta.contains(tableMeta))
                         meta.add(tableMeta);
@@ -384,17 +382,4 @@ public class OdbcNioListener extends GridNioServerListenerAdapter<OdbcRequest> {
         return str != null && (F.isEmpty(ptrn) ||
             str.toUpperCase().matches(ptrn.toUpperCase().replace("%", ".*").replace("_", ".")));
     }
-
-    /**
-     * Remove quotation marks at the beginning and end of the string if present.
-     *
-     * @param str Input string.
-     * @return String without leading and trailing quotation marks.
-     */
-    private static String removeQuotationMarksIfNeeded(String str) {
-        if (str.startsWith("\"") && str.endsWith("\""))
-            return str.substring(1, str.length() - 1);
-
-        return str;
-    }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/119f2c93/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcQueryCloseRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcQueryCloseRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcQueryCloseRequest.java
index 33641f0..8c081ef 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcQueryCloseRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcQueryCloseRequest.java
@@ -17,6 +17,8 @@
 
 package org.apache.ignite.internal.processors.odbc;
 
+import org.apache.ignite.internal.util.typedef.internal.S;
+
 /**
  * ODBC query close request.
  */
@@ -39,4 +41,9 @@ public class OdbcQueryCloseRequest extends OdbcRequest {
     public long queryId() {
         return queryId;
     }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(OdbcQueryCloseRequest.class, this);
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/119f2c93/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcQueryExecuteRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcQueryExecuteRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcQueryExecuteRequest.java
index 5cb80c3..1bcd41f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcQueryExecuteRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcQueryExecuteRequest.java
@@ -17,8 +17,12 @@
 
 package org.apache.ignite.internal.processors.odbc;
 
+import org.apache.ignite.internal.util.tostring.GridToStringExclude;
+import org.apache.ignite.internal.util.typedef.internal.S;
 import org.jetbrains.annotations.Nullable;
 
+import java.util.Arrays;
+
 /**
  * ODBC query execute request.
  */
@@ -30,6 +34,7 @@ public class OdbcQueryExecuteRequest extends OdbcRequest {
     private final String sqlQry;
 
     /** Sql query arguments. */
+    @GridToStringExclude
     private final Object[] args;
 
     /**
@@ -65,4 +70,9 @@ public class OdbcQueryExecuteRequest extends OdbcRequest {
     @Nullable public String cacheName() {
         return cacheName;
     }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(OdbcQueryExecuteRequest.class, this, "args", Arrays.toString(args));
+    }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/119f2c93/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcQueryFetchRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcQueryFetchRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcQueryFetchRequest.java
index 4cfb1cf..58bc43a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcQueryFetchRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcQueryFetchRequest.java
@@ -17,6 +17,8 @@
 
 package org.apache.ignite.internal.processors.odbc;
 
+import org.apache.ignite.internal.util.typedef.internal.S;
+
 /**
  * ODBC query fetch request.
  */
@@ -51,4 +53,9 @@ public class OdbcQueryFetchRequest extends OdbcRequest {
     public long queryId() {
         return queryId;
     }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(OdbcQueryFetchRequest.class, this);
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/119f2c93/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcQueryGetColumnsMetaRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcQueryGetColumnsMetaRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcQueryGetColumnsMetaRequest.java
index 35ce418..875be89 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcQueryGetColumnsMetaRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcQueryGetColumnsMetaRequest.java
@@ -17,6 +17,7 @@
 
 package org.apache.ignite.internal.processors.odbc;
 
+import org.apache.ignite.internal.util.typedef.internal.S;
 import org.jetbrains.annotations.Nullable;
 
 /**
@@ -65,4 +66,9 @@ public class OdbcQueryGetColumnsMetaRequest extends OdbcRequest {
     public String columnName() {
         return columnName;
     }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(OdbcQueryGetColumnsMetaRequest.class, this);
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/119f2c93/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcQueryGetTablesMetaRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcQueryGetTablesMetaRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcQueryGetTablesMetaRequest.java
index b2b3d44..a56aad2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcQueryGetTablesMetaRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcQueryGetTablesMetaRequest.java
@@ -17,6 +17,8 @@
 
 package org.apache.ignite.internal.processors.odbc;
 
+import org.apache.ignite.internal.util.typedef.internal.S;
+
 /**
  * ODBC query get tables meta request.
  */
@@ -75,4 +77,9 @@ public class OdbcQueryGetTablesMetaRequest extends OdbcRequest {
     public String tableType() {
         return tableType;
     }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(OdbcQueryGetTablesMetaRequest.class, this);
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/119f2c93/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcUtils.java
index 7bb4758..300b079 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcUtils.java
@@ -35,6 +35,19 @@ public class OdbcUtils {
     }
 
     /**
+     * Remove quotation marks at the beginning and end of the string if present.
+     *
+     * @param str Input string.
+     * @return String without leading and trailing quotation marks.
+     */
+    public static String removeQuotationMarksIfNeeded(String str) {
+        if (str.startsWith("\"") && str.endsWith("\""))
+            return str.substring(1, str.length() - 1);
+
+        return str;
+    }
+
+    /**
      * Private constructor.
      */
     private OdbcUtils() {