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);