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 2015/10/27 15:32:06 UTC
[01/11] ignite git commit: IGNITE-1770: Write raw-only flag.
Repository: ignite
Updated Branches:
refs/heads/ignite-1770 b5abaee06 -> 67e62fc7b
IGNITE-1770: Write raw-only flag.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/39cc376d
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/39cc376d
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/39cc376d
Branch: refs/heads/ignite-1770
Commit: 39cc376dea799dbbcebe44e92454b905c9793836
Parents: b5abaee
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Oct 27 15:29:52 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Oct 27 15:29:52 2015 +0300
----------------------------------------------------------------------
.../portable/PortableClassDescriptor.java | 6 +++---
.../internal/portable/PortableReaderExImpl.java | 2 +-
.../ignite/internal/portable/PortableUtils.java | 21 +++++++++++---------
.../internal/portable/PortableWriterExImpl.java | 19 +++++++++++++-----
.../portable/builder/PortableBuilderImpl.java | 3 ++-
.../streams/PortableAbstractOutputStream.java | 15 ++++++++++++++
.../streams/PortableHeapOutputStream.java | 8 ++++++++
.../streams/PortableOffheapOutputStream.java | 8 ++++++++
.../portable/streams/PortableOutputStream.java | 8 ++++++++
.../PlatformBigEndianOutputStreamImpl.java | 5 +++++
.../memory/PlatformOutputStreamImpl.java | 7 +++++++
11 files changed, 83 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/39cc376d/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableClassDescriptor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableClassDescriptor.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableClassDescriptor.java
index 05e5fba..25ec856 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableClassDescriptor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableClassDescriptor.java
@@ -515,7 +515,7 @@ public class PortableClassDescriptor {
else
((PortableMarshalAware)obj).writePortable(writer);
- writer.postWrite();
+ writer.postWrite(userType);
if (obj.getClass() != PortableMetaDataImpl.class
&& ctx.isMetaDataChanged(typeId, writer.metaDataHashSum())) {
@@ -543,7 +543,7 @@ public class PortableClassDescriptor {
throw new PortableException("Failed to write Externalizable object: " + obj, e);
}
- writer.postWrite();
+ writer.postWrite(userType);
}
break;
@@ -553,7 +553,7 @@ public class PortableClassDescriptor {
for (FieldInfo info : fields)
info.write(obj, writer);
- writer.postWrite();
+ writer.postWrite(userType);
}
break;
http://git-wip-us.apache.org/repos/asf/ignite/blob/39cc376d/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java
index 0037dcc..203c991 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java
@@ -1714,7 +1714,7 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
PortableUtils.checkProtocolVersion(in.readByte());
- boolean userType = PortableUtils.isUserType(PortableUtils.readFlags(this));
+ boolean userType = PortableUtils.isUserType(this.readShort());
// Skip typeId and hash code.
in.position(in.position() + 8);
http://git-wip-us.apache.org/repos/asf/ignite/blob/39cc376d/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableUtils.java
index 5dc7d22..56b81af 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableUtils.java
@@ -95,7 +95,10 @@ public class PortableUtils {
private static final Collection<Class<?>> PORTABLE_CLS = new HashSet<>();
/** Flag: user type. */
- private static final short FLAG_USR_TYP = 0x1;
+ public static final short FLAG_USR_TYP = 0x1;
+
+ /** Flag: only raw data exists. */
+ public static final short FLAG_RAW_ONLY = 0x2;
/**
* Write flags.
@@ -113,23 +116,23 @@ public class PortableUtils {
}
/**
- * Read flags.
+ * Check if user type flag is set.
*
- * @param reader Reader.
- * @return Flags.
+ * @param flags Flags.
+ * @return {@code True} if set.
*/
- public static short readFlags(PortableReaderExImpl reader) {
- return reader.readShort();
+ public static boolean isUserType(short flags) {
+ return (flags & FLAG_USR_TYP) == FLAG_USR_TYP;
}
/**
- * Check if user type flag is set.
+ * Check if raw-only flag is set.
*
* @param flags Flags.
* @return {@code True} if set.
*/
- public static boolean isUserType(short flags) {
- return (flags & FLAG_USR_TYP) == FLAG_USR_TYP;
+ public static boolean isRawOnly(short flags) {
+ return (flags & FLAG_RAW_ONLY) == FLAG_RAW_ONLY;
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/39cc376d/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableWriterExImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableWriterExImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableWriterExImpl.java
index d3be134..f2af9d4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableWriterExImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableWriterExImpl.java
@@ -57,6 +57,7 @@ import static org.apache.ignite.internal.portable.GridPortableMarshaller.DOUBLE;
import static org.apache.ignite.internal.portable.GridPortableMarshaller.DOUBLE_ARR;
import static org.apache.ignite.internal.portable.GridPortableMarshaller.ENUM;
import static org.apache.ignite.internal.portable.GridPortableMarshaller.ENUM_ARR;
+import static org.apache.ignite.internal.portable.GridPortableMarshaller.FLAGS_POS;
import static org.apache.ignite.internal.portable.GridPortableMarshaller.FLOAT;
import static org.apache.ignite.internal.portable.GridPortableMarshaller.FLOAT_ARR;
import static org.apache.ignite.internal.portable.GridPortableMarshaller.INT;
@@ -315,8 +316,10 @@ public class PortableWriterExImpl implements PortableWriter, PortableRawWriterEx
* - writing schema ID;
* - writing schema offset;
* - writing schema to the tail.
+ *
+ * @param userType User type flag.
*/
- public void postWrite() {
+ public void postWrite(boolean userType) {
if (schema != null) {
// Write schema ID.
out.writeInt(start + SCHEMA_ID_POS, schemaId);
@@ -332,9 +335,15 @@ public class PortableWriterExImpl implements PortableWriter, PortableRawWriterEx
if (rawOffPos != 0)
out.writeInt(rawOffPos - start);
}
- else
+ else {
+ // Write raw-only flag is needed.
+ int flags = (userType ? PortableUtils.FLAG_USR_TYP : 0) | PortableUtils.FLAG_RAW_ONLY;
+
+ out.writeShort(start + FLAGS_POS, (short)flags);
+
// If there are no schema, we are free to write raw offset to schema offset.
out.writeInt(start + SCHEMA_OR_RAW_OFF_POS, (rawOffPos == 0 ? out.position() : rawOffPos) - start);
+ }
// 5. Write length.
out.writeInt(start + TOTAL_LEN_POS, out.position() - start);
@@ -1636,17 +1645,17 @@ public class PortableWriterExImpl implements PortableWriter, PortableRawWriterEx
/** {@inheritDoc} */
@Override public void writeShort(int v) throws IOException {
- doWriteShort((short)v);
+ doWriteShort((short) v);
}
/** {@inheritDoc} */
@Override public void writeChar(int v) throws IOException {
- doWriteChar((char)v);
+ doWriteChar((char) v);
}
/** {@inheritDoc} */
@Override public void write(int b) throws IOException {
- doWriteByte((byte)b);
+ doWriteByte((byte) b);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/39cc376d/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java
index 1e12827..90104e3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java
@@ -17,6 +17,7 @@
package org.apache.ignite.internal.portable.builder;
+import org.apache.ignite.internal.portable.PortableClassDescriptor;
import org.apache.ignite.internal.portable.PortableContext;
import org.apache.ignite.internal.portable.PortableObjectImpl;
import org.apache.ignite.internal.portable.PortableObjectOffheapImpl;
@@ -375,7 +376,7 @@ public class PortableBuilderImpl implements PortableBuilder {
reader.position(start + PortableUtils.length(reader, start));
}
- writer.postWrite();
+ writer.postWrite(true);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/39cc376d/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableAbstractOutputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableAbstractOutputStream.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableAbstractOutputStream.java
index 78f46ca..c943682 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableAbstractOutputStream.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableAbstractOutputStream.java
@@ -120,6 +120,13 @@ public abstract class PortableAbstractOutputStream extends PortableAbstractStrea
}
/** {@inheritDoc} */
+ @Override public void writeShort(int pos, short val) {
+ ensureCapacity(pos + 2);
+
+ writeShortPositioned(pos, val);
+ }
+
+ /** {@inheritDoc} */
@Override public void writeInt(int pos, int val) {
ensureCapacity(pos + 4);
@@ -307,6 +314,14 @@ public abstract class PortableAbstractOutputStream extends PortableAbstractStrea
protected abstract void writeLongFast(long val);
/**
+ * Write short value to the given position.
+ *
+ * @param pos Position.
+ * @param val Value.
+ */
+ protected abstract void writeShortPositioned(int pos, short val);
+
+ /**
* Write int value to the given position.
*
* @param pos Position.
http://git-wip-us.apache.org/repos/asf/ignite/blob/39cc376d/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableHeapOutputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableHeapOutputStream.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableHeapOutputStream.java
index 2abb69c..208ad33 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableHeapOutputStream.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableHeapOutputStream.java
@@ -147,6 +147,14 @@ public final class PortableHeapOutputStream extends PortableAbstractOutputStream
}
/** {@inheritDoc} */
+ @Override protected void writeShortPositioned(int pos, short val) {
+ if (!LITTLE_ENDIAN)
+ val = Short.reverseBytes(val);
+
+ UNSAFE.putShort(data, BYTE_ARR_OFF + pos, val);
+ }
+
+ /** {@inheritDoc} */
@Override protected void writeIntPositioned(int pos, int val) {
if (!LITTLE_ENDIAN)
val = Integer.reverseBytes(val);
http://git-wip-us.apache.org/repos/asf/ignite/blob/39cc376d/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableOffheapOutputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableOffheapOutputStream.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableOffheapOutputStream.java
index 0deef90..430a176 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableOffheapOutputStream.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableOffheapOutputStream.java
@@ -125,6 +125,14 @@ public class PortableOffheapOutputStream extends PortableAbstractOutputStream {
}
/** {@inheritDoc} */
+ @Override protected void writeShortPositioned(int pos, short val) {
+ if (!LITTLE_ENDIAN)
+ val = Short.reverseBytes(val);
+
+ UNSAFE.putShort(ptr + pos, val);
+ }
+
+ /** {@inheritDoc} */
@Override protected void writeIntPositioned(int pos, int val) {
if (!LITTLE_ENDIAN)
val = Integer.reverseBytes(val);
http://git-wip-us.apache.org/repos/asf/ignite/blob/39cc376d/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableOutputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableOutputStream.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableOutputStream.java
index 745f9ee..0e25b12 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableOutputStream.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableOutputStream.java
@@ -85,6 +85,14 @@ public interface PortableOutputStream extends PortableStream, AutoCloseable {
public void writeInt(int val);
/**
+ * Write short value at the given position.
+ *
+ * @param pos Position.
+ * @param val Value.
+ */
+ public void writeShort(int pos, short val);
+
+ /**
* Write int value to the given position.
*
* @param pos Position.
http://git-wip-us.apache.org/repos/asf/ignite/blob/39cc376d/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformBigEndianOutputStreamImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformBigEndianOutputStreamImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformBigEndianOutputStreamImpl.java
index 0f6ccbc..e5fd71b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformBigEndianOutputStreamImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformBigEndianOutputStreamImpl.java
@@ -99,6 +99,11 @@ public class PlatformBigEndianOutputStreamImpl extends PlatformOutputStreamImpl
}
/** {@inheritDoc} */
+ @Override public void writeShort(int pos, short val) {
+ super.writeShort(pos, Short.reverseBytes(val));
+ }
+
+ /** {@inheritDoc} */
@Override public void writeInt(int pos, int val) {
super.writeInt(pos, Integer.reverseBytes(val));
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/39cc376d/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformOutputStreamImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformOutputStreamImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformOutputStreamImpl.java
index 13c3dd3..16b1567 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformOutputStreamImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformOutputStreamImpl.java
@@ -120,6 +120,13 @@ public class PlatformOutputStreamImpl implements PlatformOutputStream {
}
/** {@inheritDoc} */
+ @Override public void writeShort(int pos, short val) {
+ ensureCapacity(pos + 2);
+
+ UNSAFE.putShort(data + pos, val);
+ }
+
+ /** {@inheritDoc} */
@Override public void writeInt(int pos, int val) {
ensureCapacity(pos + 4);
[07/11] ignite git commit: IGNITE-1770: Cache ID mapper.
Posted by vo...@apache.org.
IGNITE-1770: Cache ID mapper.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/d48d7762
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/d48d7762
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/d48d7762
Branch: refs/heads/ignite-1770
Commit: d48d77629678f4989b266fb00ded178e4c5b75e8
Parents: 6d9dea3
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Oct 27 16:35:23 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Oct 27 16:35:23 2015 +0300
----------------------------------------------------------------------
.../ignite/internal/portable/PortableWriterExImpl.java | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/d48d7762/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableWriterExImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableWriterExImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableWriterExImpl.java
index a629010..382b2f9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableWriterExImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableWriterExImpl.java
@@ -22,6 +22,7 @@ import org.apache.ignite.internal.portable.streams.PortableHeapOutputStream;
import org.apache.ignite.internal.portable.streams.PortableOutputStream;
import org.apache.ignite.internal.util.typedef.internal.A;
import org.apache.ignite.portable.PortableException;
+import org.apache.ignite.portable.PortableIdMapper;
import org.apache.ignite.portable.PortableRawWriter;
import org.apache.ignite.portable.PortableWriter;
import org.jetbrains.annotations.Nullable;
@@ -128,6 +129,9 @@ public class PortableWriterExImpl implements PortableWriter, PortableRawWriterEx
/** Amount of written fields. */
private int fieldCnt;
+ /** ID mapper. */
+ private PortableIdMapper idMapper;
+
/**
* @param ctx Context.
*/
@@ -1639,7 +1643,7 @@ public class PortableWriterExImpl implements PortableWriter, PortableRawWriterEx
/** {@inheritDoc} */
@Override public void writeByte(int v) throws IOException {
- doWriteByte((byte)v);
+ doWriteByte((byte) v);
}
/** {@inheritDoc} */
@@ -1683,7 +1687,10 @@ public class PortableWriterExImpl implements PortableWriter, PortableRawWriterEx
throw new PortableException("Individual field can't be written after raw writer is acquired " +
"via rawWriter() method. Consider fixing serialization logic for class: " + cls.getName());
- int id = ctx.fieldId(typeId, fieldName);
+ if (idMapper == null)
+ idMapper = ctx.idMapper(typeId);
+
+ int id = idMapper.fieldId(typeId, fieldName);
writeFieldId(id);
[02/11] ignite git commit: IGNITE-1770: Read raw-only flag.
Posted by vo...@apache.org.
IGNITE-1770: Read raw-only flag.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/ea23354e
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/ea23354e
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/ea23354e
Branch: refs/heads/ignite-1770
Commit: ea23354ea602f3ed935522f0c5986b44654ae923
Parents: 39cc376
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Oct 27 15:36:52 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Oct 27 15:36:52 2015 +0300
----------------------------------------------------------------------
.../portable/PortablePositionReadable.java | 8 ++++++++
.../ignite/internal/portable/PortableUtils.java | 5 +++--
.../portable/builder/PortableBuilderReader.java | 12 +++++++-----
.../streams/PortableAbstractInputStream.java | 18 ++++++++++++++++++
.../portable/streams/PortableHeapInputStream.java | 10 ++++++++++
.../streams/PortableOffheapInputStream.java | 10 ++++++++++
.../memory/PlatformBigEndianInputStreamImpl.java | 5 +++++
.../platform/memory/PlatformInputStreamImpl.java | 10 ++++++++++
8 files changed, 71 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/ea23354e/modules/core/src/main/java/org/apache/ignite/internal/portable/PortablePositionReadable.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortablePositionReadable.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortablePositionReadable.java
index 8536f70..7e8d9d3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortablePositionReadable.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortablePositionReadable.java
@@ -22,6 +22,14 @@ package org.apache.ignite.internal.portable;
*/
public interface PortablePositionReadable {
/**
+ * Read short at the given position.
+ *
+ * @param pos Position.
+ * @return Value.
+ */
+ public short readShortPositioned(int pos);
+
+ /**
* Read integer at the given position.
*
* @param pos Position.
http://git-wip-us.apache.org/repos/asf/ignite/blob/ea23354e/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableUtils.java
index 56b81af..823b0e1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableUtils.java
@@ -626,9 +626,10 @@ public class PortableUtils {
*/
public static int rawOffsetAbsolute(PortablePositionReadable in, int start) {
int len = length(in, start);
- int schemaId = in.readIntPositioned(start + GridPortableMarshaller.SCHEMA_ID_POS);
- if (schemaId == 0)
+ short flags = in.readShortPositioned(start + GridPortableMarshaller.FLAGS_POS);
+
+ if (PortableUtils.isRawOnly(flags))
// No schema, raw offset is located on schema offset position.
return in.readIntPositioned(start + GridPortableMarshaller.SCHEMA_OR_RAW_OFF_POS);
else {
http://git-wip-us.apache.org/repos/asf/ignite/blob/ea23354e/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderReader.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderReader.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderReader.java
index ab3c2a6..b999cde 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderReader.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderReader.java
@@ -131,11 +131,13 @@ public class PortableBuilderReader implements PortablePositionReadable {
return PRIM.readByte(arr, pos);
}
- /**
- * @param pos Position in the source array.
- * @return Read int value.
- */
- public int readIntPositioned(int pos) {
+ /** {@inheritDoc} */
+ @Override public short readShortPositioned(int pos) {
+ return PRIM.readShort(arr, pos);
+ }
+
+ /** {@inheritDoc} */
+ @Override public int readIntPositioned(int pos) {
return PRIM.readInt(arr, pos);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ea23354e/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableAbstractInputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableAbstractInputStream.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableAbstractInputStream.java
index 00d5658..7dbee92 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableAbstractInputStream.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableAbstractInputStream.java
@@ -158,6 +158,16 @@ public abstract class PortableAbstractInputStream extends PortableAbstractStream
}
/** {@inheritDoc} */
+ @Override public short readShortPositioned(int pos) {
+ int delta = pos + 2 - this.pos;
+
+ if (delta > 0)
+ ensureEnoughData(delta);
+
+ return readShortPositioned0(pos);
+ }
+
+ /** {@inheritDoc} */
@Override public int readIntPositioned(int pos) {
int delta = pos + 4 - this.pos;
@@ -334,6 +344,14 @@ public abstract class PortableAbstractInputStream extends PortableAbstractStream
protected abstract long readLongFast();
/**
+ * Internal routine for positioned short value read.
+ *
+ * @param pos Position.
+ * @return Int value.
+ */
+ protected abstract short readShortPositioned0(int pos);
+
+ /**
* Internal routine for positioned int value read.
*
* @param pos Position.
http://git-wip-us.apache.org/repos/asf/ignite/blob/ea23354e/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableHeapInputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableHeapInputStream.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableHeapInputStream.java
index d5618b3..adfeaad 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableHeapInputStream.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableHeapInputStream.java
@@ -123,6 +123,16 @@ public final class PortableHeapInputStream extends PortableAbstractInputStream {
}
/** {@inheritDoc} */
+ @Override protected short readShortPositioned0(int pos) {
+ short res = UNSAFE.getShort(data, BYTE_ARR_OFF + pos);
+
+ if (!LITTLE_ENDIAN)
+ res = Short.reverseBytes(res);
+
+ return res;
+ }
+
+ /** {@inheritDoc} */
@Override protected int readIntPositioned0(int pos) {
int res = UNSAFE.getInt(data, BYTE_ARR_OFF + pos);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ea23354e/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableOffheapInputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableOffheapInputStream.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableOffheapInputStream.java
index 187ded5..75bffb9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableOffheapInputStream.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/streams/PortableOffheapInputStream.java
@@ -113,6 +113,16 @@ public class PortableOffheapInputStream extends PortableAbstractInputStream {
}
/** {@inheritDoc} */
+ @Override protected short readShortPositioned0(int pos) {
+ short res = UNSAFE.getShort(ptr + pos);
+
+ if (!LITTLE_ENDIAN)
+ res = Short.reverseBytes(res);
+
+ return res;
+ }
+
+ /** {@inheritDoc} */
@Override protected int readIntPositioned0(int pos) {
int res = UNSAFE.getInt(ptr + pos);
http://git-wip-us.apache.org/repos/asf/ignite/blob/ea23354e/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformBigEndianInputStreamImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformBigEndianInputStreamImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformBigEndianInputStreamImpl.java
index b25471d..a4d711e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformBigEndianInputStreamImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformBigEndianInputStreamImpl.java
@@ -65,6 +65,11 @@ public class PlatformBigEndianInputStreamImpl extends PlatformInputStreamImpl {
}
/** {@inheritDoc} */
+ @Override public short readShortPositioned(int pos) {
+ return Short.reverseBytes(super.readShortPositioned(pos));
+ }
+
+ /** {@inheritDoc} */
@Override public int readIntPositioned(int pos) {
return Integer.reverseBytes(super.readIntPositioned(pos));
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ea23354e/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformInputStreamImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformInputStreamImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformInputStreamImpl.java
index 68af0e7..68b4141 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformInputStreamImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/memory/PlatformInputStreamImpl.java
@@ -146,6 +146,16 @@ public class PlatformInputStreamImpl implements PlatformInputStream {
}
/** {@inheritDoc} */
+ @Override public short readShortPositioned(int pos) {
+ int delta = pos + 2 - this.pos;
+
+ if (delta > 0)
+ ensureEnoughData(delta);
+
+ return UNSAFE.getShort(data + pos);
+ }
+
+ /** {@inheritDoc} */
@Override public int readIntPositioned(int pos) {
int delta = pos + 4 - this.pos;
[03/11] ignite git commit: IGNITE-1770: Schema ID for reflective
classes.
Posted by vo...@apache.org.
IGNITE-1770: Schema ID for reflective classes.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/0e491349
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/0e491349
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/0e491349
Branch: refs/heads/ignite-1770
Commit: 0e491349352159b2041692000fdb0fe88308bbdf
Parents: ea23354
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Oct 27 15:42:16 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Oct 27 15:42:16 2015 +0300
----------------------------------------------------------------------
.../internal/portable/PortableClassDescriptor.java | 16 +++++++++++++---
.../internal/portable/PortableWriterExImpl.java | 7 +------
.../portable/builder/PortableBuilderImpl.java | 2 +-
3 files changed, 15 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/0e491349/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableClassDescriptor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableClassDescriptor.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableClassDescriptor.java
index 25ec856..9fe04f4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableClassDescriptor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableClassDescriptor.java
@@ -81,6 +81,9 @@ public class PortableClassDescriptor {
/** */
private final Collection<FieldInfo> fields;
+ /** Schema ID for constant-time lookup. */
+ private final int schemaId;
+
/** */
private final Method writeReplaceMtd;
@@ -141,6 +144,8 @@ public class PortableClassDescriptor {
this.keepDeserialized = keepDeserialized;
this.registered = registered;
+ int schemaId = 0;
+
excluded = MarshallerExclusions.isExcluded(cls);
useOptMarshaller = !predefined && initUseOptimizedMarshallerFlag();
@@ -233,6 +238,9 @@ public class PortableClassDescriptor {
if (metaDataEnabled)
fieldsMeta.put(name, fieldInfo.fieldMode().typeName());
+
+ // Track schema ID.
+ schemaId = 31 * schemaId + fieldId;
}
}
}
@@ -252,6 +260,8 @@ public class PortableClassDescriptor {
readResolveMtd = null;
writeReplaceMtd = null;
}
+
+ this.schemaId = schemaId;
}
/**
@@ -515,7 +525,7 @@ public class PortableClassDescriptor {
else
((PortableMarshalAware)obj).writePortable(writer);
- writer.postWrite(userType);
+ writer.postWrite(schemaId, userType);
if (obj.getClass() != PortableMetaDataImpl.class
&& ctx.isMetaDataChanged(typeId, writer.metaDataHashSum())) {
@@ -543,7 +553,7 @@ public class PortableClassDescriptor {
throw new PortableException("Failed to write Externalizable object: " + obj, e);
}
- writer.postWrite(userType);
+ writer.postWrite(schemaId, userType);
}
break;
@@ -553,7 +563,7 @@ public class PortableClassDescriptor {
for (FieldInfo info : fields)
info.write(obj, writer);
- writer.postWrite(userType);
+ writer.postWrite(schemaId, userType);
}
break;
http://git-wip-us.apache.org/repos/asf/ignite/blob/0e491349/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableWriterExImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableWriterExImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableWriterExImpl.java
index f2af9d4..6e4c430 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableWriterExImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableWriterExImpl.java
@@ -125,9 +125,6 @@ public class PortableWriterExImpl implements PortableWriter, PortableRawWriterEx
// TODO: Optimize.
private List<Integer> schema;
- /** Schema ID. */
- private int schemaId;
-
/**
* @param ctx Context.
*/
@@ -319,7 +316,7 @@ public class PortableWriterExImpl implements PortableWriter, PortableRawWriterEx
*
* @param userType User type flag.
*/
- public void postWrite(boolean userType) {
+ public void postWrite(int schemaId, boolean userType) {
if (schema != null) {
// Write schema ID.
out.writeInt(start + SCHEMA_ID_POS, schemaId);
@@ -1714,8 +1711,6 @@ public class PortableWriterExImpl implements PortableWriter, PortableRawWriterEx
schema.add(id);
schema.add(off);
-
- schemaId = 31 * schemaId + id;
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/0e491349/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java
index 90104e3..fa0ddde 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/builder/PortableBuilderImpl.java
@@ -376,7 +376,7 @@ public class PortableBuilderImpl implements PortableBuilder {
reader.position(start + PortableUtils.length(reader, start));
}
- writer.postWrite(true);
+ writer.postWrite(0, true);
}
/** {@inheritDoc} */
[05/11] ignite git commit: IGNITE-1770: WIP.
Posted by vo...@apache.org.
IGNITE-1770: WIP.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/92c6b290
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/92c6b290
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/92c6b290
Branch: refs/heads/ignite-1770
Commit: 92c6b290f311174a73e5d9b44b835993e84d515a
Parents: 0b0b4d7
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Oct 27 15:56:34 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Oct 27 15:56:34 2015 +0300
----------------------------------------------------------------------
.../internal/portable/PortableReaderExImpl.java | 30 --------------------
1 file changed, 30 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/92c6b290/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java
index 203c991..12ec418 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java
@@ -2527,36 +2527,6 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
// TODO: Opto.
-// int searchPos = in.position();
-//
-// while (searchPos < searchTail) {
-// int id0 = in.readInt(searchPos);
-//
-// if (id0 == id)
-// return searchPos + 8;
-//
-// int len = in.readInt(searchPos + 4);
-//
-// searchPos += (8 + len);
-// }
-//
-// if (in.position() != searchHead) {
-// searchPos = searchHead;
-//
-// while (searchPos < in.position()) {
-// int id0 = in.readInt(searchPos);
-//
-// if (id0 == id)
-// return searchPos + 8;
-//
-// int len = in.readInt(searchPos + 4);
-//
-// searchPos += (8 + len);
-// }
-// }
-//
-// return -1;
-
while (true) {
if (searchHead >= searchTail)
return false;
[11/11] ignite git commit: IGNITE-1770: WIP.
Posted by vo...@apache.org.
IGNITE-1770: WIP.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/67e62fc7
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/67e62fc7
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/67e62fc7
Branch: refs/heads/ignite-1770
Commit: 67e62fc7bf3dc703969ff31e6a9712dad3c04d34
Parents: 920e755
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Oct 27 17:22:53 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Oct 27 17:22:53 2015 +0300
----------------------------------------------------------------------
.../org/apache/ignite/internal/portable/PortableReaderExImpl.java | 2 --
1 file changed, 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/67e62fc7/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java
index 1da288b..861e649 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java
@@ -2529,8 +2529,6 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
int searchHead = footerStart;
int searchTail = footerEnd;
- // TODO: Opto.
-
while (true) {
if (searchHead >= searchTail)
return false;
[09/11] ignite git commit: IGNITE-1770: Optimized
PortableReaderContext.
Posted by vo...@apache.org.
IGNITE-1770: Optimized PortableReaderContext.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/f6fc097c
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/f6fc097c
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/f6fc097c
Branch: refs/heads/ignite-1770
Commit: f6fc097c116b99d711719566538158c1d98b34e8
Parents: 0dfdaca
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Oct 27 17:10:11 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Oct 27 17:10:11 2015 +0300
----------------------------------------------------------------------
.../portable/PortableReaderContext.java | 118 +++++--------------
.../java/org/apache/ignite/MyBenchmark.java | 14 +--
2 files changed, 35 insertions(+), 97 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/f6fc097c/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderContext.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderContext.java
index 0141d70..51fc407 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderContext.java
@@ -25,11 +25,11 @@ import org.apache.ignite.portable.PortableObject;
import org.jetbrains.annotations.Nullable;
/**
- * Reader context.
- */
+* Reader context.
+*/
class PortableReaderContext {
/** */
- private Map<Integer, Object> oHandles;
+ private Object oHandles;
/** */
private Map<Integer, PortableObject> poHandles;
@@ -38,13 +38,24 @@ class PortableReaderContext {
* @param handle Handle.
* @param obj Object.
*/
+ @SuppressWarnings("unchecked")
void setObjectHandler(int handle, Object obj) {
assert obj != null;
if (oHandles == null)
- oHandles = new HashMap<>(3, 1.0f);
+ oHandles = new IgniteBiTuple(handle, obj);
+ else if (oHandles instanceof IgniteBiTuple) {
+ Map map = new HashMap(3, 1.0f);
+
+ IgniteBiTuple t = (IgniteBiTuple)oHandles;
- oHandles.put(handle, obj);
+ map.put(t.getKey(), t.getValue());
+ map.put(handle, obj);
+
+ oHandles = map;
+ }
+ else
+ ((Map)oHandles).put(handle, obj);
}
/**
@@ -65,7 +76,18 @@ class PortableReaderContext {
* @return Object.
*/
@Nullable Object getObjectByHandle(int handle) {
- return oHandles != null ? oHandles.get(handle) : null;
+ if (oHandles != null) {
+ if (oHandles instanceof IgniteBiTuple) {
+ IgniteBiTuple t = (IgniteBiTuple)oHandles;
+
+ if ((int)t.get1() == handle)
+ return t.get2();
+ }
+ else
+ return ((Map)oHandles).get(handle);
+ }
+
+ return null;
}
/**
@@ -81,87 +103,3 @@ class PortableReaderContext {
return S.toString(PortableReaderContext.class, this);
}
}
-
-
-// TODO: Opto
-///**
-//* Reader context.
-//*/
-//class PortableReaderContext {
-// /** */
-// private Object oHandles;
-//
-// /** */
-// private Map<Integer, PortableObject> poHandles;
-//
-// /**
-// * @param handle Handle.
-// * @param obj Object.
-// */
-// @SuppressWarnings("unchecked")
-// void setObjectHandler(int handle, Object obj) {
-// assert obj != null;
-//
-// if (oHandles == null) {
-// oHandles = new IgniteBiTuple(handle, obj);
-// }
-// else if (oHandles instanceof Map) {
-// ((Map)oHandles).put(handle, obj);
-// }
-// else {
-// Map map = new HashMap(3, 1.0f);
-//
-// IgniteBiTuple t = (IgniteBiTuple)oHandles;
-//
-// map.put(t.getKey(), t.getValue());
-// map.put(handle, obj);
-//
-// oHandles = map;
-// }
-// }
-//
-// /**
-// * @param handle Handle.
-// * @param po Portable object.
-// */
-// void setPortableHandler(int handle, PortableObject po) {
-// assert po != null;
-//
-// if (poHandles == null)
-// poHandles = new HashMap<>(3, 1.0f);
-//
-// poHandles.put(handle, po);
-// }
-//
-// /**
-// * @param handle Handle.
-// * @return Object.
-// */
-// @Nullable Object getObjectByHandle(int handle) {
-// if (oHandles != null) {
-// if (oHandles instanceof IgniteBiTuple) {
-// IgniteBiTuple t = (IgniteBiTuple)oHandles;
-//
-// if (t.get1().equals(handle))
-// return t.get2();
-// }
-// else
-// return ((Map)oHandles).get(handle);
-// }
-//
-// return null;
-// }
-//
-// /**
-// * @param handle Handle.
-// * @return Object.
-// */
-// @Nullable PortableObject getPortableByHandle(int handle) {
-// return poHandles != null ? poHandles.get(handle) : null;
-// }
-//
-// /** {@inheritDoc} */
-// @Override public String toString() {
-// return S.toString(PortableReaderContext.class, this);
-// }
-//}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/f6fc097c/modules/microbench/src/main/java/org/apache/ignite/MyBenchmark.java
----------------------------------------------------------------------
diff --git a/modules/microbench/src/main/java/org/apache/ignite/MyBenchmark.java b/modules/microbench/src/main/java/org/apache/ignite/MyBenchmark.java
index 2c5deb1..9eba07a 100644
--- a/modules/microbench/src/main/java/org/apache/ignite/MyBenchmark.java
+++ b/modules/microbench/src/main/java/org/apache/ignite/MyBenchmark.java
@@ -110,16 +110,16 @@ public class MyBenchmark {
System.out.println(data.length);
}
- @Benchmark
- public byte[] testAddressWrite() throws Exception {
- return marsh.marshal(new Address());
- }
-
// @Benchmark
-// public Address testAddressRead() throws Exception {
-// return marsh.unmarshal(marshAddrBytes, null);
+// public byte[] testAddressWrite() throws Exception {
+// return marsh.marshal(new Address());
// }
+ @Benchmark
+ public Address testAddressRead() throws Exception {
+ return marsh.unmarshal(marshAddrBytes, null);
+ }
+
private static final Address addr = new Address();
public static void main(String[] args) throws Exception {
[10/11] ignite git commit: IGNITE-1770: Optimization: cached ID
mapper.
Posted by vo...@apache.org.
IGNITE-1770: Optimization: cached ID mapper.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/920e755d
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/920e755d
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/920e755d
Branch: refs/heads/ignite-1770
Commit: 920e755d0d630267d1b085209685f59a16014022
Parents: f6fc097
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Oct 27 17:12:06 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Oct 27 17:12:06 2015 +0300
----------------------------------------------------------------------
.../ignite/internal/portable/PortableReaderExImpl.java | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/920e755d/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java
index 7dc1b21..1da288b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java
@@ -26,6 +26,7 @@ import org.apache.ignite.internal.util.typedef.internal.SB;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteBiTuple;
import org.apache.ignite.portable.PortableException;
+import org.apache.ignite.portable.PortableIdMapper;
import org.apache.ignite.portable.PortableInvalidClassException;
import org.apache.ignite.portable.PortableObject;
import org.apache.ignite.portable.PortableRawReader;
@@ -152,6 +153,9 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
/** Footer end. */
private int footerEnd;
+ /** ID mapper. */
+ private PortableIdMapper idMapper;
+
/**
* @param ctx Context.
* @param arr Array.
@@ -2509,7 +2513,10 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
assert typeId != UNREGISTERED_TYPE_ID;
- return ctx.fieldId(typeId, name);
+ if (idMapper == null)
+ idMapper = ctx.idMapper(typeId);
+
+ return idMapper.fieldId(typeId, name);
}
/**
[04/11] ignite git commit: IGNITE-1770: Schema ID for reflective
classes.
Posted by vo...@apache.org.
IGNITE-1770: Schema ID for reflective classes.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/0b0b4d79
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/0b0b4d79
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/0b0b4d79
Branch: refs/heads/ignite-1770
Commit: 0b0b4d7973ca83759533de525e8f790f5d82fed5
Parents: 0e49134
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Oct 27 15:54:31 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Oct 27 15:54:31 2015 +0300
----------------------------------------------------------------------
.../java/org/apache/ignite/internal/portable/PortableUtils.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/0b0b4d79/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableUtils.java
index 823b0e1..38b6e6c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableUtils.java
@@ -578,9 +578,9 @@ public class PortableUtils {
* @return Footer start.
*/
public static int footerStartRelative(PortablePositionReadable in, int start) {
- int schemaId = in.readIntPositioned(start + GridPortableMarshaller.SCHEMA_ID_POS);
+ short flags = in.readShortPositioned(start + GridPortableMarshaller.FLAGS_POS);
- if (schemaId == 0)
+ if (PortableUtils.isRawOnly(flags))
// No schema, footer start equals to object end.
return length(in, start);
else
[08/11] ignite git commit: IGNITE-1770: WIP.
Posted by vo...@apache.org.
IGNITE-1770: WIP.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/0dfdaca0
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/0dfdaca0
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/0dfdaca0
Branch: refs/heads/ignite-1770
Commit: 0dfdaca0dc03dace74925235ddaabf99cdf3a642
Parents: d48d776
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Oct 27 16:58:12 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Oct 27 16:58:12 2015 +0300
----------------------------------------------------------------------
.../java/org/apache/ignite/internal/portable/PortableContext.java | 2 --
.../org/apache/ignite/internal/portable/PortableReaderExImpl.java | 3 ---
2 files changed, 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/0dfdaca0/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java
index 009aec6..b0405ac 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableContext.java
@@ -625,8 +625,6 @@ public class PortableContext implements Externalizable {
if (userTypes.containsKey(typeId) || predefinedTypes.containsKey(typeId))
return DFLT_ID_MAPPER;
- // TODO: Opto: comment above.
-
return BASIC_CLS_ID_MAPPER;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/0dfdaca0/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java
index 12ec418..7dc1b21 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableReaderExImpl.java
@@ -1626,9 +1626,6 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
in.position(in.position() + strLen);
- // TODO: Opto.
- //in.position(in.position() + strLen);
-
return res;
}
else
[06/11] ignite git commit: IGNITE-1770: Optimized schema tracking
during write.
Posted by vo...@apache.org.
IGNITE-1770: Optimized schema tracking during write.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/6d9dea39
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/6d9dea39
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/6d9dea39
Branch: refs/heads/ignite-1770
Commit: 6d9dea39b92184cf1206df267808775ca840072e
Parents: 92c6b29
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Oct 27 16:28:37 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Oct 27 16:28:37 2015 +0300
----------------------------------------------------------------------
.../internal/portable/PortableWriterExImpl.java | 110 +++++++++++++++----
.../java/org/apache/ignite/MyBenchmark.java | 10 +-
2 files changed, 94 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/6d9dea39/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableWriterExImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableWriterExImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableWriterExImpl.java
index 6e4c430..a629010 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableWriterExImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/portable/PortableWriterExImpl.java
@@ -32,11 +32,9 @@ import java.lang.reflect.InvocationTargetException;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.sql.Timestamp;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.IdentityHashMap;
-import java.util.List;
import java.util.Map;
import java.util.UUID;
@@ -94,6 +92,9 @@ public class PortableWriterExImpl implements PortableWriter, PortableRawWriterEx
/** */
private static final int INIT_CAP = 1024;
+ /** Thread-local schema. */
+ private static final ThreadLocal<SchemaHolder> SCHEMA = new ThreadLocal<>();
+
/** */
private final PortableContext ctx;
@@ -121,9 +122,11 @@ public class PortableWriterExImpl implements PortableWriter, PortableRawWriterEx
/** Output stream. */
private PortableOutputStream out;
- /** Field infos. */
- // TODO: Optimize.
- private List<Integer> schema;
+ /** Schema. */
+ private SchemaHolder schema;
+
+ /** Amount of written fields. */
+ private int fieldCnt;
/**
* @param ctx Context.
@@ -325,8 +328,7 @@ public class PortableWriterExImpl implements PortableWriter, PortableRawWriterEx
out.writeInt(start + SCHEMA_OR_RAW_OFF_POS, out.position() - start);
// Write the schema.
- for (Integer val : schema)
- out.writeInt(val);
+ schema.writeAndPop(this, fieldCnt);
// Write raw offset if needed.
if (rawOffPos != 0)
@@ -1694,23 +1696,21 @@ public class PortableWriterExImpl implements PortableWriter, PortableRawWriterEx
* @param fieldId Field ID.
*/
public void writeFieldId(int fieldId) {
- int off = out.position() - start;
+ int fieldOff = out.position() - start;
- saveFieldInfo(fieldId, off);
- }
+ if (schema == null) {
+ schema = SCHEMA.get();
- /**
- * Save field info.
- *
- * @param id Field ID.
- * @param off Offset starting from object head.
- */
- private void saveFieldInfo(int id, int off) {
- if (schema == null)
- schema = new ArrayList<>(2);
+ if (schema == null) {
+ schema = new SchemaHolder();
+
+ SCHEMA.set(schema);
+ }
+ }
- schema.add(id);
- schema.add(off);
+ schema.push(fieldId, fieldOff);
+
+ fieldCnt++;
}
/**
@@ -1751,4 +1751,72 @@ public class PortableWriterExImpl implements PortableWriter, PortableRawWriterEx
public PortableContext context() {
return ctx;
}
+
+ /**
+ * Schema holder.
+ */
+ private static class SchemaHolder {
+ /** Grow step. */
+ private static final int GROW_STEP = 16;
+
+ /** Maximum stable size. */
+ private static final int MAX_SIZE = 256;
+
+ /** Data. */
+ private int[] data;
+
+ /** Index. */
+ private int idx;
+
+ /**
+ * Constructor.
+ */
+ public SchemaHolder() {
+ data = new int[GROW_STEP];
+ }
+
+ /**
+ * Push another frame.
+ *
+ * @param id Field ID.
+ * @param off Field offset.
+ */
+ public void push(int id, int off) {
+ if (idx == data.length) {
+ int[] data0 = new int[data.length + GROW_STEP];
+
+ System.arraycopy(data, 0, data0, 0, data.length);
+
+ data = data0;
+ }
+
+ data[idx] = id;
+ data[idx + 1] = off;
+
+ idx += 2;
+ }
+
+ /**
+ * Write collected frames and pop them.
+ *
+ * @param writer Writer.
+ * @param cnt Count.
+ */
+ public void writeAndPop(PortableWriterExImpl writer, int cnt) {
+ int startIdx = idx - cnt * 2;
+
+ assert startIdx >= 0;
+
+ for (int idx0 = startIdx; idx0 < idx;) {
+ writer.writeInt(data[idx0++]);
+ writer.writeInt(data[idx0++]);
+ }
+
+ idx = startIdx;
+
+ // Shrink data array if needed.
+ if (idx == 0 && data.length > MAX_SIZE)
+ data = new int[MAX_SIZE];
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/6d9dea39/modules/microbench/src/main/java/org/apache/ignite/MyBenchmark.java
----------------------------------------------------------------------
diff --git a/modules/microbench/src/main/java/org/apache/ignite/MyBenchmark.java b/modules/microbench/src/main/java/org/apache/ignite/MyBenchmark.java
index 030342d..2c5deb1 100644
--- a/modules/microbench/src/main/java/org/apache/ignite/MyBenchmark.java
+++ b/modules/microbench/src/main/java/org/apache/ignite/MyBenchmark.java
@@ -123,12 +123,12 @@ public class MyBenchmark {
private static final Address addr = new Address();
public static void main(String[] args) throws Exception {
- setup();
- while (true)
- marsh.unmarshal(marshAddrBytes, null);
+// setup();
+// while (true)
+// marsh.unmarshal(marshAddrBytes, null);
-// Options opts = new OptionsBuilder().include(MyBenchmark.class.getSimpleName()).build();
-// new Runner(opts).run();
+ Options opts = new OptionsBuilder().include(MyBenchmark.class.getSimpleName()).build();
+ new Runner(opts).run();
}
enum Sex { MALE, FEMALE }