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 2016/02/27 15:50:50 UTC
svn commit: r1732647 -
/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorContext.java
Author: catholicon
Date: Sat Feb 27 14:50:50 2016
New Revision: 1732647
URL: http://svn.apache.org/viewvc?rev=1732647&view=rev
Log:
OAK-4070: Refactor LuceneIndexEditorContext to allow for switchable clock for testing
Modified:
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorContext.java
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=1732647&r1=1732646&r2=1732647&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 Sat Feb 27 14:50:50 2016
@@ -37,6 +37,7 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.plugins.index.lucene.util.SuggestHelper;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.apache.jackrabbit.oak.stats.Clock;
import org.apache.jackrabbit.oak.util.PerfLogger;
import org.apache.jackrabbit.util.ISO8601;
import org.apache.lucene.analysis.Analyzer;
@@ -156,6 +157,10 @@ public class LuceneIndexEditorContext {
*/
private Set<MediaType> supportedMediaTypes;
+ //Intentionally static, so that it can be set without passing around clock objects
+ //Set for testing ONLY
+ private static Clock clock = Clock.SIMPLE;
+
LuceneIndexEditorContext(NodeState root, NodeBuilder definition, IndexUpdateCallback updateCallback,
@Nullable IndexCopier indexCopier, ExtractedTextCache extractedTextCache,
IndexAugmentorFactory augmentorFactory) {
@@ -260,7 +265,7 @@ public class LuceneIndexEditorContext {
//as to make IndexTracker detect changes when index
//is stored in file system
NodeBuilder status = definitionBuilder.child(":status");
- status.setProperty("lastUpdated", ISO8601.format(Calendar.getInstance()), Type.DATE);
+ status.setProperty("lastUpdated", ISO8601.format(getCalendar()), Type.DATE);
status.setProperty("indexedNodes",indexedNodes);
PERF_LOGGER.end(start, -1, "Overall Closed IndexWriter for directory {}", definition);
@@ -285,7 +290,7 @@ public class LuceneIndexEditorContext {
Calendar suggesterLastUpdatedTime = ISO8601.parse(suggesterLastUpdatedValue.getValue(Type.DATE));
int updateFrequency = definition.getSuggesterUpdateFrequencyMinutes();
suggesterLastUpdatedTime.add(Calendar.MINUTE, updateFrequency);
- if (Calendar.getInstance().after(suggesterLastUpdatedTime)) {
+ if (getCalendar().after(suggesterLastUpdatedTime)) {
updateSuggester = true;
}
} else {
@@ -297,7 +302,7 @@ public class LuceneIndexEditorContext {
final OakDirectory suggestDirectory = new OakDirectory(definitionBuilder, ":suggest-data", definition, false);
try {
SuggestHelper.updateSuggester(suggestDirectory, analyzer, reader);
- suggesterStatus.setProperty("lastUpdated", ISO8601.format(Calendar.getInstance()), Type.DATE);
+ suggesterStatus.setProperty("lastUpdated", ISO8601.format(getCalendar()), Type.DATE);
} catch (Throwable e) {
log.warn("could not update suggester", e);
} finally {
@@ -308,6 +313,18 @@ public class LuceneIndexEditorContext {
}
}
+ /** Only set for testing */
+ static void setClock(Clock c) {
+ checkNotNull(c);
+ clock = c;
+ }
+
+ static private Calendar getCalendar() {
+ Calendar ret = Calendar.getInstance();
+ ret.setTime(clock.getDate());
+ return ret;
+ }
+
public void enableReindexMode(){
reindex = true;
IndexFormatVersion version = IndexDefinition.determineVersionForFreshIndex(definitionBuilder);