You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by mr...@apache.org on 2017/02/23 21:06:25 UTC
svn commit: r1784204 -
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java
Author: mreutegg
Date: Thu Feb 23 21:06:24 2017
New Revision: 1784204
URL: http://svn.apache.org/viewvc?rev=1784204&view=rev
Log:
OAK-5704: VersionGC: reset _deletedOnce for documents that have been resurrected
Catch IllegalArgumentException when parsing an id/modified entry
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java?rev=1784204&r1=1784203&r2=1784204&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java Thu Feb 23 21:06:24 2017
@@ -560,7 +560,13 @@ public class VersionGarbageCollector {
while (idListItr.hasNext() && !cancel.get()) {
Map<String, Map<Key, Condition>> deletionBatch = Maps.newLinkedHashMap();
for (String s : idListItr.next()) {
- Map.Entry<String, Long> parsed = parseEntry(s);
+ Map.Entry<String, Long> parsed;
+ try {
+ parsed = parseEntry(s);
+ } catch (IllegalArgumentException e) {
+ log.warn("Invalid _modified suffix for {}", s);
+ continue;
+ }
deletionBatch.put(parsed.getKey(), singletonMap(KEY_MODIFIED, newEqualsCondition(parsed.getValue())));
}
@@ -603,8 +609,8 @@ public class VersionGarbageCollector {
int updateCount = 0;
for (String s : resurrectedDocuments) {
if (!cancel.get()) {
- Map.Entry<String, Long> parsed = parseEntry(s);
try {
+ Map.Entry<String, Long> parsed = parseEntry(s);
UpdateOp up = new UpdateOp(parsed.getKey(), false);
up.equals(MODIFIED_IN_SECS, parsed.getValue());
up.remove(NodeDocument.DELETED_ONCE);
@@ -612,9 +618,10 @@ public class VersionGarbageCollector {
if (r != null) {
updateCount += 1;
}
- }
- catch (DocumentStoreException ex) {
- log.warn("updating {}: {}", parsed.getKey(), ex.getMessage());
+ } catch (IllegalArgumentException ex) {
+ log.warn("Invalid _modified suffix for {}", s);
+ } catch (DocumentStoreException ex) {
+ log.warn("updating {}: {}", s, ex.getMessage());
}
}
}