Review.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/d3763304 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/d3763304 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/d3763304 Branch: refs/heads/ignite-1786 Commit: d3763304c25991c1a54c26b4cec7c6fa8e851f35 Parents: 5bf700d Author: vozerov-gridgain <[email protected]> Authored: Wed Feb 17 13:45:12 2016 +0300 Committer: vozerov-gridgain <[email protected]> Committed: Wed Feb 17 13:45:12 2016 +0300 ---------------------------------------------------------------------- .../processors/odbc/OdbcBufferedParser.java | 21 +++------------ .../processors/odbc/OdbcNioListener.java | 28 +++++++++++--------- .../processors/odbc/OdbcNioServerBuffer.java | 19 ++----------- .../internal/processors/odbc/OdbcProcessor.java | 3 +-- 4 files changed, 21 insertions(+), 50 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/d3763304/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcBufferedParser.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcBufferedParser.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcBufferedParser.java index 4ce8a8a..0d43aec 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcBufferedParser.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcBufferedParser.java @@ -41,21 +41,6 @@ public class OdbcBufferedParser implements GridNioParser { /** Buffer metadata key. */ private static final int BUF_META_KEY = GridNioSessionMetaKey.nextUniqueKey(); - /** Direct buffer alocation flag. */ - private final boolean directBuf; - - /** Message size byte order. */ - private final ByteOrder order; - - /** - * @param directBuf Direct buffer. - * @param order Message size byte order. - */ - public OdbcBufferedParser(boolean directBuf, ByteOrder order) { - this.directBuf = directBuf; - this.order = order; - } - /** {@inheritDoc} */ @Override public byte[] decode(GridNioSession ses, ByteBuffer buf) throws IOException, IgniteCheckedException { OdbcNioServerBuffer nioBuf = ses.meta(BUF_META_KEY); @@ -63,7 +48,7 @@ public class OdbcBufferedParser implements GridNioParser { // Decode for a given session is called per one thread, so there should not be any concurrency issues. // However, we make some additional checks. if (nioBuf == null) { - nioBuf = new OdbcNioServerBuffer(order); + nioBuf = new OdbcNioServerBuffer(); OdbcNioServerBuffer old = ses.addMeta(BUF_META_KEY, nioBuf); @@ -77,9 +62,9 @@ public class OdbcBufferedParser implements GridNioParser { @Override public ByteBuffer encode(GridNioSession ses, Object msg) throws IOException, IgniteCheckedException { byte[] msg0 = (byte[])msg; - ByteBuffer res = directBuf ? ByteBuffer.allocateDirect(msg0.length + 4) : ByteBuffer.allocate(msg0.length + 4); + ByteBuffer res = ByteBuffer.allocate(msg0.length + 4); - res.order(order); + res.order(ByteOrder.LITTLE_ENDIAN); res.putInt(msg0.length); res.put(msg0); http://git-wip-us.apache.org/repos/asf/ignite/blob/d3763304/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 52df3b1..8e133c1 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 @@ -19,8 +19,8 @@ package org.apache.ignite.internal.processors.odbc; import org.apache.ignite.IgniteLogger; import org.apache.ignite.internal.GridKernalContext; -import org.apache.ignite.internal.binary.BinaryRawWriterEx; import org.apache.ignite.internal.binary.BinaryReaderExImpl; +import org.apache.ignite.internal.binary.BinaryWriterExImpl; import org.apache.ignite.internal.binary.GridBinaryMarshaller; import org.apache.ignite.internal.binary.streams.BinaryHeapInputStream; import org.apache.ignite.internal.binary.streams.BinaryHeapOutputStream; @@ -63,8 +63,7 @@ public class OdbcNioListener extends GridNioServerListenerAdapter<byte[]> { * @param busyLock Shutdown busy lock. * @param handler Request handler. */ - public OdbcNioListener(final GridKernalContext ctx, final GridSpinBusyLock busyLock, - final OdbcRequestHandler handler) { + public OdbcNioListener(GridKernalContext ctx, GridSpinBusyLock busyLock, OdbcRequestHandler handler) { this.busyLock = busyLock; this.handler = handler; @@ -107,17 +106,20 @@ public class OdbcNioListener extends GridNioServerListenerAdapter<byte[]> { log.debug("ODBC request received [id=" + reqId + ", addr=" + ses.remoteAddress() + ", req=" + req + ']'); } - OdbcResponse rsp = handle(req); + OdbcResponse resp = handle(req); if (log.isDebugEnabled()) { long dur = (System.nanoTime() - startTime) / 1000; - log.debug("ODBC request processed [id=" + reqId + ", dur(mcs)=" + dur + ", rsp=" + rsp.status() + ']'); + log.debug("ODBC request processed [id=" + reqId + ", dur(mcs)=" + dur + + ", resp=" + resp.status() + ']'); } - byte[] outMsg = encode(rsp); + + byte[] outMsg = encode(resp); ses.send(outMsg); - } catch (Exception e) { + } + catch (Exception e) { trySendErrorMessage(ses, e.getMessage()); } } @@ -134,6 +136,8 @@ public class OdbcNioListener extends GridNioServerListenerAdapter<byte[]> { ses.send(encode(new OdbcResponse(OdbcResponse.STATUS_FAILED, err))); } catch (Exception e) { + // TODO: ??? + log.error("Can not send error response message: [err=" + e.getMessage() + ']'); } } @@ -254,7 +258,7 @@ public class OdbcNioListener extends GridNioServerListenerAdapter<byte[]> { assert msg != null; // Creating new binary writer - BinaryRawWriterEx writer = marsh.writer(new BinaryHeapOutputStream(INIT_CAP)); + BinaryWriterExImpl writer = marsh.writer(new BinaryHeapOutputStream(INIT_CAP)); // Writing status writer.writeByte((byte) msg.status()); @@ -262,7 +266,7 @@ public class OdbcNioListener extends GridNioServerListenerAdapter<byte[]> { if (msg.status() != OdbcResponse.STATUS_SUCCESS) { writer.writeString(msg.error()); - return Arrays.copyOf(writer.out().array(), writer.out().position()); + return writer.array(); } Object res0 = msg.response(); @@ -319,7 +323,6 @@ public class OdbcNioListener extends GridNioServerListenerAdapter<byte[]> { log.debug("Resulting query ID: " + res.getQueryId()); writer.writeLong(res.getQueryId()); - } else if (res0 instanceof OdbcQueryGetColumnsMetaResult) { OdbcQueryGetColumnsMetaResult res = (OdbcQueryGetColumnsMetaResult) res0; @@ -332,7 +335,6 @@ public class OdbcNioListener extends GridNioServerListenerAdapter<byte[]> { for (OdbcColumnMeta columnMeta : columnsMeta) columnMeta.writeBinary(writer, marsh.context()); - } else if (res0 instanceof OdbcQueryGetTablesMetaResult) { OdbcQueryGetTablesMetaResult res = (OdbcQueryGetTablesMetaResult) res0; @@ -347,9 +349,9 @@ public class OdbcNioListener extends GridNioServerListenerAdapter<byte[]> { tableMeta.writeBinary(writer); } else - throw new IOException("Failed to serialize response packet (unknown response type)"); + assert false : "Should nor reach here."; - return Arrays.copyOf(writer.out().array(), writer.out().position()); + return writer.array(); } /** http://git-wip-us.apache.org/repos/asf/ignite/blob/d3763304/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcNioServerBuffer.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcNioServerBuffer.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcNioServerBuffer.java index 20cf4c5..d1e6dd9 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcNioServerBuffer.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcNioServerBuffer.java @@ -21,7 +21,6 @@ import org.apache.ignite.IgniteCheckedException; import org.jetbrains.annotations.Nullable; import java.nio.ByteBuffer; -import java.nio.ByteOrder; /** * NIO server buffer. @@ -36,16 +35,6 @@ public class OdbcNioServerBuffer { /** Current message size. */ private int msgSize; - /** Message size byte order. */ - private final ByteOrder order; - - /** - * @param order Byte order. - */ - public OdbcNioServerBuffer(ByteOrder order) { - this.order = order; - } - /** * Reset buffer state. */ @@ -80,12 +69,8 @@ public class OdbcNioServerBuffer { */ @Nullable public byte[] read(ByteBuffer buf) throws IgniteCheckedException { if (cnt < 0) { - for (; cnt < 0 && buf.hasRemaining(); cnt++) { - if (order == ByteOrder.BIG_ENDIAN) - msgSize = (msgSize << 8) | buf.get() & 0xFF; - else - msgSize |= (buf.get() & 0xFF) << (8*(4 + cnt)); - } + for (; cnt < 0 && buf.hasRemaining(); cnt++) + msgSize |= (buf.get() & 0xFF) << (8*(4 + cnt)); if (cnt < 0) return null; http://git-wip-us.apache.org/repos/asf/ignite/blob/d3763304/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcProcessor.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcProcessor.java index 831ef02..9d22e4a 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/OdbcProcessor.java @@ -23,7 +23,6 @@ import org.apache.ignite.internal.GridKernalContext; import org.apache.ignite.internal.binary.BinaryMarshaller; import org.apache.ignite.internal.processors.GridProcessorAdapter; import org.apache.ignite.internal.util.GridSpinBusyLock; -import org.apache.ignite.internal.util.nio.GridBufferedParser; import org.apache.ignite.internal.util.nio.GridNioCodecFilter; import org.apache.ignite.internal.util.nio.GridNioServer; import org.apache.ignite.internal.util.typedef.internal.U; @@ -84,7 +83,7 @@ public class OdbcProcessor extends GridProcessorAdapter { .socketSendBufferSize(odbcCfg.getSendBufferSize()) .socketReceiveBufferSize(odbcCfg.getReceiveBufferSize()) .sendQueueLimit(odbcCfg.getSendQueueLimit()) - .filters(new GridNioCodecFilter(new OdbcBufferedParser(false, ByteOrder.LITTLE_ENDIAN), log, false)) + .filters(new GridNioCodecFilter(new OdbcBufferedParser(), log, false)) .directMode(false) .idleTimeout(odbcCfg.getIdleTimeout()) .build();
