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 ca...@apache.org on 2017/06/06 06:45:20 UTC
svn commit: r1797739 - in /jackrabbit/oak/trunk:
oak-api/src/main/java/org/apache/jackrabbit/oak/api/jmx/
oak-core-spi/src/main/java/org/apache/jackrabbit/oak/commons/jmx/
oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/
oak-segment-t...
Author: catholicon
Date: Tue Jun 6 06:45:20 2017
New Revision: 1797739
URL: http://svn.apache.org/viewvc?rev=1797739&view=rev
Log:
OAK-6227: There should be a way to retrieve oldest timestamp to keep from nodestores
Modified:
jackrabbit/oak/trunk/oak-api/src/main/java/org/apache/jackrabbit/oak/api/jmx/CheckpointMBean.java
jackrabbit/oak/trunk/oak-api/src/main/java/org/apache/jackrabbit/oak/api/jmx/package-info.java
jackrabbit/oak/trunk/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/commons/jmx/AbstractCheckpointMBean.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentCheckpointMBean.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentCheckpointMBean.java
Modified: jackrabbit/oak/trunk/oak-api/src/main/java/org/apache/jackrabbit/oak/api/jmx/CheckpointMBean.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-api/src/main/java/org/apache/jackrabbit/oak/api/jmx/CheckpointMBean.java?rev=1797739&r1=1797738&r2=1797739&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-api/src/main/java/org/apache/jackrabbit/oak/api/jmx/CheckpointMBean.java (original)
+++ jackrabbit/oak/trunk/oak-api/src/main/java/org/apache/jackrabbit/oak/api/jmx/CheckpointMBean.java Tue Jun 6 06:45:20 2017
@@ -19,6 +19,7 @@
package org.apache.jackrabbit.oak.api.jmx;
+import javax.management.openmbean.CompositeData;
import javax.management.openmbean.TabularData;
import aQute.bnd.annotation.ProviderType;
@@ -38,6 +39,11 @@ public interface CheckpointMBean {
TabularData listCheckpoints();
/**
+ * @return creation information about oldest checkpoint.
+ */
+ CompositeData getOldestCheckpointCreationTime();
+
+ /**
* Create a new checkpoint with the given {@code lifetime}.
* See {@code org.apache.jackrabbit.oak.spi.state.NodeStore#checkpoint}
* @param lifetime
Modified: jackrabbit/oak/trunk/oak-api/src/main/java/org/apache/jackrabbit/oak/api/jmx/package-info.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-api/src/main/java/org/apache/jackrabbit/oak/api/jmx/package-info.java?rev=1797739&r1=1797738&r2=1797739&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-api/src/main/java/org/apache/jackrabbit/oak/api/jmx/package-info.java (original)
+++ jackrabbit/oak/trunk/oak-api/src/main/java/org/apache/jackrabbit/oak/api/jmx/package-info.java Tue Jun 6 06:45:20 2017
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-@Version("4.4.2")
+@Version("4.5.0")
@Export(optional = "provide:=true")
package org.apache.jackrabbit.oak.api.jmx;
Modified: jackrabbit/oak/trunk/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/commons/jmx/AbstractCheckpointMBean.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/commons/jmx/AbstractCheckpointMBean.java?rev=1797739&r1=1797738&r2=1797739&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/commons/jmx/AbstractCheckpointMBean.java (original)
+++ jackrabbit/oak/trunk/oak-core-spi/src/main/java/org/apache/jackrabbit/oak/commons/jmx/AbstractCheckpointMBean.java Tue Jun 6 06:45:20 2017
@@ -21,18 +21,22 @@ package org.apache.jackrabbit.oak.common
import static javax.management.openmbean.SimpleType.STRING;
+import java.util.Date;
import java.util.Map;
import java.util.Map.Entry;
import javax.management.openmbean.ArrayType;
+import javax.management.openmbean.CompositeData;
import javax.management.openmbean.CompositeDataSupport;
import javax.management.openmbean.CompositeType;
import javax.management.openmbean.OpenDataException;
import javax.management.openmbean.OpenType;
+import javax.management.openmbean.SimpleType;
import javax.management.openmbean.TabularData;
import javax.management.openmbean.TabularDataSupport;
import javax.management.openmbean.TabularType;
+import com.google.common.collect.Maps;
import org.apache.jackrabbit.oak.api.jmx.CheckpointMBean;
/**
@@ -88,6 +92,26 @@ public abstract class AbstractCheckpoint
} catch (OpenDataException e) {
throw new IllegalStateException(e);
}
+ }
+
+ protected abstract long getOldestCheckpointCreationTimestamp();
+
+ @Override
+ public CompositeData getOldestCheckpointCreationTime() {
+ try {
+ Map<String, Object> values = Maps.newHashMap();
+ long timestamp = getOldestCheckpointCreationTimestamp();
+ values.put("timestamp", timestamp);
+ values.put("time", new Date(timestamp));
+ CompositeDataSupport csd = new CompositeDataSupport(
+ new CompositeType("OldestCheckpointTime", "Creation time of oldest checkpoint",
+ new String[]{"timestamp", "time"}, new String[]{"epoch timestamp", "human readable date"},
+ new OpenType[]{SimpleType.LONG, SimpleType.DATE}), values);
+
+ return csd;
+ } catch (OpenDataException e) {
+ throw new IllegalStateException(e);
+ }
}
/**
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentCheckpointMBean.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentCheckpointMBean.java?rev=1797739&r1=1797738&r2=1797739&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentCheckpointMBean.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentCheckpointMBean.java Tue Jun 6 06:45:20 2017
@@ -55,6 +55,18 @@ public class DocumentCheckpointMBean ext
}
@Override
+ protected long getOldestCheckpointCreationTimestamp() {
+ Map<Revision, Info> checkpoints = store.getCheckpoints().getCheckpoints();
+
+ long minTimestamp = Long.MAX_VALUE;
+ for (Entry<Revision, Info> checkpoint : checkpoints.entrySet()) {
+ minTimestamp = Math.min(minTimestamp, checkpoint.getKey().getTimestamp());
+ }
+
+ return (minTimestamp==Long.MAX_VALUE)?0:minTimestamp;
+ }
+
+ @Override
public String createCheckpoint(long lifetime) {
return store.checkpoint(lifetime);
}
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentCheckpointMBean.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentCheckpointMBean.java?rev=1797739&r1=1797738&r2=1797739&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentCheckpointMBean.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentCheckpointMBean.java Tue Jun 6 06:45:20 2017
@@ -51,6 +51,19 @@ public class SegmentCheckpointMBean exte
}
}
+ @Override
+ protected long getOldestCheckpointCreationTimestamp() {
+ long minTimestamp = Long.MAX_VALUE;
+ for (ChildNodeEntry cne : store.getCheckpoints().getChildNodeEntries()) {
+ NodeState checkpoint = cne.getNodeState();
+ PropertyState p = checkpoint.getProperty("created");
+ if (p != null) {
+ minTimestamp = Math.min(minTimestamp, p.getValue(Type.LONG));
+ }
+ }
+ return (minTimestamp==Long.MAX_VALUE)?0:minTimestamp;
+ }
+
private static String getDate(NodeState checkpoint, String name) {
PropertyState p = checkpoint.getProperty(name);
if (p == null) {