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 10:00:56 UTC
[01/10] ignite git commit: IGNITE-1770: WIP on using new search algo.
Repository: ignite
Updated Branches:
refs/heads/ignite-1770 ae2a938d6 -> fb9a816f1
IGNITE-1770: WIP on using new search algo.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/6cb5be45
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/6cb5be45
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/6cb5be45
Branch: refs/heads/ignite-1770
Commit: 6cb5be450c2136f02b896c90ff3e15320c71b5dd
Parents: ae2a938
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Oct 27 10:56:07 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Oct 27 10:56:07 2015 +0300
----------------------------------------------------------------------
.../ignite/internal/portable/PortableReaderExImpl.java | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/6cb5be45/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 e23a865..d0424b2 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
@@ -2512,8 +2512,8 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
private boolean hasField(int id) {
assert hdrLen != 0;
- int searchHead = start + hdrLen;
- int searchTail = start + PortableUtils.rawOffset(in, start);
+ int searchHead = start + footerStart;
+ int searchTail = start + footerEnd;
// TODO: Opto.
@@ -2554,14 +2554,14 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
int id0 = in.readIntPositioned(searchHead);
if (id0 == id) {
- in.position(searchHead + 8);
+ int offset = in.readIntPositioned(searchHead + 4);
+
+ in.position(start + offset + 8); // TODO: "+8" will be removed soon.
return true;
}
- int len = in.readIntPositioned(searchHead + 4);
-
- searchHead += (8 + len);
+ searchHead += 8;
}
}
[04/10] ignite git commit: IGNITE-1770: Minors.
Posted by vo...@apache.org.
IGNITE-1770: Minors.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/6f71e022
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/6f71e022
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/6f71e022
Branch: refs/heads/ignite-1770
Commit: 6f71e02241ac5412365a0d64e0870138088d0613
Parents: 9e71ff0
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Oct 27 11:35:15 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Oct 27 11:35:15 2015 +0300
----------------------------------------------------------------------
.../internal/portable/PortableReaderExImpl.java | 9 ++++-----
.../ignite/internal/portable/PortableUtils.java | 20 ++++++++++++++++++++
.../portable/builder/PortableBuilderImpl.java | 11 ++++++-----
3 files changed, 30 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/6f71e022/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 0b36d16..b6d36a1 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
@@ -24,6 +24,7 @@ import org.apache.ignite.internal.util.GridEnumCache;
import org.apache.ignite.internal.util.lang.GridMapEntry;
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.PortableInvalidClassException;
import org.apache.ignite.portable.PortableObject;
@@ -210,12 +211,10 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
typeId = in.readIntPositioned(start + GridPortableMarshaller.TYPE_ID_POS);
- footerStart = PortableUtils.footerStart(in, start);
- footerEnd = PortableUtils.length(in, start);
+ IgniteBiTuple<Integer, Integer> footer = PortableUtils.footer(in, start);
- // Take in count possible raw offset.
- if ((((footerEnd - footerStart) >> 2) & 0x1) == 0x1)
- footerEnd -= 4;
+ footerStart = footer.get1();
+ footerEnd = footer.get2();
rawOff = PortableUtils.rawOffset(in, start);
http://git-wip-us.apache.org/repos/asf/ignite/blob/6f71e022/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 4b53382..23ec501 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
@@ -18,7 +18,9 @@
package org.apache.ignite.internal.portable;
import org.apache.ignite.internal.portable.builder.PortableLazyValue;
+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.apache.ignite.portable.PortableException;
import org.apache.ignite.portable.PortableObject;
import org.jetbrains.annotations.Nullable;
@@ -566,6 +568,24 @@ public class PortableUtils {
}
/**
+ * Get object's footer.
+ *
+ * @param in Input stream.
+ * @param start Start position.
+ * @return Footer.
+ */
+ public static IgniteBiTuple<Integer, Integer> footer(PortablePositionReadable in, int start) {
+ int footerStart = footerStart(in, start);
+ int footerEnd = length(in, start);
+
+ // Take in count possible raw offset.
+ if ((((footerEnd - footerStart) >> 2) & 0x1) == 0x1)
+ footerEnd -= 4;
+
+ return F.t(footerStart, footerEnd);
+ }
+
+ /**
* Get footer start of the object.
*
* @param in Input stream.
http://git-wip-us.apache.org/repos/asf/ignite/blob/6f71e022/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 4010415..0325641 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
@@ -26,6 +26,7 @@ import org.apache.ignite.internal.portable.PortableWriterExImpl;
import org.apache.ignite.internal.processors.cache.portable.CacheObjectPortableProcessorImpl;
import org.apache.ignite.internal.util.GridArgumentCheck;
import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.lang.IgniteBiTuple;
import org.apache.ignite.portable.PortableBuilder;
import org.apache.ignite.portable.PortableException;
import org.apache.ignite.portable.PortableInvalidClassException;
@@ -394,12 +395,12 @@ public class PortableBuilderImpl implements PortableBuilder {
if (readCache == null) {
Map<Integer, Object> readCache = new HashMap<>();
- int rawPos = start + PortableUtils.rawOffset(reader, start);
- int footerPos = start + PortableUtils.footerStart(reader, start);
- int footerEnd = start + PortableUtils.length(reader, start);
+ IgniteBiTuple<Integer, Integer> footer = PortableUtils.footer(reader, start);
+
+ int footerPos = footer.get1();
+ int footerEnd = footer.get2();
- if ((((footerEnd - footerPos) >> 2) & 0x1) == 0x1)
- footerEnd -= 4;
+ int rawPos = start + PortableUtils.rawOffset(reader, start);
while (footerPos < footerEnd) {
int fieldId = reader.readIntPositioned(footerPos);
[08/10] ignite git commit: IGNITE-1770: Refactoring.
Posted by vo...@apache.org.
IGNITE-1770: Refactoring.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/f06814ea
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/f06814ea
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/f06814ea
Branch: refs/heads/ignite-1770
Commit: f06814ea9ca62829c88dc72ffc34060c5854e2e7
Parents: 7854eba
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Oct 27 11:52:11 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Oct 27 11:52:11 2015 +0300
----------------------------------------------------------------------
.../internal/portable/builder/PortableBuilderImpl.java | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/f06814ea/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 06f15f5..30892d3 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
@@ -44,7 +44,6 @@ import java.util.Set;
import static org.apache.ignite.internal.portable.GridPortableMarshaller.DFLT_HDR_LEN;
import static org.apache.ignite.internal.portable.GridPortableMarshaller.HASH_CODE_POS;
import static org.apache.ignite.internal.portable.GridPortableMarshaller.PROTO_VER_POS;
-import static org.apache.ignite.internal.portable.GridPortableMarshaller.TOTAL_LEN_POS;
import static org.apache.ignite.internal.portable.GridPortableMarshaller.TYPE_ID_POS;
import static org.apache.ignite.internal.portable.GridPortableMarshaller.UNREGISTERED_TYPE_ID;
@@ -225,11 +224,19 @@ public class PortableBuilderImpl implements PortableBuilder {
else
assignedFldsById = Collections.emptyMap();
- int rawOff = start + PortableUtils.rawOffset(reader, start);
+ // Get footer details.
+ IgniteBiTuple<Integer, Integer> footer = PortableUtils.footer(reader, start);
+
+ int footerPos = footer.get1();
+ int footerEnd = footer.get2();
+
+ // Get raw position.
+ int rawPos = start + PortableUtils.rawOffset(reader, start);
+ // Position reader on data.
reader.position(start + hdrLen);
- while (reader.position() < rawOff) {
+ while (reader.position() < rawPos) {
int fieldId = reader.readInt();
int fieldLen = reader.readInt();
[07/10] ignite git commit: IGNITE-1770: Refactoring.
Posted by vo...@apache.org.
IGNITE-1770: Refactoring.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/7854eba2
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/7854eba2
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/7854eba2
Branch: refs/heads/ignite-1770
Commit: 7854eba2ab03d9f76a45d8eed5dcfd161db20b78
Parents: bce06ae
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Oct 27 11:47:54 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Oct 27 11:47:54 2015 +0300
----------------------------------------------------------------------
.../portable/builder/PortableBuilderImpl.java | 46 +++++++++++++-------
1 file changed, 31 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/7854eba2/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 c59fbc1..06f15f5 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
@@ -25,6 +25,7 @@ import org.apache.ignite.internal.portable.PortableUtils;
import org.apache.ignite.internal.portable.PortableWriterExImpl;
import org.apache.ignite.internal.processors.cache.portable.CacheObjectPortableProcessorImpl;
import org.apache.ignite.internal.util.GridArgumentCheck;
+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.apache.ignite.portable.PortableBuilder;
@@ -390,7 +391,35 @@ public class PortableBuilderImpl implements PortableBuilder {
}
/**
+ * Get field position and length.
*
+ * @param footerPos Field position inside the footer (absolute).
+ * @param footerEnd Footer end (absolute).
+ * @param rawPos Raw data position (absolute).
+ * @return Tuple with field position and length.
+ */
+ private IgniteBiTuple<Integer, Integer> fieldPositionAndLength(int footerPos, int footerEnd, int rawPos) {
+ int fieldOffset = reader.readIntPositioned(footerPos + 4);
+ int fieldPos = start + fieldOffset + 8; // TODO: 8 is to be removed.
+
+ // Get field length.
+ int fieldLen;
+
+ if (footerPos + 8 == footerEnd)
+ // This is the last field, compare to raw offset.
+ fieldLen = rawPos - fieldPos;
+ else {
+ // Field is somewhere in the middle, get difference with the next offset.
+ int nextFieldOffset = reader.readIntPositioned(footerPos + 8 + 4);
+
+ fieldLen = nextFieldOffset - fieldOffset - 8; // TODO: 8 is to be removed.
+ }
+
+ return F.t(fieldPos, fieldLen);
+ }
+
+ /**
+ * Initialize read cache if needed.
*/
private void ensureReadCacheInit() {
if (readCache == null) {
@@ -405,23 +434,10 @@ public class PortableBuilderImpl implements PortableBuilder {
while (footerPos < footerEnd) {
int fieldId = reader.readIntPositioned(footerPos);
- int fieldOffset = reader.readIntPositioned(footerPos + 4);
- int fieldPos = start + fieldOffset + 8; // TODO: 8 is to be removed.
-
- // Get field length.
- int len;
- if (footerPos + 8 == footerEnd)
- // This is the last field, compare to raw offset.
- len = rawPos - fieldPos;
- else {
- // Field is somewhere in the middle, get difference with the next offset.
- int nextFieldOffset = reader.readIntPositioned(footerPos + 8 + 4);
-
- len = nextFieldOffset - fieldOffset - 8; // TODO: 8 is to be removed.
- }
+ IgniteBiTuple<Integer, Integer> posAndLen = fieldPositionAndLength(footerPos, footerEnd, rawPos);
- Object val = reader.getValueQuickly(fieldPos, len);
+ Object val = reader.getValueQuickly(posAndLen.get1(), posAndLen.get2());
readCache.put(fieldId, val);
[06/10] ignite git commit: IGNITE-1770: Minors.
Posted by vo...@apache.org.
IGNITE-1770: Minors.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/bce06aee
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/bce06aee
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/bce06aee
Branch: refs/heads/ignite-1770
Commit: bce06aee6d7e73acccf78aa6f233a18b2d83b3cf
Parents: 7dffaba
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Oct 27 11:44:31 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Oct 27 11:44:31 2015 +0300
----------------------------------------------------------------------
.../internal/portable/builder/PortableBuilderImpl.java | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/bce06aee/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 c13b927..c59fbc1 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
@@ -408,17 +408,15 @@ public class PortableBuilderImpl implements PortableBuilder {
int fieldOffset = reader.readIntPositioned(footerPos + 4);
int fieldPos = start + fieldOffset + 8; // TODO: 8 is to be removed.
- footerPos += 8;
-
// Get field length.
int len;
- if (footerPos == footerEnd)
+ if (footerPos + 8 == footerEnd)
// This is the last field, compare to raw offset.
len = rawPos - fieldPos;
else {
// Field is somewhere in the middle, get difference with the next offset.
- int nextFieldOffset = reader.readIntPositioned(footerPos + 4);
+ int nextFieldOffset = reader.readIntPositioned(footerPos + 8 + 4);
len = nextFieldOffset - fieldOffset - 8; // TODO: 8 is to be removed.
}
@@ -426,6 +424,9 @@ public class PortableBuilderImpl implements PortableBuilder {
Object val = reader.getValueQuickly(fieldPos, len);
readCache.put(fieldId, val);
+
+ // Shift current footer position.
+ footerPos += 8;
}
this.readCache = readCache;
[03/10] ignite git commit: IGNITE-1770: Minors.
Posted by vo...@apache.org.
IGNITE-1770: Minors.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/9e71ff05
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/9e71ff05
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/9e71ff05
Branch: refs/heads/ignite-1770
Commit: 9e71ff054a65163d309685e2bef56479c981d4ed
Parents: 6d1df79
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Oct 27 11:32:13 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Oct 27 11:32:13 2015 +0300
----------------------------------------------------------------------
.../java/org/apache/ignite/internal/portable/PortableUtils.java | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/9e71ff05/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 48f814d..4b53382 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
@@ -546,9 +546,7 @@ public class PortableUtils {
writer.doWriteInt(typeId);
writer.doWriteInt(hashCode);
- int reserved = writer.reserve(8);
-
- writer.doWriteInt(0); // TODO: Write schema offset here.
+ int reserved = writer.reserve(12);
if (clsName != null)
writer.doWriteString(clsName);
[09/10] ignite git commit: IGNITE-1770: Refactoring.
Posted by vo...@apache.org.
IGNITE-1770: Refactoring.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/0f23906e
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/0f23906e
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/0f23906e
Branch: refs/heads/ignite-1770
Commit: 0f23906e794b32941026543e0ced6eacd9cfed7e
Parents: f06814e
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Oct 27 11:58:25 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Oct 27 11:58:25 2015 +0300
----------------------------------------------------------------------
.../portable/builder/PortableBuilderImpl.java | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/0f23906e/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 30892d3..88a5950 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
@@ -227,8 +227,8 @@ public class PortableBuilderImpl implements PortableBuilder {
// Get footer details.
IgniteBiTuple<Integer, Integer> footer = PortableUtils.footer(reader, start);
- int footerPos = footer.get1();
- int footerEnd = footer.get2();
+ int footerPos = start + footer.get1();
+ int footerEnd = start + footer.get2();
// Get raw position.
int rawPos = start + PortableUtils.rawOffset(reader, start);
@@ -240,6 +240,14 @@ public class PortableBuilderImpl implements PortableBuilder {
int fieldId = reader.readInt();
int fieldLen = reader.readInt();
+ int footerFieldId = reader.readIntPositioned(footerPos);
+ footerPos += 8;
+
+ System.out.println("id=" + fieldId + ", footerId=" + footerFieldId + ", len=" + fieldLen);
+
+ if (fieldId != footerFieldId)
+ throw new PortableException("ID mismatch!");
+
if (assignedFldsById.containsKey(fieldId)) {
Object assignedVal = assignedFldsById.remove(fieldId);
@@ -434,8 +442,8 @@ public class PortableBuilderImpl implements PortableBuilder {
IgniteBiTuple<Integer, Integer> footer = PortableUtils.footer(reader, start);
- int footerPos = footer.get1();
- int footerEnd = footer.get2();
+ int footerPos = start + footer.get1();
+ int footerEnd = start + footer.get2();
int rawPos = start + PortableUtils.rawOffset(reader, start);
[05/10] ignite git commit: IGNITE-1770: Minors.
Posted by vo...@apache.org.
IGNITE-1770: Minors.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/7dffabae
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/7dffabae
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/7dffabae
Branch: refs/heads/ignite-1770
Commit: 7dffabae0eae5aa7dd31fb70be3a15d87082e7de
Parents: 6f71e02
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Oct 27 11:36:04 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Oct 27 11:36:04 2015 +0300
----------------------------------------------------------------------
.../ignite/internal/portable/builder/PortableBuilderImpl.java | 1 +
1 file changed, 1 insertion(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/7dffabae/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 0325641..c13b927 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
@@ -365,6 +365,7 @@ public class PortableBuilderImpl implements PortableBuilder {
}
if (reader != null) {
+ // Write raw data if any.
int rawOff = start + PortableUtils.rawOffset(reader, start);
int footerStart = start + PortableUtils.footerStart(reader, start);
[02/10] ignite git commit: IGNITE-1770: WIP on using new search algo
(builder)
Posted by vo...@apache.org.
IGNITE-1770: WIP on using new search algo (builder)
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/6d1df79d
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/6d1df79d
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/6d1df79d
Branch: refs/heads/ignite-1770
Commit: 6d1df79d3950b098e23e411785c31490de0cf3f9
Parents: 6cb5be4
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Oct 27 11:30:46 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Oct 27 11:30:46 2015 +0300
----------------------------------------------------------------------
.../internal/portable/PortableReaderExImpl.java | 2 +-
.../ignite/internal/portable/PortableUtils.java | 11 +++++++
.../portable/builder/PortableBuilderImpl.java | 33 ++++++++++++++------
3 files changed, 35 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/6d1df79d/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 d0424b2..0b36d16 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
@@ -211,7 +211,7 @@ public class PortableReaderExImpl implements PortableReader, PortableRawReaderEx
typeId = in.readIntPositioned(start + GridPortableMarshaller.TYPE_ID_POS);
footerStart = PortableUtils.footerStart(in, start);
- footerEnd = in.readIntPositioned(start + GridPortableMarshaller.TOTAL_LEN_POS);
+ footerEnd = PortableUtils.length(in, start);
// Take in count possible raw offset.
if ((((footerEnd - footerStart) >> 2) & 0x1) == 0x1)
http://git-wip-us.apache.org/repos/asf/ignite/blob/6d1df79d/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 26d4b0b..48f814d 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
@@ -557,6 +557,17 @@ public class PortableUtils {
}
/**
+ * Get portable object length.
+ *
+ * @param in Input stream.
+ * @param start Start position.
+ * @return Length.
+ */
+ public static int length(PortablePositionReadable in, int start) {
+ return in.readIntPositioned(start + GridPortableMarshaller.TOTAL_LEN_POS);
+ }
+
+ /**
* Get footer start of the object.
*
* @param in Input stream.
http://git-wip-us.apache.org/repos/asf/ignite/blob/6d1df79d/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 0b02286..4010415 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
@@ -394,23 +394,36 @@ public class PortableBuilderImpl implements PortableBuilder {
if (readCache == null) {
Map<Integer, Object> readCache = new HashMap<>();
- int pos = start + hdrLen;
- int end = start + PortableUtils.rawOffset(reader, start);
+ int rawPos = start + PortableUtils.rawOffset(reader, start);
+ int footerPos = start + PortableUtils.footerStart(reader, start);
+ int footerEnd = start + PortableUtils.length(reader, start);
- while (pos < end) {
- int fieldId = reader.readIntPositioned(pos);
+ if ((((footerEnd - footerPos) >> 2) & 0x1) == 0x1)
+ footerEnd -= 4;
- pos += 4;
+ while (footerPos < footerEnd) {
+ int fieldId = reader.readIntPositioned(footerPos);
+ int fieldOffset = reader.readIntPositioned(footerPos + 4);
+ int fieldPos = start + fieldOffset + 8; // TODO: 8 is to be removed.
- int len = reader.readIntPositioned(pos);
+ footerPos += 8;
- pos += 4;
+ // Get field length.
+ int len;
- Object val = reader.getValueQuickly(pos, len);
+ if (footerPos == footerEnd)
+ // This is the last field, compare to raw offset.
+ len = rawPos - fieldPos;
+ else {
+ // Field is somewhere in the middle, get difference with the next offset.
+ int nextFieldOffset = reader.readIntPositioned(footerPos + 4);
- readCache.put(fieldId, val);
+ len = nextFieldOffset - fieldOffset - 8; // TODO: 8 is to be removed.
+ }
- pos += len;
+ Object val = reader.getValueQuickly(fieldPos, len);
+
+ readCache.put(fieldId, val);
}
this.readCache = readCache;
[10/10] ignite git commit: IGNITE-1770: Refactoring.
Posted by vo...@apache.org.
IGNITE-1770: Refactoring.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/fb9a816f
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/fb9a816f
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/fb9a816f
Branch: refs/heads/ignite-1770
Commit: fb9a816f1c7fa91331d400c1f2cd19289cd17586
Parents: 0f23906
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Oct 27 12:01:37 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Oct 27 12:01:37 2015 +0300
----------------------------------------------------------------------
.../internal/portable/builder/PortableBuilderImpl.java | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb9a816f/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 88a5950..14ea625 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
@@ -237,16 +237,12 @@ public class PortableBuilderImpl implements PortableBuilder {
reader.position(start + hdrLen);
while (reader.position() < rawPos) {
- int fieldId = reader.readInt();
- int fieldLen = reader.readInt();
-
- int footerFieldId = reader.readIntPositioned(footerPos);
- footerPos += 8;
+ int fieldId = reader.readIntPositioned(footerPos);
+ int fieldLen = fieldPositionAndLength(footerPos, footerEnd, rawPos).get2();
- System.out.println("id=" + fieldId + ", footerId=" + footerFieldId + ", len=" + fieldLen);
+ reader.skip(8); // TODO: This must be removed.
- if (fieldId != footerFieldId)
- throw new PortableException("ID mismatch!");
+ footerPos += 8;
if (assignedFldsById.containsKey(fieldId)) {
Object assignedVal = assignedFldsById.remove(fieldId);