I have some questions from the previous discussion thread about adding in
some sort of application isolation feature to Apache Geode.

"application code" -- defined as a Function or plain old application code
that uses the Geode APIs including Cache and Region

There is more than one level of code in which a user might expect this
isolation.

1) Shared Cache and Region

This is the case where the user wants to have two different realms of
"application code" deployed but share the same Cache and Regions. For
example, one Function could use different versions of the same domain
classes used by another Function.

Class loader isolation would wrap around "application code" only.

To provide correct behavior, Geode would have to provide a mechanism to
always store Region entries in serialized form. Some current behavior would
have to change. For example, if you do a put into a non-PR region that is
in the local JVM, it will be stored in deserialized form if that's the form
that was passed into the put operation. A different Function with a
different version of the domain class couldn't do a put without changing
the semantics in some way.

2) Separate Cache and Region

This is the case where the user wants "application code" to use the same
Region name and its own Indexes without sharing data or conflicting with
each other in anyway.

Class loader isolation would wrap around the Cache, its Regions and all
Geode code that interacts with the data or the "application code."

Existing behavior would remain unchanged but the distribution layer would
have to change in order to handle multiple Cache instances.

3) Separate cluster membership

This is the case where the user wants each application to have its own
membership in the Apache Geode cluster.

Class loader isolation would wrap around everything in Apache Geode
including membership.

Two different applications could be different members in the same cluster
or they could be members of different clusters. One could be a client and
another could be a server.

Which of the above scenarios was everyone envisioning during the discussion
about deploying multiple versions of domain classes and 3rd party
dependencies?

Thanks,
Kirk

Reply via email to