That does seem to be what's happening, but we're only invoke()'ing on keys
that were passed into receive(), so that should not require going off-box.
Right?
Here's the relevant code...
@Override
public void receive(IgniteCache<TKey, TEntity> cache,
Collection<Map.Entry<TKey, TEntity>> newEntries) throws IgniteException {
for (val newEntry : newEntries) {
val entryKey = newEntry.getKey();
cache.invoke(entryKey, ((CacheEntryProcessor<TKey, TEntity, Object>)
(entry, args) -> {
val key =
(TKey) args[0]; //passed this in to make the lambda
non-capturing, which is a slight perf optimization (fewer memory allocs)
val newVal = (TEntity) args[1];
val oldVal = entry.getValue();
if (oldVal == null) {
//Didn't already exist, we can just set the new values and
be done
log.info("event=receiverCreatingNewInstance key={}
newValue={}", key, newVal);
entry.setValue(newVal);
} else if (isNewer(oldVal, newVal)) {
log.info("event=newEntryHasHigherVersion key={}
oldVersion={} newVersion={}", key, getVersionForLogging(oldVal),
getVersionForLogging(newVal));
entry.setValue(newVal);
} else {
log.info("event=newEntryHasLowerVersion key={} oldVersion={}
newVersion={}", key, getVersionForLogging(oldVal),
getVersionForLogging(newVal));
}
return null;
}), entryKey, newEntry.getValue());
}
}
--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/