mirror of
https://github.com/OpenHFT/Chronicle-Map.git
synced 2021-09-13 01:26:12 +00:00
HCOLL-410
This commit is contained in:
@@ -929,12 +929,12 @@ final class ReplicatedChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? supe
|
||||
throw defaultValueOrPrepareBytesShouldBeSpecified();
|
||||
}
|
||||
|
||||
final long size = metaElemWriter.size(elemWriter, elem);
|
||||
final long elemSize = metaElemWriter.size(elemWriter, elem);
|
||||
|
||||
putValue(pos, entry, valueSizePos,
|
||||
entryEndAddr, isDeleted,
|
||||
segmentState,
|
||||
metaElemWriter, elemWriter, elem, size,
|
||||
metaElemWriter, elemWriter, elem, elemSize,
|
||||
hashLookup, sizeOfEverythingBeforeValue);
|
||||
pos = segmentState.pos;
|
||||
|
||||
@@ -943,6 +943,7 @@ final class ReplicatedChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? supe
|
||||
|
||||
entry.position(valueSizePos);
|
||||
long valueSize = readValueSize(entry);
|
||||
assert valueSize == elemSize;
|
||||
long valuePos = entry.position();
|
||||
RV v = readValue.readValue(copies, entry, usingValue, valueSize);
|
||||
|
||||
@@ -1153,14 +1154,13 @@ final class ReplicatedChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? supe
|
||||
}
|
||||
|
||||
// put callbacks
|
||||
boolean hasValueChanged = updateResult != UpdateResult.UNCHANGED;
|
||||
onPutMaybeRemote(segmentState.pos, false);
|
||||
if (bytesEventListener != null) {
|
||||
boolean hasValueChanged = updateResult != UpdateResult.UNCHANGED;
|
||||
bytesEventListener.onPut(
|
||||
entry, 0L, metaDataBytes, valueSizePos, false, false, hasValueChanged);
|
||||
bytesEventListener.onPut(entry, 0L, metaDataBytes, valueSizePos, false,
|
||||
false, hasValueChanged);
|
||||
}
|
||||
if (eventListener != null) {
|
||||
boolean hasValueChanged = updateResult != UpdateResult.UNCHANGED;
|
||||
eventListener.onPut(toKey.toInstance(copies, key, keySize),
|
||||
toValue.toInstance(copies, value, valueSize), null, false,
|
||||
isDeleted, hasValueChanged, identifier, replacedIdentifier,
|
||||
|
||||
@@ -2170,7 +2170,6 @@ class VanillaChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? super KI>,
|
||||
SearchState searchState = segmentState.searchState;
|
||||
hashLookup.startSearch(hash2, searchState);
|
||||
MultiStoreBytes entry = segmentState.tmpBytes;
|
||||
boolean hasValueChanged = false;
|
||||
for (long pos; (pos = hashLookup.nextPos(searchState)) >= 0L; ) {
|
||||
long offset = offsetFromPos(pos);
|
||||
reuse(entry, offset);
|
||||
@@ -2195,8 +2194,6 @@ class VanillaChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? super KI>,
|
||||
} else {
|
||||
long valueAddr = entry.positionAddr();
|
||||
long entryEndAddr = valueAddr + prevValueSize;
|
||||
hasValueChanged = prevValueSize != valueSize ||
|
||||
!metaValueInterop.startsWith(valueInterop, entry, value);
|
||||
|
||||
// putValue may relocate entry and change offset
|
||||
putValue(pos, entry, valueSizePos, entryEndAddr, false, segmentState,
|
||||
@@ -2207,11 +2204,13 @@ class VanillaChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? super KI>,
|
||||
}
|
||||
|
||||
// put callbacks
|
||||
boolean hasValueChanged = updateResult != UpdateResult.UNCHANGED;
|
||||
onPutMaybeRemote(segmentState.pos, false);
|
||||
if (bytesEventListener != null)
|
||||
bytesEventListener.onPut(entry, 0L, metaDataBytes, valueSizePos, false, false, hasValueChanged);
|
||||
if (bytesEventListener != null) {
|
||||
bytesEventListener.onPut(entry, 0L, metaDataBytes, valueSizePos, false,
|
||||
false, hasValueChanged);
|
||||
}
|
||||
if (eventListener != null) {
|
||||
|
||||
eventListener.onPut(toKey.toInstance(copies, key, keySize),
|
||||
toValue.toInstance(copies, value, valueSize), null, false,
|
||||
false, hasValueChanged,
|
||||
@@ -2232,7 +2231,7 @@ class VanillaChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? super KI>,
|
||||
onPut(this, segmentState.pos);
|
||||
if (bytesEventListener != null)
|
||||
bytesEventListener.onPut(entry, 0L, metaDataBytes,
|
||||
segmentState.valueSizePos, true, false, hasValueChanged);
|
||||
segmentState.valueSizePos, true, false, true);
|
||||
if (eventListener != null) {
|
||||
byte replacedIdentifier = 0;
|
||||
long replacedTimeStamp = 0;
|
||||
@@ -2310,29 +2309,19 @@ class VanillaChronicleMap<K, KI, MKI extends MetaBytesInterop<K, ? super KI>,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// key is not found
|
||||
VBI valueInterop = getValueInterops.getValueInterop(copies);
|
||||
MVBI metaValueInterop =
|
||||
getValueInterops.getMetaValueInterop(copies, valueInterop, value);
|
||||
|
||||
|
||||
long valueSize = putEntry(segmentState, metaKeyInterop, keyInterop, key, keySize,
|
||||
metaValueInterop, valueInterop, value, entry, false);
|
||||
|
||||
|
||||
boolean hasValueChanged = false;
|
||||
if (eventListener != null || bytesEventListener != null) {
|
||||
// todo roman to check this
|
||||
hasValueChanged =
|
||||
!metaValueInterop.startsWith(valueInterop, entry, value);
|
||||
}
|
||||
|
||||
// put callbacks
|
||||
onPut(this, segmentState.pos);
|
||||
if (bytesEventListener != null)
|
||||
bytesEventListener.onPut(entry, 0L, metaDataBytes,
|
||||
segmentState.valueSizePos, true, false, hasValueChanged);
|
||||
segmentState.valueSizePos, true, false, true);
|
||||
if (eventListener != null)
|
||||
eventListener.onPut(toKey.toInstance(copies, key, keySize),
|
||||
toValue.toInstance(copies, value, valueSize), null, false, true, true,
|
||||
|
||||
Reference in New Issue
Block a user