Details
-
Wish
-
Status: In Progress
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
Description
We know that certain sequences of calls can cause the persistent state to become inconsistent, such as by producing orphaned nodes.
This usually does not manifest itself in tests failing. However, it can mean (silent) data loss, and become visible at a different point of time in the form of nodes that can be discovered using a query, but which can not compute their path.
Checking the persistence layer's consistency is implementation specific. In Jackrabbit, there is a consistency check call on the PersistenceManager that we could use. It just logs a results and doesn't provide a checkable return value, but it would be a start.
Proposed helper code (thx to Marcel for the proposal):
/**
- Runs a consistency check on the given workspace.
* - @param name the name of the workspace to perform the consistency check.
- @param repo the repository instance.
- @throws RepositoryException if an error occurs while getting the
- workspace with the given name.
*/
public static void checkConsistency(String name, RepositoryImpl repo)
throws RepositoryException { RepositoryImpl.WorkspaceInfo wspInfo = repo.getWorkspaceInfo(name); wspInfo.getPersistenceManager().checkConsistency(null, true, false); }
Attachments
Attachments
Issue Links
- is related to
-
JCR-3114 expose PM for versioning manager so that the consistency check can be run from test cases
- Closed