When updating entities in my cache, the oldValue=newValue in the event,
unless I do a put with the original object instance. This is of course not
always possible.

Here is a simplified example.

IgnitePredicate<CacheEvent> locLsnr = evt -> {
    // do something
};
ignite.events().localListen(locLsnr,EventType.EVT_CACHE_OBJECT_PUT);
IgniteCache<TradeKey, Trade> cache = ignite.getOrCreateCache("MyCache");

Trade trade1 = new Trade();
trade1.setId(1);
trade1.setSize(10);
cache.put(new TradeKey(trade.getId()), trade1); 
// event is generated
//evt.oldValue is null, no problem
trade1.setSize(20);
cache.put(new TradeKey(trade.getId()), trade1); 
// event is generated
// evt.oldValue().getSize() is 10, evt.newValue().getSize() is 20, this is
GOOD

But, if I retrieve the trade from the cache again before updating (from
another part of the application for example), I am not able to see what the
old value was in the event. Old value will just show the new value.

IgnitePredicate<CacheEvent> locLsnr = evt -> {
    // do something
};
ignite.events().localListen(locLsnr,EventType.EVT_CACHE_OBJECT_PUT);
IgniteCache<TradeKey, Trade> cache = ignite.getOrCreateCache("MyCache");

Trade trade1 = new Trade();
trade1.setId(1);
trade1.setSize(10);
cache.put(new TradeKey(trade.getId()), trade1); 
// event is generated
//evt.oldValue is null, no problem
trade1 = cache.get(new TradeKey(1)); // or could be a query or any search on
the cache
trade1.setSize(20);
cache.put(new TradeKey(trade.getId()),trade1); 
// event is generated
// evt.oldValue().getSize() is 20, evt.newValue().getSize() is 20, this is
BAD

Any advice? Thanks.



--
View this message in context: 
http://apache-ignite-users.70518.x6.nabble.com/Grid-Events-and-oldValue-versus-newValue-tp10577.html
Sent from the Apache Ignite Users mailing list archive at Nabble.com.

Reply via email to