You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by re...@apache.org on 2017/03/10 18:40:51 UTC
svn commit: r1786413 - in /jackrabbit/branches/2.4: ./
jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryChecker.java
jackrabbit-core/src/test/java/org/apache/jackrabbit/core/persistence/AutoFixCorruptNode.java
Author: reschke
Date: Fri Mar 10 18:40:51 2017
New Revision: 1786413
URL: http://svn.apache.org/viewvc?rev=1786413&view=rev
Log:
JCR-4118: RepositoryChecker creates invalid node names (ported to 2.4)
create valid names / do sanity check in test case
Modified:
jackrabbit/branches/2.4/ (props changed)
jackrabbit/branches/2.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryChecker.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 Fri Mar 10 18:40:51 2017
@@ -1,3 +1,3 @@
/jackrabbit/branches/JCR-2272:1173165-1176545
/jackrabbit/sandbox/JCR-2415-lucene-3.0:1060860-1064038
-/jackrabbit/trunk:1221447,1221579,1221593,1221789,1221818,1225179,1225191,1225196,1225207,1225525,1225528,1226452,1226472,1226515,1226750,1226863,1227171,1227240,1227590,1227593,1227615,1228058,1228149,1228155,1228160,1230507,1230681,1230688,1231204,1232035,1232100,1232404,1232831,1232920,1232922,1233069,1233344,1233446,1233468,1233471,1233544,1234807,1235192,1235375,1235423,1236709,1236775,1236819-1236821,1240053,1241461,1242775,1245443,1291424,1296202,1296226,1297526,1298428,1301046,1301397,1302401,1303438,1304323,1304382,1306337,1307456,1309908,1311861,1324713,1327180,1327432,1327926,1329198,1334998,1335017,1335030,1336017,1336252,1338172,1341373,1346045,1347624,1348860,1349185,1352440,1352791,1353920,1354499,1358543,1360013,1360571,1361941,1362796,1362924,1367057,1368796,1399576,1400843,1400935,1403408,1403768,1415093,1415574,1416387,1416863,1418236,1437374,1437384,1437618,1437963,1438158,1439346,1439797,1444755,1445122,1461064,1461137,1461613,1462115,1462153,1462205,1462211,146
6060,1466085,1466938,1467255,1467363,1469312,1469799,1469892,1469940,1470573,1471286,1475718,1478684,1479518,1487803,1497492,1498840,1498850,1499285,1505795,1505907,1505942,1506594,1508053,1509101,1517602,1517627,1517711,1519376,1526945,1530005,1535539,1537027,1555885,1556248,1582373,1603934,1634584,1680757,1709811,1729382,1732436,1758600,1759865,1761679,1761909,1762422,1763558,1766398,1771741,1773591,1779166,1779460,1780208
+/jackrabbit/trunk:1221447,1221579,1221593,1221789,1221818,1225179,1225191,1225196,1225207,1225525,1225528,1226452,1226472,1226515,1226750,1226863,1227171,1227240,1227590,1227593,1227615,1228058,1228149,1228155,1228160,1230507,1230681,1230688,1231204,1232035,1232100,1232404,1232831,1232920,1232922,1233069,1233344,1233446,1233468,1233471,1233544,1234807,1235192,1235375,1235423,1236709,1236775,1236819-1236821,1240053,1241461,1242775,1245443,1291424,1296202,1296226,1297526,1298428,1301046,1301397,1302401,1303438,1304323,1304382,1306337,1307456,1309908,1311861,1324713,1327180,1327432,1327926,1329198,1334998,1335017,1335030,1336017,1336252,1338172,1341373,1346045,1347624,1348860,1349185,1352440,1352791,1353920,1354499,1358543,1360013,1360571,1361941,1362796,1362924,1367057,1368796,1399576,1400843,1400935,1403408,1403768,1415093,1415574,1416387,1416863,1418236,1437374,1437384,1437618,1437963,1438158,1439346,1439797,1444755,1445122,1461064,1461137,1461613,1462115,1462153,1462205,1462211,146
6060,1466085,1466938,1467255,1467363,1469312,1469799,1469892,1469940,1470573,1471286,1475718,1478684,1479518,1487803,1497492,1498840,1498850,1499285,1505795,1505907,1505942,1506594,1508053,1509101,1517602,1517627,1517711,1519376,1526945,1530005,1535539,1537027,1555885,1556248,1582373,1603934,1634584,1680757,1709811,1729382,1732436,1758600,1759865,1761679,1761909,1762422,1763558,1766398,1771741,1773591,1779166,1779460,1780208,1786325
Modified: jackrabbit/branches/2.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryChecker.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryChecker.java?rev=1786413&r1=1786412&r2=1786413&view=diff
==============================================================================
--- jackrabbit/branches/2.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryChecker.java (original)
+++ jackrabbit/branches/2.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryChecker.java Fri Mar 10 18:40:51 2017
@@ -28,6 +28,7 @@ import static org.apache.jackrabbit.spi.
import java.util.Calendar;
import java.util.HashSet;
import java.util.Set;
+import java.util.TimeZone;
import javax.jcr.ItemNotFoundException;
import javax.jcr.RepositoryException;
@@ -47,7 +48,6 @@ import org.apache.jackrabbit.core.versio
import org.apache.jackrabbit.spi.Name;
import org.apache.jackrabbit.spi.NameFactory;
import org.apache.jackrabbit.spi.commons.name.NameFactoryImpl;
-import org.apache.jackrabbit.util.ISO8601;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -304,9 +304,10 @@ class RepositoryChecker {
modifiedParent = new NodeState(vhrParentState, NodeState.STATUS_EXISTING_MODIFIED, true);
}
- Calendar now = Calendar.getInstance();
- String appendme = " (disconnected by RepositoryChecker on "
- + ISO8601.format(now) + ")";
+ Calendar now = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
+ String appendme = String.format(" (disconnected by RepositoryChecker on %04d%02d%02dT%02d%02d%02dZ)",
+ now.get(Calendar.YEAR), now.get(Calendar.MONTH) + 1, now.get(Calendar.DAY_OF_MONTH),
+ now.get(Calendar.HOUR_OF_DAY), now.get(Calendar.MINUTE), now.get(Calendar.SECOND));
modifiedParent.renameChildNodeEntry(vhid,
nf.create(vhrname.getNamespaceURI(), vhrname.getLocalName() + appendme));
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=1786413&r1=1786412&r2=1786413&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 Fri Mar 10 18:40:51 2017
@@ -30,14 +30,15 @@ import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
-
-import junit.framework.TestCase;
+import javax.jcr.nodetype.ConstraintViolationException;
import org.apache.commons.io.FileUtils;
import org.apache.jackrabbit.core.TestHelper;
import org.apache.jackrabbit.core.TransientRepository;
import org.apache.jackrabbit.core.persistence.check.ConsistencyReport;
+import junit.framework.TestCase;
+
/**
* Tests that a corrupt node is automatically fixed.
*/
@@ -123,7 +124,6 @@ public class AutoFixCorruptNode extends
// 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);
@@ -265,9 +265,11 @@ public class AutoFixCorruptNode extends
Node test = root.addNode("test", "nt:file");
test.addNode("jcr:content", "nt:unstructured");
test.addMixin("mix:versionable");
-
s.save();
+ s.getWorkspace().getVersionManager().checkout(test.getPath());
+ s.getWorkspace().getVersionManager().checkin(test.getPath());
+
Node vhr = s.getWorkspace().getVersionManager()
.getVersionHistory(test.getPath());
@@ -354,6 +356,7 @@ public class AutoFixCorruptNode extends
s.getWorkspace().getVersionManager().checkout(test.getPath());
s.getWorkspace().getVersionManager().checkin(test.getPath());
+ validateDisconnectedVHR(oldVHR);
} finally {
s.logout();
System.setProperty("org.apache.jackrabbit.version.recovery",
@@ -435,6 +438,8 @@ public class AutoFixCorruptNode extends
// try a checkout / checkin
s.getWorkspace().getVersionManager().checkout(test.getPath());
s.getWorkspace().getVersionManager().checkin(test.getPath());
+
+ validateDisconnectedVHR(oldVHR);
} finally {
s.logout();
System.setProperty("org.apache.jackrabbit.version.recovery",
@@ -575,4 +580,27 @@ public class AutoFixCorruptNode extends
}
return rep.login(cred);
}
+
+ // JCR-4118: check that the old VHR can be retrieved
+ private void validateDisconnectedVHR(Node oldVHR) throws RepositoryException {
+ Session s = oldVHR.getSession();
+ Node old = s.getNode(oldVHR.getPath());
+ assertNotNull("disconnected VHR should be accessible", old);
+
+ assertEquals("nt:versionHistory", old.getPrimaryNodeType().getName());
+ NodeIterator ni = old.getNodes();
+ while (ni.hasNext()) {
+ Node n = ni.nextNode();
+ String type = n.getPrimaryNodeType().getName();
+ assertTrue("node type of VHR child nodes should be nt:version or nt:versionLabels",
+ "nt:version".equals(type) || "nt:versionLabels".equals(type));
+ }
+
+ try {
+ old.remove();
+ s.save();
+ fail("removal of node using remove() should throw because it's in the versioning workspace");
+ } catch (ConstraintViolationException expected) {
+ }
+ }
}