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 2017/05/12 07:08:21 UTC
svn commit: r1794936 - in
/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene:
IndexDefinition.java LuceneIndexEditorContext.java
LuceneIndexInfoProvider.java
Author: chetanm
Date: Fri May 12 07:08:21 2017
New Revision: 1794936
URL: http://svn.apache.org/viewvc?rev=1794936&view=rev
Log:
OAK-6192 - Lucene IndexInfoProvider implementation
Also provide info on last updated time. This is the checkpoint time as per OAK-6194
Modified:
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorContext.java
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexInfoProvider.java
Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java?rev=1794936&r1=1794935&r2=1794936&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java Fri May 12 07:08:21 2017
@@ -144,6 +144,13 @@ public final class IndexDefinition imple
static final String STATUS_NODE = ":status";
/**
+ * Property on status node which refers to the date when the index was lastUpdated
+ * This may not be the same time as when index was closed but the time of checkpoint
+ * upto which index is upto date (OAK-6194)
+ */
+ static final String STATUS_LAST_UPDATED = "lastUpdated";
+
+ /**
* Meta property which provides the unique id
*/
static final String PROP_UID = "uid";
Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorContext.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorContext.java?rev=1794936&r1=1794935&r2=1794936&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorContext.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorContext.java Fri May 12 07:08:21 2017
@@ -23,6 +23,7 @@ import javax.annotation.Nullable;
import org.apache.jackrabbit.oak.api.CommitFailedException;
import org.apache.jackrabbit.oak.api.Type;
+import org.apache.jackrabbit.oak.plugins.index.IndexConstants;
import org.apache.jackrabbit.oak.plugins.index.IndexUpdateCallback;
import org.apache.jackrabbit.oak.plugins.index.IndexingContext;
import org.apache.jackrabbit.oak.plugins.index.lucene.binary.BinaryTextExtractor;
@@ -30,6 +31,7 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.plugins.index.lucene.util.FacetsConfigProvider;
import org.apache.jackrabbit.oak.plugins.index.lucene.writer.LuceneIndexWriter;
import org.apache.jackrabbit.oak.plugins.index.lucene.writer.LuceneIndexWriterFactory;
+import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.apache.jackrabbit.oak.spi.state.NodeState;
import org.apache.jackrabbit.oak.spi.state.NodeStateUtils;
@@ -139,7 +141,7 @@ public class LuceneIndexEditorContext im
//as to make IndexTracker detect changes when index
//is stored in file system
NodeBuilder status = definitionBuilder.child(":status");
- status.setProperty("lastUpdated", ISO8601.format(currentTime), Type.DATE);
+ status.setProperty(IndexDefinition.STATUS_LAST_UPDATED, getUpdatedTime(currentTime), Type.DATE);
status.setProperty("indexedNodes", indexedNodes);
PERF_LOGGER.end(start, -1, "Overall Closed IndexWriter for directory {}", definition);
@@ -149,6 +151,16 @@ public class LuceneIndexEditorContext im
}
}
}
+
+ private String getUpdatedTime(Calendar currentTime) {
+ CommitInfo info = getIndexingContext().getCommitInfo();
+ String checkpointTime = (String) info.getInfo().get(IndexConstants.CHECKPOINT_CREATION_TIME);
+ if (checkpointTime != null) {
+ return checkpointTime;
+ }
+ return ISO8601.format(currentTime);
+ }
+
/** Only set for testing */
static void setClock(Clock c) {
checkNotNull(c);
Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexInfoProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexInfoProvider.java?rev=1794936&r1=1794935&r2=1794936&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexInfoProvider.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexInfoProvider.java Fri May 12 07:08:21 2017
@@ -39,6 +39,7 @@ import org.apache.jackrabbit.oak.spi.sta
import org.apache.jackrabbit.oak.spi.state.NodeStateUtils;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
import org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder;
+import org.apache.jackrabbit.util.ISO8601;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.store.Directory;
@@ -86,6 +87,7 @@ public class LuceneIndexInfoProvider imp
LuceneIndexInfo info = new LuceneIndexInfo(indexPath);
computeSize(idxState, info);
+ computeLastUpdatedTime(idxState, info);
computeAsyncIndexInfo(idxState, indexPath, info);
return info;
}
@@ -122,12 +124,23 @@ public class LuceneIndexInfoProvider imp
}
}
+ private static void computeLastUpdatedTime(NodeState idxState, LuceneIndexInfo info) {
+ NodeState status = idxState.getChildNode(IndexDefinition.STATUS_NODE);
+ if (status.exists()){
+ PropertyState updatedTime = status.getProperty(IndexDefinition.STATUS_LAST_UPDATED);
+ if (updatedTime != null) {
+ info.lastUpdatedTime = ISO8601.parse(updatedTime.getValue(Type.DATE)).getTimeInMillis();
+ }
+ }
+ }
+
private static class LuceneIndexInfo implements IndexInfo {
String indexPath;
String asyncName;
long numEntries;
long size;
long indexedUptoTime;
+ long lastUpdatedTime;
public LuceneIndexInfo(String indexPath) {
this.indexPath = indexPath;
@@ -150,7 +163,7 @@ public class LuceneIndexInfoProvider imp
@Override
public long getLastUpdatedTime() {
- return 0; //TODO To be computed
+ return lastUpdatedTime;
}
@Override