Igniters, As a part of work on IGNITE-950 [1] ticket we wanted to implement a functionality which would allow users to plug their own implementation of IgniteObject, which in turn would allow to introspect objects for fields without deserialization and use of reflection.
The design draft is available on wiki [2]. Comments are highly appreciated. One of the good use-cases of this feature will be an ability to index and query JSON objects. Now, as a part of preliminary work for this ticket I was looking at current implementation of Portable objects (not released, in private API) and found that cache modifier withKeepPortable() (will be renamed to withKeepIgniteObjects) is not working properly. Namely, this modifier is not honored in entry processors and interceptors for transactional cache. Now, consider the following code: cacheA = ignite.cache("A"); cacheB = ignite.cache("B").withKeepIgniteObjects(); try (Transaction tx = ignite.transactions.txStart()) { cacheA.invoke(key1, new EP()); cacheB.invoke(key2, new EP2()); tx.commit(); } This code will require to store and transmit over the network a per-cache map of withKeepIgniteObjects flag. It is not hard to implement, but I looks like it is an additional overhead that we might not need. So to speak, same thing is not currently supported for withSkipStore flag. My question is - do we want/need to support this use-case? [1] https://issues.apache.org/jira/browse/IGNITE-950 [2] https://cwiki.apache.org/confluence/display/IGNITE/Pluggable+IgniteObjects