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 ch...@apache.org on 2014/04/02 08:13:02 UTC
svn commit: r1583889 - in
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document:
Revision.java VersionGarbageCollector.java util/Utils.java
Author: chetanm
Date: Wed Apr 2 06:13:02 2014
New Revision: 1583889
URL: http://svn.apache.org/r1583889
Log:
OAK-1295 - Recovery for missing _lastRev updates (WIP)
Moving common methods to Utils
-- Moving timestampToString to Utils
-- Adding closeIfCloseable to close objects of types closeable.
-- Remove unused methods
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Revision.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/VersionGarbageCollector.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/Utils.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Revision.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Revision.java?rev=1583889&r1=1583888&r2=1583889&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Revision.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Revision.java Wed Apr 2 06:13:02 2014
@@ -16,7 +16,6 @@
*/
package org.apache.jackrabbit.oak.plugins.document;
-import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
@@ -24,6 +23,7 @@ import java.util.TreeSet;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
+import org.apache.jackrabbit.oak.plugins.document.util.Utils;
import org.apache.jackrabbit.oak.stats.Clock;
/**
* A revision.
@@ -216,13 +216,6 @@ public class Revision {
return new Revision(timestamp, c, clusterId, isBranch);
}
- /**
- * Provides a readable string for given timestamp
- */
- public static String timestampToString(long timestamp){
- return (new Timestamp(timestamp) + "00").substring(0, 23);
- }
-
@Override
public String toString() {
return toStringBuilder(new StringBuilder()).toString();
@@ -260,7 +253,7 @@ public class Revision {
buff.append("revision: \"").append(toString()).append("\"");
buff.append(", clusterId: ").append(clusterId);
buff.append(", time: \"").
- append(timestampToString(timestamp)).
+ append(Utils.timestampToString(timestamp)).
append("\"");
if (counter > 0) {
buff.append(", counter: ").append(counter);
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=1583889&r1=1583888&r2=1583889&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 Wed Apr 2 06:13:02 2014
@@ -19,8 +19,6 @@
package org.apache.jackrabbit.oak.plugins.document;
-import java.io.Closeable;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
@@ -33,6 +31,7 @@ import com.google.common.base.Stopwatch;
import com.google.common.collect.ImmutableList;
import org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentStore;
import org.apache.jackrabbit.oak.plugins.document.mongo.MongoVersionGCSupport;
+import org.apache.jackrabbit.oak.plugins.document.util.Utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -70,14 +69,14 @@ public class VersionGarbageCollector {
final Revision headRevision = nodeStore.getHeadRevision();
log.info("Starting revision garbage collection. Revisions older than [{}] would be " +
- "removed",Revision.timestampToString(oldestRevTimeStamp));
+ "removed", Utils.timestampToString(oldestRevTimeStamp));
//Check for any registered checkpoint which prevent the GC from running
Revision checkpoint = nodeStore.getCheckpoints().getOldestRevisionToKeep();
if (checkpoint != null && checkpoint.getTimestamp() < oldestRevTimeStamp) {
log.info("Ignoring version gc as valid checkpoint [{}] found while " +
"need to collect versions older than [{}]", checkpoint.toReadableString(),
- Revision.timestampToString(oldestRevTimeStamp)
+ Utils.timestampToString(oldestRevTimeStamp)
);
stats.ignoredGCDueToCheckPoint = true;
return stats;
@@ -114,7 +113,7 @@ public class VersionGarbageCollector {
}
}
} finally {
- close(itr);
+ Utils.closeIfCloseable(itr);
}
if(log.isDebugEnabled()) {
@@ -141,14 +140,4 @@ public class VersionGarbageCollector {
'}';
}
}
-
- private void close(Object obj){
- if(obj instanceof Closeable){
- try{
- ((Closeable) obj).close();
- } catch (IOException e) {
- log.warn("Error occurred while closing", e);
- }
- }
- }
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/Utils.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/Utils.java?rev=1583889&r1=1583888&r2=1583889&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/Utils.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/Utils.java Wed Apr 2 06:13:02 2014
@@ -16,9 +16,12 @@
*/
package org.apache.jackrabbit.oak.plugins.document.util;
+import java.io.Closeable;
+import java.io.IOException;
import java.nio.charset.Charset;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
+import java.sql.Timestamp;
import java.util.Comparator;
import java.util.HashSet;
import java.util.Map;
@@ -36,6 +39,8 @@ import org.apache.commons.codec.binary.H
import org.apache.jackrabbit.oak.commons.PathUtils;
import org.apache.jackrabbit.oak.plugins.document.Revision;
import org.bson.types.ObjectId;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import static com.google.common.base.Preconditions.checkNotNull;
@@ -43,6 +48,7 @@ import static com.google.common.base.Pre
* Utility methods.
*/
public class Utils {
+ private static final Logger LOG = LoggerFactory.getLogger(Utils.class);
/**
* Approximate length of a Revision string.
@@ -99,14 +105,6 @@ public class Utils {
return depth;
}
- public static <K, V> Map<K, V> newMap() {
- return new TreeMap<K, V>();
- }
-
- public static <E> Set<E> newSet() {
- return new HashSet<E>();
- }
-
@SuppressWarnings("unchecked")
public static int estimateMemoryUsage(Map<?, Object> map) {
if (map == null) {
@@ -381,4 +379,27 @@ public class Utils {
return checkNotNull(tag).startsWith("c-") ?
Revision.fromString(tag.substring(2)) : rev;
}
+
+ /**
+ * Closes the obj its of type {@link java.io.Closeable}. It is mostly
+ * used to close Iterator/Iterables which are backed by say DBCursor
+ *
+ * @param obj object to close
+ */
+ public static void closeIfCloseable(Object obj){
+ if(obj instanceof Closeable){
+ try{
+ ((Closeable) obj).close();
+ } catch (IOException e) {
+ LOG.warn("Error occurred while closing {}", obj, e);
+ }
+ }
+ }
+
+ /**
+ * Provides a readable string for given timestamp
+ */
+ public static String timestampToString(long timestamp){
+ return (new Timestamp(timestamp) + "00").substring(0, 23);
+ }
}