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