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);