You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2015/05/29 16:13:01 UTC
[1/6] incubator-ignite git commit: ignite-950: adjusting footer format
Repository: incubator-ignite
Updated Branches:
refs/heads/ignite-950 0183c008c -> d18536afb
ignite-950: adjusting footer format
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/f70d39a0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/f70d39a0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/f70d39a0
Branch: refs/heads/ignite-950
Commit: f70d39a0647bf82318d5fc2f12395c63cb3f3514
Parents: 0183c00
Author: Denis Magda <dm...@gridgain.com>
Authored: Fri May 29 12:33:37 2015 +0300
Committer: Denis Magda <dm...@gridgain.com>
Committed: Fri May 29 12:33:37 2015 +0300
----------------------------------------------------------------------
.../optimized/OptimizedClassDescriptor.java | 4 +-
.../optimized/OptimizedObjectOutputStream.java | 129 +++++++++++++++----
.../optimized/OptimizedObjectReader.java | 25 ++++
3 files changed, 133 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f70d39a0/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedClassDescriptor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedClassDescriptor.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedClassDescriptor.java
index 6eb14f1..240a936 100644
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedClassDescriptor.java
+++ b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedClassDescriptor.java
@@ -716,10 +716,12 @@ class OptimizedClassDescriptor {
"set OptimizedMarshaller.setRequireSerializable() to false " +
"(note that performance may degrade if object is not Serializable): " + name);
+ int headerPos = out.out().size();
+
writeTypeData(out);
out.writeShort(checksum);
- out.writeSerializable(obj, writeObjMtds, fields);
+ out.writeSerializable(obj, writeObjMtds, fields, headerPos);
break;
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f70d39a0/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java
index 6c1e824..b136bc6 100644
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java
+++ b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java
@@ -303,13 +303,17 @@ class OptimizedObjectOutputStream extends ObjectOutputStream {
* @param obj Object.
* @param mtds {@code writeObject} methods.
* @param fields class fields details.
+ * @param headerPos Object's header position in the OutputStream.
* @throws IOException In case of error.
*/
@SuppressWarnings("ForLoopReplaceableByForEach")
- void writeSerializable(Object obj, List<Method> mtds, OptimizedClassDescriptor.Fields fields)
+ void writeSerializable(Object obj, List<Method> mtds, OptimizedClassDescriptor.Fields fields, int headerPos)
throws IOException {
Footer footer = new Footer(fields);
+ footer.headerPos(headerPos);
+ footer.fieldsDataPos(out.size());
+
for (int i = 0; i < mtds.size(); i++) {
Method mtd = mtds.get(i);
@@ -467,12 +471,13 @@ class OptimizedObjectOutputStream extends ObjectOutputStream {
private void writeFields(Object obj, OptimizedClassDescriptor.ClassFields fields, Footer footer)
throws IOException {
int size;
- int offset;
+ int relOff = 0;
+ boolean skipPut = false;
for (int i = 0; i < fields.size(); i++) {
OptimizedClassDescriptor.FieldInfo t = fields.get(i);
- offset = size = out.size();
+ size = out.size();
switch (t.type()) {
case BYTE:
@@ -527,13 +532,23 @@ class OptimizedObjectOutputStream extends ObjectOutputStream {
if (t.field() != null) {
int handle = writeObject0(getObject(obj, t.offset()));
- if (handle >= 0)
- offset = handles.objectOffset(handle);
+ if (handle >= 0) {
+ footer.putHandle(handle, t.id());
+ skipPut = true;
+ }
}
}
- if (t.field() != null)
- footer.put(t.id(), offset, out.size() - size);
+ if (t.field() != null) {
+ int fieldLen = out.size() - size;
+
+ if (!skipPut)
+ footer.put(t.id(), relOff, fieldLen);
+ else
+ skipPut = false;
+
+ relOff += fieldLen;
+ }
}
}
@@ -725,13 +740,14 @@ class OptimizedObjectOutputStream extends ObjectOutputStream {
throw new NotActiveException("putFields() was not called.");
int size;
- int offset;
+ int relOff = 0;
+ boolean skipPut = false;
Footer footer = curPut.curFooter;
for (IgniteBiTuple<OptimizedClassDescriptor.FieldInfo, Object> t : curPut.objs) {
- offset = size = out.size();
+ size = out.size();
switch (t.get1().type()) {
case BYTE:
@@ -777,11 +793,20 @@ class OptimizedObjectOutputStream extends ObjectOutputStream {
case OTHER:
int handle = writeObject0(t.get2());
- if (handle >= 0)
- offset = handles.objectOffset(handle);
+ if (handle >= 0) {
+ footer.putHandle(handle, t.get1().id());
+ skipPut = true;
+ }
}
- footer.put(t.get1().id(), offset, out.size() - size);
+ int fieldLen = out.size() - size;
+
+ if (!skipPut)
+ footer.put(t.get1().id(), relOff, fieldLen);
+ else
+ skipPut = false;
+
+ relOff += fieldLen;
}
}
@@ -921,7 +946,13 @@ class OptimizedObjectOutputStream extends ObjectOutputStream {
private int pos;
/** */
- private int fieldsStartOff;
+ private int fieldsDataPos;
+
+ /** */
+ private int headerPos;
+
+ /** */
+ private HashMap<Integer, Integer> lenForOff;
/**
* Constructor.
@@ -937,29 +968,77 @@ class OptimizedObjectOutputStream extends ObjectOutputStream {
data = new int[totalFooterSize];
- fieldsStartOff = out.size();
+ lenForOff = new HashMap<>();
}
else
data = null;
}
/**
- * Puts type ID and its value length to the footer.
+ * Returns start position of fields' data section.
+ *
+ * @return Absolute position.
+ */
+ private int fieldsDataPos() {
+ return fieldsDataPos;
+ }
+
+ /**
+ * Sets field's data section absolute position.
+ *
+ * @param pos Absolute position.
+ */
+ private void fieldsDataPos(int pos) {
+ fieldsDataPos = pos;
+ }
+
+ /**
+ * Sets field's header absolute position.
+ *
+ * @param pos Absolute position.
+ */
+ private void headerPos(int pos) {
+ headerPos = pos;
+ }
+
+ /**
+ * Puts type ID and its value len to the footer.
*
* @param typeId Type ID.
- * @param offset Start offset of an object in the marhsalled array.
- * @param length Total number of bytes occupied by type's value.
+ * @param relativeOff Offset of an object in fields' data section.
+ * @param len Total number of bytes occupied by type's value.
*/
- private void put(int typeId, int offset, int length) {
+ private void put(int typeId, int relativeOff, int len) {
if (data == null)
return;
data[pos++] = typeId;
- data[pos++] = length;
- data[pos++] = offset;
+ data[pos++] = relativeOff;
+ data[pos++] = len;
+
+ lenForOff.put(relativeOff, len);
}
/**
+ * Puts handle's info to the footer.
+ *
+ * @param handle Handle.
+ * @param typeId Type ID.
+ */
+ private void putHandle(int handle, int typeId) {
+ int handleOff = handles.objectOffset(handle);
+ int relOff = fieldsDataPos - handleOff;
+
+ Integer len = lenForOff.get(relOff);
+
+ if (len == null)
+ throw new IllegalArgumentException("Failed to find length for offset: " + relOff);
+
+ put(typeId, relOff, len);
+ }
+
+
+ /**
* Writes footer content to the OutputStream.
*
* @throws IOException In case of error.
@@ -968,15 +1047,17 @@ class OptimizedObjectOutputStream extends ObjectOutputStream {
if (data == null)
writeInt(EMPTY_FOOTER);
else {
- int footerStartOff = out.size();
+ int footerStartPos = out.size();
- writeInt(FOOTER_START);
- writeInt(fieldsStartOff);
+ writeInt(fieldsDataPos);
for (int i = 0; i < data.length; i++)
writeInt(data[i]);
- writeInt(footerStartOff);
+ // object total len
+ writeInt((out.size() - headerPos) + 4);
+ // footer len
+ writeInt(out.size() - footerStartPos);
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f70d39a0/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectReader.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectReader.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectReader.java
new file mode 100644
index 0000000..9db2986
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectReader.java
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.marshaller.optimized;
+
+/**
+ * TODO:
+ */
+public class OptimizedObjectReader {
+
+}
[4/6] incubator-ignite git commit: ignite-950: fixes in the protocol
Posted by sb...@apache.org.
ignite-950: fixes in the protocol
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/2417c07f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/2417c07f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/2417c07f
Branch: refs/heads/ignite-950
Commit: 2417c07f81b6793a61cea7af8d09bd9a274db092
Parents: 3e6c779
Author: Denis Magda <dm...@gridgain.com>
Authored: Fri May 29 14:14:18 2015 +0300
Committer: Denis Magda <dm...@gridgain.com>
Committed: Fri May 29 14:14:18 2015 +0300
----------------------------------------------------------------------
.../optimized/OptimizedClassDescriptor.java | 2 +-
.../optimized/OptimizedObjectInputStream.java | 44 ++++++++++++++++----
.../optimized/OptimizedObjectOutputStream.java | 40 ++++++++++++++----
3 files changed, 70 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2417c07f/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedClassDescriptor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedClassDescriptor.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedClassDescriptor.java
index 240a936..ecec3ab 100644
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedClassDescriptor.java
+++ b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedClassDescriptor.java
@@ -716,7 +716,7 @@ class OptimizedClassDescriptor {
"set OptimizedMarshaller.setRequireSerializable() to false " +
"(note that performance may degrade if object is not Serializable): " + name);
- int headerPos = out.out().size();
+ int headerPos = out.out().size() - 1;
writeTypeData(out);
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2417c07f/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
index edc612b..d7fc802 100644
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
+++ b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
@@ -352,6 +352,8 @@ class OptimizedObjectInputStream extends ObjectInputStream {
switch ((t.type())) {
case BYTE:
+ readByte(); //type
+
byte resByte = readByte();
if (t.field() != null)
@@ -360,6 +362,8 @@ class OptimizedObjectInputStream extends ObjectInputStream {
break;
case SHORT:
+ readByte(); //type
+
short resShort = readShort();
if (t.field() != null)
@@ -368,6 +372,8 @@ class OptimizedObjectInputStream extends ObjectInputStream {
break;
case INT:
+ readByte(); //type
+
int resInt = readInt();
if (t.field() != null)
@@ -376,6 +382,8 @@ class OptimizedObjectInputStream extends ObjectInputStream {
break;
case LONG:
+ readByte(); //type
+
long resLong = readLong();
if (t.field() != null)
@@ -384,6 +392,8 @@ class OptimizedObjectInputStream extends ObjectInputStream {
break;
case FLOAT:
+ readByte(); //type
+
float resFloat = readFloat();
if (t.field() != null)
@@ -392,6 +402,8 @@ class OptimizedObjectInputStream extends ObjectInputStream {
break;
case DOUBLE:
+ readByte(); //type
+
double resDouble = readDouble();
if (t.field() != null)
@@ -400,6 +412,8 @@ class OptimizedObjectInputStream extends ObjectInputStream {
break;
case CHAR:
+ readByte(); //type
+
char resChar = readChar();
if (t.field() != null)
@@ -408,6 +422,8 @@ class OptimizedObjectInputStream extends ObjectInputStream {
break;
case BOOLEAN:
+ readByte(); //type
+
boolean resBoolean = readBoolean();
if (t.field() != null)
@@ -955,27 +971,25 @@ class OptimizedObjectInputStream extends ObjectInputStream {
int footerStartOff = in.readInt();
if (footerStartOff == EMPTY_FOOTER)
- return null; //TODO
+ return null; //TODO: IGNITE-950
int pos = footerStartOff;
in.offset(footerStartOff);
- //assert in.readInt() == FOOTER_START;
- in.readInt(); //TODO: do I need this? skip fields start offset
+ int fieldsDataPos = in.readInt();
int fieldOff = -1;
while (pos < end) {
int id = in.readInt();
- int len = in.readInt(); //TODO: do I need this?
if (fieldId == id) {
- fieldOff = in.readInt();
+ fieldOff = fieldsDataPos + in.readInt();
break;
}
else
- // skip field offset
- in.skipBytes(4);
+ // skip offset and len
+ in.skipBytes(8);
pos += 12;
}
@@ -1105,41 +1119,57 @@ class OptimizedObjectInputStream extends ObjectInputStream {
switch (t.type()) {
case BYTE:
+ in.readByte(); //type
+
obj = in.readByte();
break;
case SHORT:
+ in.readByte(); //type
+
obj = in.readShort();
break;
case INT:
+ in.readByte(); //type
+
obj = in.readInt();
break;
case LONG:
+ in.readByte(); //type
+
obj = in.readLong();
break;
case FLOAT:
+ in.readByte(); //type
+
obj = in.readFloat();
break;
case DOUBLE:
+ in.readByte(); //type
+
obj = in.readDouble();
break;
case CHAR:
+ in.readByte(); //type
+
obj = in.readChar();
break;
case BOOLEAN:
+ in.readByte(); //type
+
obj = in.readBoolean();
break;
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2417c07f/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java
index 2b27ec0..ae0b940 100644
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java
+++ b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java
@@ -481,50 +481,66 @@ class OptimizedObjectOutputStream extends ObjectOutputStream {
switch (t.type()) {
case BYTE:
- if (t.field() != null)
+ if (t.field() != null) {
+ writeByte(BYTE);
writeByte(getByte(obj, t.offset()));
+ }
break;
case SHORT:
- if (t.field() != null)
+ if (t.field() != null) {
+ writeByte(SHORT);
writeShort(getShort(obj, t.offset()));
+ }
break;
case INT:
- if (t.field() != null)
+ if (t.field() != null) {
+ writeByte(INT);
writeInt(getInt(obj, t.offset()));
+ }
break;
case LONG:
- if (t.field() != null)
+ if (t.field() != null) {
+ writeByte(LONG);
writeLong(getLong(obj, t.offset()));
+ }
break;
case FLOAT:
- if (t.field() != null)
+ if (t.field() != null) {
+ writeByte(FLOAT);
writeFloat(getFloat(obj, t.offset()));
+ }
break;
case DOUBLE:
- if (t.field() != null)
+ if (t.field() != null) {
+ writeByte(DOUBLE);
writeDouble(getDouble(obj, t.offset()));
+ }
break;
case CHAR:
- if (t.field() != null)
+ if (t.field() != null) {
+ writeByte(CHAR);
writeChar(getChar(obj, t.offset()));
+ }
break;
case BOOLEAN:
- if (t.field() != null)
+ if (t.field() != null) {
+ writeByte(BOOLEAN);
writeBoolean(getBoolean(obj, t.offset()));
+ }
break;
@@ -751,41 +767,49 @@ class OptimizedObjectOutputStream extends ObjectOutputStream {
switch (t.get1().type()) {
case BYTE:
+ writeByte(BYTE);
writeByte((Byte)t.get2());
break;
case SHORT:
+ writeByte(SHORT);
writeShort((Short)t.get2());
break;
case INT:
+ writeByte(INT);
writeInt((Integer)t.get2());
break;
case LONG:
+ writeByte(LONG);
writeLong((Long)t.get2());
break;
case FLOAT:
+ writeByte(FLOAT);
writeFloat((Float)t.get2());
break;
case DOUBLE:
+ writeByte(DOUBLE);
writeDouble((Double)t.get2());
break;
case CHAR:
+ writeByte(CHAR);
writeChar((Character)t.get2());
break;
case BOOLEAN:
+ writeByte(BOOLEAN);
writeBoolean((Boolean)t.get2());
break;
[5/6] incubator-ignite git commit: ignite-950: fixes in the protocol
Posted by sb...@apache.org.
ignite-950: fixes in the protocol
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/b380b32c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/b380b32c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/b380b32c
Branch: refs/heads/ignite-950
Commit: b380b32c530d038a0435930c358ada9d01339dfd
Parents: 2417c07
Author: Denis Magda <dm...@gridgain.com>
Authored: Fri May 29 14:24:05 2015 +0300
Committer: Denis Magda <dm...@gridgain.com>
Committed: Fri May 29 14:24:05 2015 +0300
----------------------------------------------------------------------
.../marshaller/optimized/OptimizedObjectInputStream.java | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b380b32c/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
index d7fc802..24b756f 100644
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
+++ b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
@@ -968,19 +968,19 @@ class OptimizedObjectInputStream extends ObjectInputStream {
int end = in.size() - 4;
in.offset(end);
- int footerStartOff = in.readInt();
+ int footerLen = in.readInt();
- if (footerStartOff == EMPTY_FOOTER)
+ if (footerLen == EMPTY_FOOTER)
return null; //TODO: IGNITE-950
- int pos = footerStartOff;
+ int footerStartOff = in.size() - footerLen;
in.offset(footerStartOff);
int fieldsDataPos = in.readInt();
int fieldOff = -1;
- while (pos < end) {
+ while (footerStartOff < end) {
int id = in.readInt();
if (fieldId == id) {
@@ -991,7 +991,7 @@ class OptimizedObjectInputStream extends ObjectInputStream {
// skip offset and len
in.skipBytes(8);
- pos += 12;
+ footerStartOff += 12;
}
if (fieldOff > 0) {
[3/6] incubator-ignite git commit: ignite-950: fixes in the protocol
Posted by sb...@apache.org.
ignite-950: fixes in the protocol
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/3e6c7797
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/3e6c7797
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/3e6c7797
Branch: refs/heads/ignite-950
Commit: 3e6c779714710ad1566c07bb2fa6522bafef4ca6
Parents: 3148af7
Author: Denis Magda <dm...@gridgain.com>
Authored: Fri May 29 13:38:09 2015 +0300
Committer: Denis Magda <dm...@gridgain.com>
Committed: Fri May 29 13:38:09 2015 +0300
----------------------------------------------------------------------
.../optimized/OptimizedObjectInputStream.java | 2 +-
.../optimized/OptimizedObjectOutputStream.java | 21 ++++++++++++++------
2 files changed, 16 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3e6c7797/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
index d07aaf5..edc612b 100644
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
+++ b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
@@ -521,7 +521,7 @@ class OptimizedObjectInputStream extends ObjectInputStream {
byte flag = (byte)in.readInt();
if (flag != EMPTY_FOOTER) {
- int skip = 3;
+ int skip = 2;
for (int i = 0; i < fields.hierarchyLevels(); i++)
skip += fields.fields(i).size() * 3;
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3e6c7797/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java
index b136bc6..2b27ec0 100644
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java
+++ b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java
@@ -1005,18 +1005,18 @@ class OptimizedObjectOutputStream extends ObjectOutputStream {
* Puts type ID and its value len to the footer.
*
* @param typeId Type ID.
- * @param relativeOff Offset of an object in fields' data section.
+ * @param relOff Offset of an object in fields' data section.
* @param len Total number of bytes occupied by type's value.
*/
- private void put(int typeId, int relativeOff, int len) {
+ private void put(int typeId, int relOff, int len) {
if (data == null)
return;
data[pos++] = typeId;
- data[pos++] = relativeOff;
+ data[pos++] = relOff;
data[pos++] = len;
- lenForOff.put(relativeOff, len);
+ lenForOff.put(relOff, len);
}
/**
@@ -1026,13 +1026,22 @@ class OptimizedObjectOutputStream extends ObjectOutputStream {
* @param typeId Type ID.
*/
private void putHandle(int handle, int typeId) {
+ if (data == null)
+ return;
+
int handleOff = handles.objectOffset(handle);
int relOff = fieldsDataPos - handleOff;
Integer len = lenForOff.get(relOff);
- if (len == null)
- throw new IllegalArgumentException("Failed to find length for offset: " + relOff);
+ if (len == null) {
+ // this can be a handle to an outer object, we won't be able to process such cases when a field
+ // is detached
+ data = null;
+ lenForOff = null;
+
+ return;
+ }
put(typeId, relOff, len);
}
[2/6] incubator-ignite git commit: ignite-950: adjusting footer format
Posted by sb...@apache.org.
ignite-950: adjusting footer format
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/3148af7a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/3148af7a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/3148af7a
Branch: refs/heads/ignite-950
Commit: 3148af7a912935ae3d526b7bc466cbe49c9e952f
Parents: f70d39a
Author: Denis Magda <dm...@gridgain.com>
Authored: Fri May 29 12:54:19 2015 +0300
Committer: Denis Magda <dm...@gridgain.com>
Committed: Fri May 29 12:54:19 2015 +0300
----------------------------------------------------------------------
.../marshaller/optimized/OptimizedMarshallerUtils.java | 3 ---
.../marshaller/optimized/OptimizedObjectInputStream.java | 8 +++-----
2 files changed, 3 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3148af7a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerUtils.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerUtils.java
index dd13ac5..6e7f6c2 100644
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerUtils.java
@@ -144,9 +144,6 @@ class OptimizedMarshallerUtils {
static final byte SERIALIZABLE = 102;
/** */
- static final byte FOOTER_START = 1;
-
- /** */
static final byte EMPTY_FOOTER = -1;
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/3148af7a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
index f854dca..d07aaf5 100644
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
+++ b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
@@ -520,10 +520,8 @@ class OptimizedObjectInputStream extends ObjectInputStream {
byte flag = (byte)in.readInt();
- assert flag == EMPTY_FOOTER || flag == FOOTER_START;
-
- if (flag == FOOTER_START) {
- int skip = 2;
+ if (flag != EMPTY_FOOTER) {
+ int skip = 3;
for (int i = 0; i < fields.hierarchyLevels(); i++)
skip += fields.fields(i).size() * 3;
@@ -962,7 +960,7 @@ class OptimizedObjectInputStream extends ObjectInputStream {
int pos = footerStartOff;
in.offset(footerStartOff);
- assert in.readInt() == FOOTER_START;
+ //assert in.readInt() == FOOTER_START;
in.readInt(); //TODO: do I need this? skip fields start offset
int fieldOff = -1;
[6/6] incubator-ignite git commit: ignite-471-2: xml fix
Posted by sb...@apache.org.
ignite-471-2: xml fix
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/d18536af
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/d18536af
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/d18536af
Branch: refs/heads/ignite-950
Commit: d18536afb761a313e9c08c42f0385335ff01a7b5
Parents: b380b32
Author: Denis Magda <dm...@gridgain.com>
Authored: Fri May 29 14:43:27 2015 +0300
Committer: Denis Magda <dm...@gridgain.com>
Committed: Fri May 29 14:43:27 2015 +0300
----------------------------------------------------------------------
.../marshaller/optimized/OptimizedObjectInputStream.java | 7 ++++---
.../marshaller/optimized/OptimizedObjectOutputStream.java | 2 +-
2 files changed, 5 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d18536af/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
index 24b756f..5f5a042 100644
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
+++ b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectInputStream.java
@@ -965,8 +965,8 @@ class OptimizedObjectInputStream extends ObjectInputStream {
int fieldId = resolveFieldId(fieldName);
- int end = in.size() - 4;
- in.offset(end);
+ int end = in.size();
+ in.offset(end - 4);
int footerLen = in.readInt();
@@ -980,7 +980,8 @@ class OptimizedObjectInputStream extends ObjectInputStream {
int fieldOff = -1;
- while (footerStartOff < end) {
+
+ while (footerStartOff < end - 8) {
int id = in.readInt();
if (fieldId == id) {
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d18536af/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java
index ae0b940..c0327bc 100644
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java
+++ b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedObjectOutputStream.java
@@ -1090,7 +1090,7 @@ class OptimizedObjectOutputStream extends ObjectOutputStream {
// object total len
writeInt((out.size() - headerPos) + 4);
// footer len
- writeInt(out.size() - footerStartPos);
+ writeInt((out.size() - footerStartPos) + 4);
}
}
}