eXo Platform 3.5

## Chapter 39. Checking repository integrity and consistency

## JMX-based consistency tool

Production and any other system may have faults some day. They may be caused by hardware problems, human faults, software errors during updates and many other circumstances. It is important to check integrity and consistency of the system if there is no backup or it is stale, or recovery process takes much. Exo JCR implementation offers an innovative JMX-based complex checking tool. Running inspection, tool check every major JCR component, such as persistent data layer and index. Persistent layer includes JDBC Data Container and Value-Storages if they are configured. Database verified using the set of complex specialized domain-specific queries. Value Storage tool checks existence and access to each file. Index verification contains two-way pass cycle, existence of each node in index checks on persistent layer along with opposite direction, when each node from Data Container validated in index. Access to check tool is exposed via JMX interface, with the following operation available:

checkRepositoryDataConsistency() | Inspect full repository data (db, value storage and search index)
checkRepositoryDataBaseConsistency() | Inspect only DB
checkRepositoryValueStorageConsistency() | Inspect only ValueStorage
checkRepositorySearchIndexConsistency() | Inspect only SearchIndex

All inspection activities and corrupted data identifier are stored in file, which can be found in app directory by name `report-<repository name>-dd-MMM-yy-HH-mm.txt`. Path to file will be returned in result message also. Please, take in account thare is three types of inconsistency and two of them are critical. They are Errors and Index faults. Index faults are marked as "Reindex" and can be fixed by reindexing the workspace, but the Errors can only be fixed manually. Warnings found by tool can be a normal situation in some cases and usually production system will still remain fully functional.