HCOLL-244 Fixed a bug with pseudo-put or remotely replicated entry

This commit is contained in:
leventov
2014-12-30 08:34:13 +07:00
parent 56ff64eaf1
commit dd969a495c
9 changed files with 46 additions and 1 deletions
@@ -26,6 +26,8 @@ public interface SizeMarshaller extends Serializable {
int sizeEncodingSize(long size);
long minEncodableSize();
int minSizeEncodingSize();
int maxSizeEncodingSize();
@@ -36,6 +36,11 @@ public final class SizeMarshallers {
return stopBitLength(size);
}
@Override
public long minEncodableSize() {
return 0L;
}
@Override
public int minSizeEncodingSize() {
return 1;
@@ -75,6 +80,11 @@ public final class SizeMarshallers {
return 0;
}
@Override
public long minEncodableSize() {
return size;
}
@Override
public int minSizeEncodingSize() {
return 0;
@@ -71,6 +71,11 @@ public abstract class ByteableMarshaller<E extends Byteable>
return 0;
}
@Override
public long minEncodableSize() {
return size;
}
@Override
public int minSizeEncodingSize() {
return 0;
@@ -39,6 +39,12 @@ public enum DoubleMarshaller implements BytesInterop<Double>, BytesReader<Double
return 0;
}
@Override
public long minEncodableSize() {
return 8L;
}
@Override
public int minSizeEncodingSize() {
return 0;
@@ -38,6 +38,11 @@ public enum IntegerMarshaller
return 0;
}
@Override
public long minEncodableSize() {
return 4L;
}
@Override
public int minSizeEncodingSize() {
return 0;
@@ -38,6 +38,11 @@ public enum LongMarshaller
return 0;
}
@Override
public long minEncodableSize() {
return 8L;
}
@Override
public int minSizeEncodingSize() {
return 0;
@@ -37,6 +37,11 @@ public enum VoidMarshaller
return 0;
}
@Override
public long minEncodableSize() {
return 0L;
}
@Override
public int minSizeEncodingSize() {
return 0;
@@ -1146,7 +1146,7 @@ final class ReplicatedChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? supe
}
// key is not found
if (remote) {
long entrySize = entrySize(keySize, 0);
long entrySize = entrySize(keySize, valueSizeMarshaller.minEncodableSize());
long pos = alloc(inChunks(entrySize));
long offset = offsetFromPos(pos);
clearMetaData(offset);
@@ -1158,6 +1158,8 @@ final class ReplicatedChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? supe
entry.writeLong(timestamp);
entry.writeByte(identifier);
entry.writeBoolean(true);
valueSizeMarshaller.writeSize(entry, valueSizeMarshaller.minEncodableSize());
hashLookup.putAfterFailedSearch(searchState, pos);
hashLookup.removePosition(pos);
@@ -64,6 +64,11 @@ enum DummyValueMarshaller
return 0;
}
@Override
public long minEncodableSize() {
return 0L;
}
@Override
public int minSizeEncodingSize() {
return 0;