You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2012/01/17 15:03:58 UTC
svn commit: r1232414 - in /jackrabbit/branches/2.4: ./
jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/
jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/check/
jackrabbit-core/src/test/java/org/apache/jac...
Author: jukka
Date: Tue Jan 17 14:03:58 2012
New Revision: 1232414
URL: http://svn.apache.org/viewvc?rev=1232414&view=rev
Log:
2.4: Merged revisions 1221789 and 1221818 (JCR-3184)
Modified:
jackrabbit/branches/2.4/ (props changed)
jackrabbit/branches/2.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/AbstractBundlePersistenceManager.java
jackrabbit/branches/2.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/ConsistencyCheckerImpl.java
jackrabbit/branches/2.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/check/ConsistencyChecker.java
jackrabbit/branches/2.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/ConcurrentImportTest.java
jackrabbit/branches/2.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/ConsistencyCheck.java
jackrabbit/branches/2.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/TestHelper.java
jackrabbit/branches/2.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/persistence/AutoFixCorruptNode.java
Propchange: jackrabbit/branches/2.4/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Jan 17 14:03:58 2012
@@ -1,3 +1,3 @@
/jackrabbit/branches/JCR-2272:1173165-1176545
/jackrabbit/sandbox/JCR-2415-lucene-3.0:1060860-1064038
-/jackrabbit/trunk:1221447,1221579,1221593,1227240
+/jackrabbit/trunk:1221447,1221579,1221593,1221789,1221818,1227240
Modified: jackrabbit/branches/2.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/AbstractBundlePersistenceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/AbstractBundlePersistenceManager.java?rev=1232414&r1=1232413&r2=1232414&view=diff
==============================================================================
--- jackrabbit/branches/2.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/AbstractBundlePersistenceManager.java (original)
+++ jackrabbit/branches/2.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/AbstractBundlePersistenceManager.java Tue Jan 17 14:03:58 2012
@@ -66,7 +66,7 @@ import org.slf4j.LoggerFactory;
* persistence managers that store the state in a {@link NodePropBundle}.
* <p/>
* The state and all property states of one node are stored together in one
- * record. Property values of a certain size can be store outside of the bundle.
+ * record. Property values of a certain size can be stored outside of the bundle.
* This currently only works for binary properties. NodeReferences are not
* included in the bundle since they are addressed by the target id.
* <p/>
@@ -78,11 +78,11 @@ import org.slf4j.LoggerFactory;
* and "jcr:mixinTypes". As they are also stored in the node state they are not
* included in the bundle but generated when required.
* <p/>
- * In order to increase performance, there are 2 caches maintained. One is the
+ * In order to increase performance, there are two caches being maintained. One is the
* bundle cache that caches already loaded bundles. The other is the
* {@link LRUNodeIdCache} that caches non-existent bundles. This is useful
* because a lot of {@link #exists(NodeId)} calls are issued that would result
- * in a useless SQL execution if the desired bundle does not exist.
+ * in a useless persistence lookup if the desired bundle does not exist.
* <p/>
* Configuration:<br>
* <ul>
@@ -785,7 +785,7 @@ public abstract class AbstractBundlePers
public void checkConsistency(String[] uuids, boolean recursive, boolean fix) {
try {
ConsistencyCheckerImpl cs = new ConsistencyCheckerImpl(this);
- cs.check(uuids, recursive, fix);
+ cs.check(uuids, recursive, fix, null);
} catch (RepositoryException ex) {
log.error("While running consistency check.", ex);
}
@@ -794,9 +794,9 @@ public abstract class AbstractBundlePers
/**
* {@inheritDoc}
*/
- public ConsistencyReport check(String[] uuids, boolean recursive, boolean fix) throws RepositoryException {
+ public ConsistencyReport check(String[] uuids, boolean recursive, boolean fix, String lostNFoundId) throws RepositoryException {
ConsistencyCheckerImpl cs = new ConsistencyCheckerImpl(this);
- return cs.check(uuids, recursive, fix);
+ return cs.check(uuids, recursive, fix, lostNFoundId);
}
/**
Modified: jackrabbit/branches/2.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/ConsistencyCheckerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/ConsistencyCheckerImpl.java?rev=1232414&r1=1232413&r2=1232414&view=diff
==============================================================================
--- jackrabbit/branches/2.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/ConsistencyCheckerImpl.java (original)
+++ jackrabbit/branches/2.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/ConsistencyCheckerImpl.java Tue Jan 17 14:03:58 2012
@@ -33,6 +33,8 @@ import org.apache.jackrabbit.core.persis
import org.apache.jackrabbit.core.persistence.check.ReportItemImpl;
import org.apache.jackrabbit.core.persistence.util.NodePropBundle;
import org.apache.jackrabbit.core.state.ItemStateException;
+import org.apache.jackrabbit.spi.NameFactory;
+import org.apache.jackrabbit.spi.commons.name.NameConstants;
import org.apache.jackrabbit.spi.commons.name.NameFactoryImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -44,24 +46,47 @@ public class ConsistencyCheckerImpl impl
private AbstractBundlePersistenceManager pm;
+ private static final NameFactory NF = NameFactoryImpl.getInstance();
+
public ConsistencyCheckerImpl(AbstractBundlePersistenceManager pm) {
this.pm = pm;
}
- public ConsistencyReport check(String[] uuids, boolean recursive, boolean fix) throws RepositoryException {
+ public ConsistencyReport check(String[] uuids, boolean recursive, boolean fix, String lostNFoundId)
+ throws RepositoryException {
Set<ReportItem> reports = new HashSet<ReportItem>();
long tstart = System.currentTimeMillis();
- int total = internalCheckConsistency(uuids, recursive, fix, reports);
+ int total = internalCheckConsistency(uuids, recursive, fix, reports, lostNFoundId);
long elapsed = System.currentTimeMillis() - tstart;
return new ConsistencyReportImpl(total, elapsed, reports);
}
- private int internalCheckConsistency(String[] uuids, boolean recursive, boolean fix, Set<ReportItem> reports) throws RepositoryException {
+ private int internalCheckConsistency(String[] uuids, boolean recursive, boolean fix, Set<ReportItem> reports,
+ String lostNFoundId) throws RepositoryException {
int count = 0;
int total = 0;
- Collection<NodePropBundle> modifications = new ArrayList<NodePropBundle>();
+ Collection<NodePropBundle> modifications = new ArrayList<NodePropBundle>();
+ Set<NodeId> orphaned = new HashSet<NodeId>();
+
+ NodeId lostNFound = null;
+ if (fix && lostNFoundId != null) {
+ // do we have a "lost+found" node?
+ try {
+ NodeId tmpid = new NodeId(lostNFoundId);
+ NodePropBundle lfBundle = pm.loadBundle(tmpid);
+ if (lfBundle == null) {
+ log.error("specified 'lost+found' node does not exist");
+ } else if (!NameConstants.NT_UNSTRUCTURED.equals(lfBundle.getNodeTypeName())) {
+ log.error("specified 'lost+found' node is not of type nt:unstructered");
+ } else {
+ lostNFound = lfBundle.getId();
+ }
+ } catch (Exception ex) {
+ log.error("finding 'lost+found' folder", ex);
+ }
+ }
if (uuids == null) {
try {
@@ -75,7 +100,7 @@ public class ConsistencyCheckerImpl impl
if (bundle == null) {
log.error("No bundle found for id '" + id + "'");
} else {
- checkBundleConsistency(id, bundle, fix, modifications, reports);
+ checkBundleConsistency(id, bundle, fix, modifications, lostNFound, orphaned, reports);
count++;
if (count % 1000 == 0) {
@@ -123,7 +148,7 @@ public class ConsistencyCheckerImpl impl
log.error("No bundle found for id '" + id + "'");
}
else {
- checkBundleConsistency(id, bundle, fix, modifications, reports);
+ checkBundleConsistency(id, bundle, fix, modifications, lostNFound, orphaned, reports);
if (recursive) {
for (NodePropBundle.ChildNodeEntry entry : bundle.getChildNodeEntries()) {
@@ -159,6 +184,28 @@ public class ConsistencyCheckerImpl impl
}
}
+ if (fix && lostNFoundId != null && !orphaned.isEmpty()) {
+ // do we have things to add to "lost+found"?
+ try {
+ NodePropBundle lfBundle = pm.loadBundle(lostNFound);
+ if (lfBundle == null) {
+ log.error("specified 'lost+found' node does not exist");
+ } else if (!NameConstants.NT_UNSTRUCTURED.equals(lfBundle.getNodeTypeName())) {
+ log.error("specified 'lost+found' node is not of type nt:unstructered");
+ } else {
+ lfBundle.markOld();
+ for (NodeId orphan : orphaned) {
+ String nodeName = orphan + "-" + System.currentTimeMillis();
+ lfBundle.addChildNodeEntry(NF.create("", nodeName), orphan);
+ }
+ pm.storeBundle(lfBundle);
+ pm.evictBundle(lfBundle.getId());
+ }
+ } catch (Exception ex) {
+ log.error("trying orphan adoption", ex);
+ }
+ }
+
log.info(pm + ": checked " + count + "/" + total + " bundles.");
return total;
@@ -176,7 +223,7 @@ public class ConsistencyCheckerImpl impl
*/
private void checkBundleConsistency(NodeId id, NodePropBundle bundle,
boolean fix, Collection<NodePropBundle> modifications,
- Set<ReportItem> reports) {
+ NodeId lostNFoundId, Set<NodeId> orphaned, Set<ReportItem> reports) {
//log.info(name + ": checking bundle '" + id + "'");
// skip all system nodes except root node
@@ -240,6 +287,11 @@ public class ConsistencyCheckerImpl impl
String message = "NodeState '" + id + "' references inexistent parent id '" + parentId + "'";
log.error(message);
addMessage(reports, id, message);
+ orphaned.add(id);
+ if (lostNFoundId != null) {
+ bundle.setParentId(lostNFoundId);
+ modifications.add(bundle);
+ }
}
else {
boolean found = false;
@@ -260,8 +312,7 @@ public class ConsistencyCheckerImpl impl
int r = new Random().nextInt();
int n = l + r;
String nodeName = Integer.toHexString(n);
- parentBundle.addChildNodeEntry(NameFactoryImpl
- .getInstance().create("{}" + nodeName), id);
+ parentBundle.addChildNodeEntry(NF.create("{}" + nodeName), id);
log.info("NodeState '" + id + "' adds itself to its parent node '" + parentId + "' with a new name '" + nodeName + "'");
modifications.add(parentBundle);
}
Modified: jackrabbit/branches/2.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/check/ConsistencyChecker.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/check/ConsistencyChecker.java?rev=1232414&r1=1232413&r2=1232414&view=diff
==============================================================================
--- jackrabbit/branches/2.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/check/ConsistencyChecker.java (original)
+++ jackrabbit/branches/2.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/check/ConsistencyChecker.java Tue Jan 17 14:03:58 2012
@@ -44,6 +44,12 @@ public interface ConsistencyChecker {
* if true, any problems found that can be repaired will be
* repaired. if false, no data will be modified, instead all
* inconsistencies will only get logged
+ * @param lostNFoundId
+ * node to which to attach orphaned nodes (or <code>null</code>,
+ * in which case orphaned nodes will not get moved); this node
+ * should be of a node type that allows adding arbitrary child
+ * nodes
*/
- ConsistencyReport check(String[] uuids, boolean recursive, boolean fix) throws RepositoryException;
+ ConsistencyReport check(String[] uuids, boolean recursive, boolean fix, String lostNFoundId)
+ throws RepositoryException;
}
Modified: jackrabbit/branches/2.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/ConcurrentImportTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/ConcurrentImportTest.java?rev=1232414&r1=1232413&r2=1232414&view=diff
==============================================================================
--- jackrabbit/branches/2.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/ConcurrentImportTest.java (original)
+++ jackrabbit/branches/2.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/ConcurrentImportTest.java Tue Jan 17 14:03:58 2012
@@ -215,7 +215,7 @@ public class ConcurrentImportTest extend
private void checkConsistency() throws RepositoryException {
try {
- ConsistencyReport rep = TestHelper.checkConsistency(testRootNode.getSession(), false);
+ ConsistencyReport rep = TestHelper.checkConsistency(testRootNode.getSession(), false, null);
assertEquals("Found broken nodes in repository: " + rep, 0, rep.getItems().size());
} catch (NotExecutableException ex) {
// ignore
Modified: jackrabbit/branches/2.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/ConsistencyCheck.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/ConsistencyCheck.java?rev=1232414&r1=1232413&r2=1232414&view=diff
==============================================================================
--- jackrabbit/branches/2.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/ConsistencyCheck.java (original)
+++ jackrabbit/branches/2.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/ConsistencyCheck.java Tue Jan 17 14:03:58 2012
@@ -39,14 +39,10 @@ public class ConsistencyCheck extends Ab
log.print("running consistency check on repository "
+ getHelper().getRepository());
- ConsistencyReport rep = TestHelper.checkConsistency(testRootNode
- .getSession(), false);
- assertEquals("Found broken nodes in repository: " + rep, 0, rep
- .getItems().size());
+ ConsistencyReport rep = TestHelper.checkConsistency(testRootNode.getSession(), false, null);
+ assertEquals("Found broken nodes in repository: " + rep, 0, rep.getItems().size());
- rep = TestHelper
- .checkVersionStoreConsistency(testRootNode.getSession(), false);
- assertEquals("Found broken nodes in version storage: " + rep, 0, rep
- .getItems().size());
+ rep = TestHelper.checkVersionStoreConsistency(testRootNode.getSession(), false, null);
+ assertEquals("Found broken nodes in version storage: " + rep, 0, rep.getItems().size());
}
}
Modified: jackrabbit/branches/2.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/TestHelper.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/TestHelper.java?rev=1232414&r1=1232413&r2=1232414&view=diff
==============================================================================
--- jackrabbit/branches/2.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/TestHelper.java (original)
+++ jackrabbit/branches/2.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/TestHelper.java Tue Jan 17 14:03:58 2012
@@ -50,13 +50,14 @@ public class TestHelper {
*
* @param session the Session accessing the workspace to be checked
* @param runFix whether to attempt fixup
+ * @param lostNFoundId node to which to attach orphaned nodes (or <code>null</code>)
* @throws RepositoryException if an error occurs while getting the
* workspace with the given name.
* @throws NotExecutableException if the {@link PersistenceManager} does
* not implement {@link ConsistencyChecker}, or if the associated
* {@link Repository} is not a {@link RepositoryImpl}.
*/
- public static ConsistencyReport checkConsistency(Session session, boolean runFix)
+ public static ConsistencyReport checkConsistency(Session session, boolean runFix, String lostNFoundId)
throws NotExecutableException, RepositoryException {
Repository r = session.getRepository();
if (!(r instanceof RepositoryImpl)) {
@@ -68,7 +69,7 @@ public class TestHelper {
if (!(pm instanceof ConsistencyChecker)) {
throw new NotExecutableException();
} else {
- return ((ConsistencyChecker) pm).check(null, true, runFix);
+ return ((ConsistencyChecker) pm).check(null, true, runFix, lostNFoundId);
}
}
}
@@ -78,12 +79,13 @@ public class TestHelper {
*
* @param session the Session accessing the workspace to be checked
* @param runFix whether to attempt fixup
+ * @param lostNFoundId node to which to attach orphaned nodes (or <code>null</code>)
* @throws RepositoryException
* @throws NotExecutableException if the {@link PersistenceManager} does
* not implement {@link ConsistencyChecker}, or if the associated
* {@link Repository} is not a {@link RepositoryImpl}.
*/
- public static ConsistencyReport checkVersionStoreConsistency(Session session, boolean runFix)
+ public static ConsistencyReport checkVersionStoreConsistency(Session session, boolean runFix, String lostNFoundId)
throws NotExecutableException, RepositoryException {
Repository r = session.getRepository();
if (!(r instanceof RepositoryImpl)) {
@@ -95,7 +97,7 @@ public class TestHelper {
if (!(pm instanceof ConsistencyChecker)) {
throw new NotExecutableException();
} else {
- return ((ConsistencyChecker) pm).check(null, true, runFix);
+ return ((ConsistencyChecker) pm).check(null, true, runFix, lostNFoundId);
}
}
}
Modified: jackrabbit/branches/2.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/persistence/AutoFixCorruptNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/persistence/AutoFixCorruptNode.java?rev=1232414&r1=1232413&r2=1232414&view=diff
==============================================================================
--- jackrabbit/branches/2.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/persistence/AutoFixCorruptNode.java (original)
+++ jackrabbit/branches/2.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/persistence/AutoFixCorruptNode.java Tue Jan 17 14:03:58 2012
@@ -76,7 +76,7 @@ public class AutoFixCorruptNode extends
s = openSession(rep, false);
try {
- ConsistencyReport r = TestHelper.checkConsistency(s, false);
+ ConsistencyReport r = TestHelper.checkConsistency(s, false, null);
assertNotNull(r);
assertNotNull(r.getItems());
assertEquals(1, r.getItems().size());
@@ -89,6 +89,53 @@ public class AutoFixCorruptNode extends
}
}
+ public void testOrphan() throws Exception {
+
+ // new repository
+ TransientRepository rep = new TransientRepository(new File(TEST_DIR));
+ Session s = openSession(rep, false);
+
+ try {
+ Node root = s.getRootNode();
+
+ Node parent = root.addNode("parent");
+ Node test = parent.addNode("test");
+ test.addMixin("mix:referenceable");
+
+ String lost = test.getIdentifier();
+
+ Node lnf = root.addNode("lost+found");
+ lnf.addMixin("mix:referenceable");
+ String lnfid = lnf.getIdentifier();
+
+ s.save();
+
+ Node brokenNode = parent;
+ UUID destroy = UUID.fromString(brokenNode.getIdentifier());
+ s.logout();
+
+ destroyBundle(destroy, "workspaces/default");
+
+ s = openSession(rep, false);
+ ConsistencyReport report = TestHelper.checkConsistency(s, false, null);
+ assertTrue("Report should have reported broken nodes", !report.getItems().isEmpty());
+
+ // now retry with lost+found functionality
+ ConsistencyReport report2 = TestHelper.checkConsistency(s, true, lnfid);
+ assertTrue("Report should have reported broken nodes", !report2.getItems().isEmpty());
+
+ s.logout();
+
+ s = openSession(rep, false);
+ Node q = s.getNodeByIdentifier(lost);
+
+ // check the node was moved
+ assertEquals(lnfid, q.getParent().getIdentifier());
+ } finally {
+ s.logout();
+ }
+ }
+
public void testMissingVHR() throws Exception {
// new repository
@@ -120,7 +167,7 @@ public class AutoFixCorruptNode extends
s = openSession(rep, false);
- ConsistencyReport report = TestHelper.checkVersionStoreConsistency(s, false);
+ ConsistencyReport report = TestHelper.checkVersionStoreConsistency(s, false, null);
assertTrue("Report should have reported broken nodes", !report.getItems().isEmpty());
try {
@@ -158,12 +205,12 @@ public class AutoFixCorruptNode extends
// now redo after running fixup on versioning storage
s = openSession(rep, false);
- report = TestHelper.checkVersionStoreConsistency(s, true);
+ report = TestHelper.checkVersionStoreConsistency(s, true, null);
assertTrue("Report should have reported broken nodes", !report.getItems().isEmpty());
int reportitems = report.getItems().size();
// problems should now be fixed
- report = TestHelper.checkVersionStoreConsistency(s, false);
+ report = TestHelper.checkVersionStoreConsistency(s, false, null);
assertTrue("Some problems should have been fixed but are not: " + report, report.getItems().size() < reportitems);
// get a fresh session
@@ -235,7 +282,7 @@ public class AutoFixCorruptNode extends
s = openSession(rep, false);
- ConsistencyReport report = TestHelper.checkVersionStoreConsistency(s, false);
+ ConsistencyReport report = TestHelper.checkVersionStoreConsistency(s, false, null);
assertTrue("Report should have reported broken nodes", !report.getItems().isEmpty());
try {
@@ -273,12 +320,12 @@ public class AutoFixCorruptNode extends
// now redo after running fixup on versioning storage
s = openSession(rep, false);
- report = TestHelper.checkVersionStoreConsistency(s, true);
+ report = TestHelper.checkVersionStoreConsistency(s, true, null);
assertTrue("Report should have reported broken nodes", !report.getItems().isEmpty());
int reportitems = report.getItems().size();
// problems should now be fixed
- report = TestHelper.checkVersionStoreConsistency(s, false);
+ report = TestHelper.checkVersionStoreConsistency(s, false, null);
assertTrue("Some problems should have been fixed but are not: " + report, report.getItems().size() < reportitems);
test = s.getRootNode().getNode("test");
@@ -351,7 +398,7 @@ public class AutoFixCorruptNode extends
s = openSession(rep, false);
- ConsistencyReport report = TestHelper.checkVersionStoreConsistency(s, false);
+ ConsistencyReport report = TestHelper.checkVersionStoreConsistency(s, false, null);
assertTrue("Report should have reported broken nodes", !report.getItems().isEmpty());
s.logout();
@@ -426,7 +473,7 @@ public class AutoFixCorruptNode extends
s = openSession(rep, false);
- ConsistencyReport report = TestHelper.checkVersionStoreConsistency(s, true);
+ ConsistencyReport report = TestHelper.checkVersionStoreConsistency(s, true, null);
assertTrue("Report should have reported broken nodes", !report.getItems().isEmpty());
s.logout();