Hi Anand,
1. Actually, you should broadcast your logic to all nodes via
Ignite.compute()
Please see the sample below:
Collection<Integer> res = ignite.compute().broadcast(
new IgniteCallable<Integer>() {
/** Auto-inject ignite instance. */
@IgniteInstanceResource
private Ignite ignite;
@Override public Integer call() {
IgniteCache<Integer, Integer> cache =
ignite.getOrCreateCache(CACHE_NAME);
Iterator<Cache.Entry<Integer, Integer>> iterator =
cache.localEntries().iterator();
Integer key;
Integer cnt = 0;
while (iterator.hasNext()) {
key = iterator.next().getKey();
Integer res = cache.invoke(key, (entry, args) -> {
Integer val = entry.getValue();
// do some logic
val = val + 1;
return val;
});
cnt++;
}
return cnt;
}
}
);
// just ensure that we went through all keys
int entryCount = 0;
for (Integer r : res) {
entryCount += r;
}
2. And please note that cache.invokeAll() from your code does not store a
new cache entry value back to the Cache. So, you will not see any updates in
the Cache after such invokes.
"val.setAmount(val.getAmt1() + val.getAmt2());"
Thank you,
Alexey
--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/