I've been in the process of evaluating and prototyping an application that uses Modeshape for the last several months. During this time I've discovered some issues with using Modeshape as a consistent store and wanted to bring them to the attention of the community in order to see if and how they can best be addressed.
The consistency issues all stem from the use of Infinispan as a persistence store. While Infinispan is a powerful distributed cache and is moving in the direction of becoming a strongly consistent in-memort database it does not have currently provide the consistency guarantees that you would expect from a persistence store.
The two issues that I have encountered so far our:
Cache stores do not participate in the Infinispan Tx and are not rolled back if an error occurs writing to the store. The cache does not get updated if an error occurs and this results in the store having different values to the cache.
If an error occurs during the commit-phase of the Infinispan Tx Modeshape does not see this error and considers the Tx successful even though the cache is not updated. This issue is amplified by the fact that cache store writes happen during the commit-phase and our prone to failure (IO, Network, Resources etc).
The first issue is the most concerning because it means the store will never become consistent. The second issue could be argued as a limitation of using a NoSQL database and that the store does become eventually consistent and the application needs to handle this but if this is the case this should be well documented.
Given these issues along with the inflexibility to adopt new versions of Infinispan because Modeshape is tied to using the same version as Wildfly would it make sense to look at alternative persistence options for Modeshape?