ModeShape 5 has one significant change compared to ModeShape 4: it no longer uses Infinispan to persist its data. Although using Infinispan for ModeShape 3 and ModeShape 4 worked fine for most cases, in certain high-load/high-concurrency cases it could cause unrecoverable data corruption. We encourage readers to look over this forum post for a more detailed explanation behind the reasons for moving away from Infinispan.
Being primarily a JCR implementation, ModeShape must be a strongly serializable data store above all else, even if this means not supporting certain clustering models or having lower throughput in some cases. The main goal of ModeShape 5 was to ensure data consistency in all cases.
The main changes for ModeShape 5 include:
- Improved consistency - ModeShape 5's persistent stores are strongly consistent, avoiding issues like MODE-2558
- JDK 8 support - ModeShape 5 requires and runs on Java 8
- Wildfly 10 support - ModeShape 5 fully integrates with Wildfly 10
- Improved configuration - not using Infinispan means the additional cache configuration files that users of ModeShape 3 and ModeShape 4 are familiar with, are no longer required. The entire repository configuration is self-contained in either the JSON or JBoss AS files (with the exception that in certain clustering cases a separate JGroups configuration is required)
- Storage options - ModeShape 5 provides out-of-the-box support for storing content in:
- Relational databases (via JDBC)
- File system
- Storage SPI - A new storage SPI is available meaning that there's always the option of implementing additional stores, as long as they are transactional and support a key-value storage model
- Bug Fixes - Of course, we've incorporated quite a few bug fixes and other minor improvements, too.