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() {