-
Notifications
You must be signed in to change notification settings - Fork 141
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adds debug logs for KNNQuery and KNNWeight #2466
Conversation
Signed-off-by: Tejas Shah <[email protected]>
@@ -168,7 +171,10 @@ public Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float bo | |||
if (!KNNSettings.isKNNPluginEnabled()) { | |||
throw new IllegalStateException("KNN plugin is disabled. To enable update knn.plugin.enabled to true"); | |||
} | |||
StopWatch stopWatch = new StopWatch().start(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we wrap this behind log.isDebugEnabled()
?
It's not a big overhead but given that it's being used only for debug logging.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I thought about if but wanted to avoid if conditions. Let me add it
Signed-off-by: Tejas Shah <[email protected]>
@@ -166,6 +174,13 @@ public PerLeafResult searchLeaf(LeafReaderContext context, int k) throws IOExcep | |||
return new PerLeafResult(filterWeight == null ? null : filterBitSet, docIdsToScoreMap); | |||
} | |||
|
|||
private void stopStopWatchAndLog(@Nullable StopWatch stopWatch, String message) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: add final to method parameters?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
sure
@@ -153,7 +158,10 @@ public PerLeafResult searchLeaf(LeafReaderContext context, int k) throws IOExcep | |||
* so that it will not do a bitset look up in bottom search layer. | |||
*/ | |||
final BitSet annFilter = (filterWeight != null && cardinality == maxDoc) ? null : filterBitSet; | |||
StopWatch annStopWatch = startStopWatch(); | |||
; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: remove this line
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
will do
private void stopStopWatchAndLog(@Nullable StopWatch stopWatch, String message) { | ||
if (log.isDebugEnabled() && stopWatch != null) { | ||
stopWatch.stop(); | ||
log.debug(message, knnQuery.getField(), stopWatch.totalTime().nanos()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is it advisable to assume that message will have two arguments and in that order?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should be fine considering its private
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
IMO it is error prone. Considering it is private, can you add doc saying that param message expects two args with field name and nano secs in that order
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I need the sequence of stopping the watch and then logging it I can change the name of the function or just pass a prefix and standardize the message
Signed-off-by: Tejas Shah <[email protected]>
final Weight filterWeight = getFilterWeight(searcher); | ||
if (log.isDebugEnabled() && stopWatch != null) { | ||
stopWatch.stop(); | ||
log.debug("Creating filter weight for field [{}] took [{}] nanos", field, stopWatch.totalTime().nanos()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
do we need any segment info like total docs which was present? name of the shard etc for better debugging. Because we have a lot of segments then this log statement won't be that helpful
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added shard and segment info. cat APIs should help trace down total docs and deleted docs
Signed-off-by: Tejas Shah <[email protected]>
Signed-off-by: Tejas Shah <[email protected]>
return exactSearcher.searchLeaf(leafReaderContext, exactSearcherContext); | ||
StopWatch stopWatch = startStopWatch(); | ||
Map<Integer, Float> exactSearchResults = exactSearcher.searchLeaf(leafReaderContext, exactSearcherContext); | ||
final SegmentReader reader = Lucene.segmentReader(leafReaderContext.reader()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added here to not have to make changes in NativeEngineQuery
Signed-off-by: Tejas Shah <[email protected]>
* Adds debug logs for KNNQuery and KNNWeight Signed-off-by: Tejas Shah <[email protected]> * Adds check to see if log is enabled to start and stop StopWatch Signed-off-by: Tejas Shah <[email protected]> * Addressing comments on the PR Signed-off-by: Tejas Shah <[email protected]> * Adds shard and segment info in the logs Signed-off-by: Tejas Shah <[email protected]> * Removes unnecessary segment name param from exact search Signed-off-by: Tejas Shah <[email protected]> * Fixes the build Signed-off-by: Tejas Shah <[email protected]> --------- Signed-off-by: Tejas Shah <[email protected]> (cherry picked from commit f322e27)
* Adds debug logs for KNNQuery and KNNWeight Signed-off-by: Tejas Shah <[email protected]> * Adds check to see if log is enabled to start and stop StopWatch Signed-off-by: Tejas Shah <[email protected]> * Addressing comments on the PR Signed-off-by: Tejas Shah <[email protected]> * Adds shard and segment info in the logs Signed-off-by: Tejas Shah <[email protected]> * Removes unnecessary segment name param from exact search Signed-off-by: Tejas Shah <[email protected]> * Fixes the build Signed-off-by: Tejas Shah <[email protected]> --------- Signed-off-by: Tejas Shah <[email protected]> (cherry picked from commit f322e27)
* Adds debug logs for KNNQuery and KNNWeight Signed-off-by: Tejas Shah <[email protected]> * Adds check to see if log is enabled to start and stop StopWatch Signed-off-by: Tejas Shah <[email protected]> * Addressing comments on the PR Signed-off-by: Tejas Shah <[email protected]> * Adds shard and segment info in the logs Signed-off-by: Tejas Shah <[email protected]> * Removes unnecessary segment name param from exact search Signed-off-by: Tejas Shah <[email protected]> * Fixes the build Signed-off-by: Tejas Shah <[email protected]> --------- Signed-off-by: Tejas Shah <[email protected]> (cherry picked from commit f322e27) Co-authored-by: Tejas Shah <[email protected]>
Description
Adds debug logs with timing information for various knn query components
Testing
Cluster setting changed in local
Output
Check List
--signoff
.By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.