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

Reply via email to