Skip to content

Commit

Permalink
fix or suppress sonar warnings, including reducing the cognitive comp…
Browse files Browse the repository at this point in the history
…lexity of a method, suppressing ThreadLocalRandom warnings, and adding javadoc
  • Loading branch information
alecgrieser committed May 24, 2022
1 parent 0c74ac3 commit 80b81f5
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,13 @@ public class LuceneIndexOptions {
public static final String AUTO_COMPLETE_ENABLED = "autoCompleteEnabled";
/**
* The type of auto complete blender to transform the weight after search to take into account the position of the searched term into the indexed text.
* @deprecated this option is ignored as the blender suggester is no longer used by auto-complete queries
*/
@Deprecated
public static final String AUTO_COMPLETE_BLENDER_TYPE = "autoCompleteBlenderType";
/**
* The number factor to multiply the number of searched elements for auto complete blender.
* @deprecated this option is ignored as the blender suggester is no longer used by auto-complete queries
*/
@Deprecated
public static final String AUTO_COMPLETE_BLENDER_NUM_FACTOR = "autoCompleteBlenderNumFactor";
Expand All @@ -47,6 +49,7 @@ public class LuceneIndexOptions {
public static final String AUTO_COMPLETE_MIN_PREFIX_SIZE = "autoCompleteMinPrefixSize";
/**
* The exponent to use for auto complete when the blender type is POSITION_EXPONENTIAL_RECIPROCAL.
* @deprecated this option is ignored as the blender suggester is no longer used by auto-complete queries
*/
@Deprecated
public static final String AUTO_COMPLETE_BLENDER_EXPONENT = "autoCompleteBlenderExponent";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,47 @@ public IndexReader getReader() throws IOException {
}
}

private static class FDBDirectoryMergeScheduler extends ConcurrentMergeScheduler {
@Nonnull
private final IndexMaintainerState state;
private final int mergeDirectoryCount;

private FDBDirectoryMergeScheduler(@Nonnull IndexMaintainerState state, int mergeDirectoryCount) {
this.state = state;
this.mergeDirectoryCount = mergeDirectoryCount;
}

@SuppressWarnings("squid:S2245") // ThreadLocalRandom not used in case where cryptographic security is needed
@Override
public synchronized void merge(final MergeSource mergeSource, final MergeTrigger trigger) throws IOException {
if (state.context.getPropertyStorage().getPropertyValue(LuceneRecordContextProperties.LUCENE_MULTIPLE_MERGE_OPTIMIZATION_ENABLED) && trigger == MergeTrigger.FULL_FLUSH) {
if (ThreadLocalRandom.current().nextInt(mergeDirectoryCount) == 0) {
if (LOGGER.isTraceEnabled()) {
LOGGER.trace(FDBDirectoryManager.getMergeLogMessage(mergeSource, trigger, state, "Basic Lucene index merge based on probability"));
}
super.merge(mergeSource, trigger);
} else {
if (LOGGER.isTraceEnabled()) {
LOGGER.trace(FDBDirectoryManager.getMergeLogMessage(mergeSource, trigger, state, "Basic Lucene index merge aborted based on probability"));
}
synchronized (this) {
MergePolicy.OneMerge nextMerge = mergeSource.getNextMerge();
while (nextMerge != null) {
nextMerge.setAborted();
mergeSource.onMergeFinished(nextMerge);
nextMerge = mergeSource.getNextMerge();
}
}
}
} else {
if (LOGGER.isTraceEnabled()) {
LOGGER.trace(FDBDirectoryManager.getMergeLogMessage(mergeSource, trigger, state, "Basic Lucene index merge"));
}
super.merge(mergeSource, trigger);
}
}
}

@Nonnull
public IndexWriter getWriter(LuceneAnalyzerWrapper analyzerWrapper) throws IOException {
if (writer == null || !writerAnalyzerId.equals(analyzerWrapper.getUniqueIdentifier())) {
Expand All @@ -87,36 +128,7 @@ public IndexWriter getWriter(LuceneAnalyzerWrapper analyzerWrapper) throws IOExc
IndexWriterConfig indexWriterConfig = new IndexWriterConfig(analyzerWrapper.getAnalyzer())
.setUseCompoundFile(true)
.setMergePolicy(tieredMergePolicy)
.setMergeScheduler(new ConcurrentMergeScheduler() {
@Override
public synchronized void merge(final MergeSource mergeSource, final MergeTrigger trigger) throws IOException {
if (state.context.getPropertyStorage().getPropertyValue(LuceneRecordContextProperties.LUCENE_MULTIPLE_MERGE_OPTIMIZATION_ENABLED) && trigger == MergeTrigger.FULL_FLUSH) {
if (ThreadLocalRandom.current().nextInt(mergeDirectoryCount) == 0) {
if (LOGGER.isTraceEnabled()) {
LOGGER.trace(FDBDirectoryManager.getMergeLogMessage(mergeSource, trigger, state, "Basic Lucene index merge based on probability"));
}
super.merge(mergeSource, trigger);
} else {
if (LOGGER.isTraceEnabled()) {
LOGGER.trace(FDBDirectoryManager.getMergeLogMessage(mergeSource, trigger, state, "Basic Lucene index merge aborted based on probability"));
}
synchronized (this) {
MergePolicy.OneMerge nextMerge = mergeSource.getNextMerge();
while (nextMerge != null) {
nextMerge.setAborted();
mergeSource.onMergeFinished(nextMerge);
nextMerge = mergeSource.getNextMerge();
}
}
}
} else {
if (LOGGER.isTraceEnabled()) {
LOGGER.trace(FDBDirectoryManager.getMergeLogMessage(mergeSource, trigger, state, "Basic Lucene index merge"));
}
super.merge(mergeSource, trigger);
}
}
})
.setMergeScheduler(new FDBDirectoryMergeScheduler(state, mergeDirectoryCount))
.setCodec(new LuceneOptimizedCodec())
.setInfoStream(new LuceneLoggerInfoStream(LOGGER));

Expand Down

0 comments on commit 80b81f5

Please sign in to comment.