Skip to content

Commit 5c0cbfc

Browse files
authored
OAK-11356 - Code cleanups to indexing module (#1954)
1 parent 651b6d7 commit 5c0cbfc

File tree

11 files changed

+51
-66
lines changed

11 files changed

+51
-66
lines changed

oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/CompositeIndexEditorProvider.java

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,21 +34,13 @@
3434
public class CompositeIndexEditorProvider implements IndexEditorProvider {
3535

3636
@NotNull
37-
public static IndexEditorProvider compose(
38-
@NotNull Collection<IndexEditorProvider> providers) {
37+
public static IndexEditorProvider compose(@NotNull Collection<IndexEditorProvider> providers) {
3938
if (providers.isEmpty()) {
40-
return new IndexEditorProvider() {
41-
@Override
42-
public Editor getIndexEditor(
43-
@NotNull String type, @NotNull NodeBuilder builder, @NotNull NodeState root, @NotNull IndexUpdateCallback callback) {
44-
return null;
45-
}
46-
};
39+
return (type, builder, root, callback) -> null;
4740
} else if (providers.size() == 1) {
4841
return providers.iterator().next();
4942
} else {
50-
return new CompositeIndexEditorProvider(
51-
List.copyOf(providers));
43+
return new CompositeIndexEditorProvider(List.copyOf(providers));
5244
}
5345
}
5446

@@ -66,7 +58,7 @@ public CompositeIndexEditorProvider(IndexEditorProvider... providers) {
6658
public Editor getIndexEditor(
6759
@NotNull String type, @NotNull NodeBuilder builder, @NotNull NodeState root, @NotNull IndexUpdateCallback callback)
6860
throws CommitFailedException {
69-
List<Editor> indexes = new ArrayList<>();
61+
List<Editor> indexes = new ArrayList<>(providers.size());
7062
for (IndexEditorProvider provider : providers) {
7163
Editor e = provider.getIndexEditor(type, builder, root, callback);
7264
if (e != null) {

oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexUtil.java

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
package org.apache.jackrabbit.oak.plugins.index.property;
2121

22-
import java.io.UnsupportedEncodingException;
2322
import java.net.URLEncoder;
2423
import java.nio.charset.StandardCharsets;
2524
import java.util.HashSet;
@@ -44,22 +43,18 @@ public static Set<String> encode(Set<String> set) {
4443
if (set == null || set.isEmpty()) {
4544
return set;
4645
}
47-
try {
48-
Set<String> values = new HashSet<String>();
49-
for(String v : set) {
46+
Set<String> values = new HashSet<>();
47+
for (String v : set) {
48+
if (v.isEmpty()) {
49+
v = EMPTY_TOKEN;
50+
} else {
5051
if (v.length() > MAX_STRING_LENGTH) {
5152
v = v.substring(0, MAX_STRING_LENGTH);
5253
}
53-
if (v.isEmpty()) {
54-
v = EMPTY_TOKEN;
55-
} else {
56-
v = URLEncoder.encode(v, StandardCharsets.UTF_8.name());
57-
}
58-
values.add(v);
54+
v = URLEncoder.encode(v, StandardCharsets.UTF_8);
5955
}
60-
return values;
61-
} catch (UnsupportedEncodingException e) {
62-
throw new IllegalStateException("UTF-8 is unsupported", e);
56+
values.add(v);
6357
}
58+
return values;
6459
}
6560
}

oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/ValuePatternUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ public static Set<String> read(PropertyValue value, ValuePattern pattern) {
152152
if (value == null) {
153153
return null;
154154
}
155-
Set<String> values = new HashSet<String>();
155+
Set<String> values = new HashSet<>();
156156
for (String v : value.getValue(Type.STRINGS)) {
157157
if (!pattern.matches(v)) {
158158
continue;

oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NameValidator.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ class NameValidator extends DefaultValidator {
4848
* Flag controlling the strictness of the namespace checks. if {@code true}
4949
* namespaces existence will not be checked, otherwise referencing a
5050
* non-existent namespace will cause a {@link CommitFailedException}.
51-
*
5251
* Used only for the case where lucene index definitions are registered via
5352
* {@link RepositoryInitializer}s.
5453
*/
@@ -117,7 +116,8 @@ protected void checkValidName(String name) throws CommitFailedException {
117116

118117
private void checkPrefix(String prefix) throws CommitFailedException {
119118
if (prefix.isEmpty() || !contains(prefixes, namespaces, prefix)) {
120-
String msg = "Invalid namespace prefix(" + prefixes + "): " + prefix;
119+
String msg = "Invalid namespace prefix(" + prefixes + "): " + prefix +
120+
" in " + namespaces + " " + CollectionUtils.toSet(namespaces.getChildNodeNames());
121121
if (initPhase && !strictInitialNSChecks) {
122122
LOG.warn(msg);
123123
return;
@@ -138,7 +138,7 @@ protected void checkValidValue(PropertyState property)
138138
}
139139
} else if (Type.PATH.equals(property.getType()) || Type.PATHS.equals(property.getType())) {
140140
for (String value : property.getValue(Type.PATHS)) {
141-
for (String name: PathUtils.elements(value)) {
141+
for (String name : PathUtils.elements(value)) {
142142
checkValidValue(name);
143143
}
144144
}
@@ -180,8 +180,7 @@ public Validator childNodeAdded(String name, NodeState after)
180180
}
181181

182182
@Override
183-
public Validator childNodeChanged(
184-
String name, NodeState before, NodeState after) {
183+
public Validator childNodeChanged(String name, NodeState before, NodeState after) {
185184
return this;
186185
}
187186

oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorProvider.java

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -71,21 +71,22 @@
7171
*
7272
*/
7373
public class LuceneIndexEditorProvider implements IndexEditorProvider {
74+
private final static Logger LOG = LoggerFactory.getLogger(LuceneIndexEditorProvider.class);
7475

75-
private final Logger log = LoggerFactory.getLogger(getClass());
7676
private final IndexCopier indexCopier;
7777
private final ExtractedTextCache extractedTextCache;
7878
private final IndexAugmentorFactory augmentorFactory;
7979
private final IndexTracker indexTracker;
8080
private final MountInfoProvider mountInfoProvider;
8181
private final ActiveDeletedBlobCollector activeDeletedBlobCollector;
82+
private final LuceneIndexMBean mbean;
83+
private final StatisticsProvider statisticsProvider;
84+
8285
private GarbageCollectableBlobStore blobStore;
8386
private IndexingQueue indexingQueue;
8487
private boolean nrtIndexingEnabled;
8588
private LuceneIndexWriterConfig writerConfig = new LuceneIndexWriterConfig();
8689

87-
private final LuceneIndexMBean mbean;
88-
private final StatisticsProvider statisticsProvider;
8990

9091
/**
9192
* Number of indexed Lucene document that can be held in memory
@@ -153,8 +154,8 @@ public Editor getIndexEditor(
153154
@NotNull IndexUpdateCallback callback)
154155
throws CommitFailedException {
155156
if (TYPE_LUCENE.equals(type)) {
156-
checkArgument(callback instanceof ContextAwareCallback, "callback instance not of type " +
157-
"ContextAwareCallback [%s]", callback);
157+
checkArgument(callback instanceof ContextAwareCallback,
158+
"callback instance not of type ContextAwareCallback [%s]", callback);
158159
IndexingContext indexingContext = ((ContextAwareCallback)callback).getIndexingContext();
159160
BlobDeletionCallback blobDeletionCallback = activeDeletedBlobCollector.getBlobDeletionCallback();
160161
indexingContext.registerIndexCommitCallback(blobDeletionCallback);
@@ -179,31 +180,31 @@ public Editor getIndexEditor(
179180
//some initializer code does the commit with out it. So ignore such calls with
180181
//warning now
181182
//TODO Revisit use of warn level once all such cases are analyzed
182-
log.warn("No CommitContext found for commit", new Exception());
183+
LOG.warn("No CommitContext found for commit", new Exception());
183184
return null;
184185
}
185186

186187
//TODO Also check if index has been done once
187188

188189

189-
writerFactory = new LocalIndexWriterFactory(getDocumentHolder(commitContext),
190-
indexPath);
190+
writerFactory = new LocalIndexWriterFactory(getDocumentHolder(commitContext), indexPath);
191191

192192
//IndexDefinition from tracker might differ from one passed here for reindexing
193193
//case which should be fine. However reusing existing definition would avoid
194194
//creating definition instance for each commit as this gets executed for each commit
195195
if (indexTracker != null){
196196
indexDefinition = indexTracker.getIndexDefinition(indexPath);
197197
if (indexDefinition != null && !indexDefinition.hasMatchingNodeTypeReg(root)){
198-
log.debug("Detected change in NodeType registry for index {}. Would not use " +
198+
LOG.debug("Detected change in NodeType registry for index {}. Would not use " +
199199
"existing index definition", indexDefinition.getIndexPath());
200200
indexDefinition = null;
201201
}
202202
}
203203

204204
if (indexDefinition == null) {
205-
indexDefinition = LuceneIndexDefinition.newBuilder(root, definition.getNodeState(),
206-
indexPath).build();
205+
indexDefinition = LuceneIndexDefinition
206+
.newBuilder(root, definition.getNodeState(), indexPath)
207+
.build();
207208
}
208209

209210
if (indexDefinition.hasSyncPropertyDefinitions()) {
@@ -314,8 +315,8 @@ private static CommitContext getCommitContext(IndexingContext indexingContext) {
314315
private static class COWDirectoryCleanupCallback implements IndexCommitCallback, COWDirectoryTracker {
315316
private static final Logger LOG = LoggerFactory.getLogger(COWDirectoryCleanupCallback.class);
316317

317-
private List<CopyOnWriteDirectory> openedCoWDirectories = new ArrayList<>();
318-
private List<File> reindexingLocalDirectories = new ArrayList<>();
318+
private final List<CopyOnWriteDirectory> openedCoWDirectories = new ArrayList<>();
319+
private final List<File> reindexingLocalDirectories = new ArrayList<>();
319320

320321
@Override
321322
public void commitProgress(IndexProgress indexProgress) {

oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/PropertyIndexUpdateCallback.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242

4343
import static java.util.Objects.requireNonNull;
4444
import static org.apache.jackrabbit.guava.common.base.Suppliers.ofInstance;
45-
import static java.util.Collections.emptySet;
4645
import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_CONTENT_NODE_NAME;
4746
import static org.apache.jackrabbit.oak.plugins.index.lucene.property.HybridPropertyIndexUtil.PROPERTY_INDEX;
4847
import static org.apache.jackrabbit.oak.plugins.index.lucene.property.HybridPropertyIndexUtil.PROP_CREATED;
@@ -79,11 +78,11 @@ public void propertyUpdated(String nodePath, String propertyRelativePath, Proper
7978
return;
8079
}
8180

82-
Set<String> beforeKeys = getValueKeys(before, pd.valuePattern);
83-
Set<String> afterKeys = getValueKeys(after, pd.valuePattern);
81+
HashSet<String> beforeKeys = getValueKeys(before, pd.valuePattern);
82+
HashSet<String> afterKeys = getValueKeys(after, pd.valuePattern);
8483

8584
//Remove duplicates
86-
Set<String> sharedKeys = new HashSet<>(beforeKeys);
85+
HashSet<String> sharedKeys = new HashSet<>(beforeKeys);
8786
sharedKeys.retainAll(afterKeys);
8887
beforeKeys.removeAll(sharedKeys);
8988
afterKeys.removeAll(sharedKeys);
@@ -107,7 +106,7 @@ public void propertyUpdated(String nodePath, String propertyRelativePath, Proper
107106
nodePath,
108107
null,
109108
null,
110-
emptySet(), //Disable pruning with empty before keys
109+
Set.of(), //Disable pruning with empty before keys
111110
afterKeys);
112111
}
113112

@@ -150,8 +149,7 @@ private NodeBuilder getSimpleIndexBuilder(NodeBuilder propertyIndex, String node
150149
}
151150

152151
String headBucketName = idx.getString(PROP_HEAD_BUCKET);
153-
requireNonNull(headBucketName, String.format("[%s] property not found in [%s] for index [%s]",
154-
PROP_HEAD_BUCKET, idx, indexPath));
152+
requireNonNull(headBucketName, "[" + PROP_HEAD_BUCKET + "] property not found in [" + idx + "] for index [" + indexPath + "]");
155153

156154
return idx.child(headBucketName);
157155
}
@@ -164,8 +162,8 @@ private static NodeBuilder getUniqueIndexBuilder(NodeBuilder propertyIndex, Stri
164162
return idx;
165163
}
166164

167-
private static Set<String> getValueKeys(PropertyState property, ValuePattern pattern) {
168-
Set<String> keys = new HashSet<>();
165+
private static HashSet<String> getValueKeys(PropertyState property, ValuePattern pattern) {
166+
HashSet<String> keys = new HashSet<>();
169167
if (property != null
170168
&& property.getType().tag() != PropertyType.BINARY
171169
&& property.count() != 0) {

oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/DefaultIndexWriter.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030

3131
import org.apache.jackrabbit.oak.api.PropertyState;
3232
import org.apache.jackrabbit.oak.api.Type;
33+
import org.apache.jackrabbit.oak.commons.IOUtils;
3334
import org.apache.jackrabbit.oak.commons.PerfLogger;
3435
import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexDefinition;
3536
import org.apache.jackrabbit.oak.plugins.index.lucene.directory.DirectoryFactory;
@@ -121,7 +122,7 @@ public boolean close(long timestamp) throws IOException {
121122
//it indicates that the index is empty. In such a case trigger
122123
//creation of write such that an empty Lucene index state is persisted
123124
//in directory
124-
if (reindex && writer == null){
125+
if (reindex && writer == null) {
125126
getWriter();
126127
}
127128

@@ -148,7 +149,7 @@ public boolean close(long timestamp) throws IOException {
148149
writer.close();
149150
PERF_LOGGER.end(start, -1, "Closed writer for directory {}", definition);
150151

151-
if (!indexUpdated){
152+
if (!indexUpdated) {
152153
long genAtEnd = getLatestGeneration(directory);
153154
indexUpdated = genAtEnd != genAtStart;
154155
}
@@ -184,8 +185,9 @@ IndexWriter getWriter() throws IOException {
184185

185186
/**
186187
* eventually update suggest dictionary
187-
* @throws IOException if suggest dictionary update fails
188+
*
188189
* @param analyzer the analyzer used to update the suggester
190+
* @throws IOException if suggest dictionary update fails
189191
*/
190192
private boolean updateSuggester(Analyzer analyzer, Calendar currentTime) throws IOException {
191193
synchronized (this) {
@@ -228,7 +230,7 @@ private boolean shouldUpdateSuggestions(Calendar currentTime) {
228230
Calendar suggesterLastUpdatedTime = ISO8601.parse(suggesterLastUpdatedValue.getValue(Type.DATE));
229231

230232
int updateFrequency = definition.getSuggesterUpdateFrequencyMinutes();
231-
Calendar nextSuggestUpdateTime = (Calendar)suggesterLastUpdatedTime.clone();
233+
Calendar nextSuggestUpdateTime = (Calendar) suggesterLastUpdatedTime.clone();
232234
nextSuggestUpdateTime.add(Calendar.MINUTE, updateFrequency);
233235
if (currentTime.after(nextSuggestUpdateTime)) {
234236
updateSuggestions = (writer != null || isIndexUpdatedAfter(suggesterLastUpdatedTime));
@@ -292,8 +294,6 @@ private static void trackIndexSizeInfo(@NotNull IndexWriter writer,
292294
}
293295
sb.append(", ");
294296
}
295-
log.trace("Directory overall size: {}, files: {}",
296-
org.apache.jackrabbit.oak.commons.IOUtils.humanReadableByteCount(overallSize),
297-
sb.toString());
297+
log.trace("Directory overall size: {}, files: {}", IOUtils.humanReadableByteCount(overallSize), sb);
298298
}
299299
}

oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/IndexerSupport.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ public NodeState retrieveNodeStateForCheckpoint() {
136136
LOG.warn("Using head state for indexing. Such an index cannot be imported back");
137137
} else {
138138
checkpointedState = indexHelper.getNodeStore().retrieve(checkpoint);
139-
requireNonNull(checkpointedState, String.format("Not able to retrieve revision referred via checkpoint [%s]", checkpoint));
139+
requireNonNull(checkpointedState, "Not able to retrieve revision referred via checkpoint [" + checkpoint + "]");
140140
checkpointInfo = indexHelper.getNodeStore().checkpointInfo(checkpoint);
141141
}
142142
return checkpointedState;

oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/OutOfBandIndexerBase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ public void traversedNode(NodeTraversalCallback.PathSource pathSource) {
133133
nodesTraversed++;
134134
}
135135

136-
protected void preformIndexUpdate(NodeState baseState) throws IOException, CommitFailedException {
136+
private void preformIndexUpdate(NodeState baseState) throws IOException, CommitFailedException {
137137
NodeBuilder builder = copyOnWriteStore.getRoot().builder();
138138

139139
IndexUpdate indexUpdate = new IndexUpdate(

oak-run/src/main/java/org/apache/jackrabbit/oak/index/OutOfBandIndexer.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,14 @@
2020

2121
import java.io.File;
2222
import java.io.IOException;
23+
import java.util.List;
24+
2325
import org.apache.jackrabbit.oak.plugins.index.CompositeIndexEditorProvider;
2426
import org.apache.jackrabbit.oak.plugins.index.IndexEditorProvider;
2527
import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditorProvider;
2628
import org.apache.jackrabbit.oak.plugins.index.lucene.directory.DirectoryFactory;
2729
import org.apache.jackrabbit.oak.plugins.index.lucene.directory.FSDirectoryFactory;
2830

29-
import static java.util.Arrays.asList;
3031
import static java.util.Objects.requireNonNull;
3132

3233
public class OutOfBandIndexer extends OutOfBandIndexerBase {
@@ -44,7 +45,7 @@ protected IndexEditorProvider createIndexEditorProvider() throws IOException {
4445
IndexEditorProvider lucene = createLuceneEditorProvider();
4546
IndexEditorProvider property = createPropertyEditorProvider();
4647

47-
return CompositeIndexEditorProvider.compose(asList(lucene, property));
48+
return CompositeIndexEditorProvider.compose(List.of(lucene, property));
4849
}
4950

5051
private IndexEditorProvider createPropertyEditorProvider() throws IOException {

0 commit comments

Comments
 (0)