Skip to content

Commit 8746589

Browse files
authored
Backport: Trigger log with no hits (#827)
* Backport: Trigger log with no hits * Bump up nrtsearch version
1 parent ab8e6cc commit 8746589

File tree

3 files changed

+43
-1
lines changed

3 files changed

+43
-1
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ java {
2626
}
2727

2828
allprojects {
29-
version = '0.42.3'
29+
version = '0.42.4'
3030
group = 'com.yelp.nrtsearch'
3131
}
3232

src/main/java/com/yelp/nrtsearch/server/luceneserver/SearchHandler.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
import com.yelp.nrtsearch.server.utils.ObjectToCompositeFieldTransformer;
5353
import java.io.IOException;
5454
import java.util.ArrayList;
55+
import java.util.Collections;
5556
import java.util.Comparator;
5657
import java.util.HashMap;
5758
import java.util.List;
@@ -335,6 +336,14 @@ public SearchResponse handle(IndexState indexState, SearchRequest searchRequest)
335336
private void fetchFields(SearchContext searchContext)
336337
throws IOException, ExecutionException, InterruptedException {
337338
if (searchContext.getResponseBuilder().getHitsBuilderList().isEmpty()) {
339+
// call log even when there is no hits.
340+
// HitsLogger implementation should decide what to log or not when there is no hits.
341+
if (searchContext.getFetchTasks().getHitsLoggerFetchTask() != null) {
342+
searchContext
343+
.getFetchTasks()
344+
.getHitsLoggerFetchTask()
345+
.processAllHits(searchContext, Collections.emptyList());
346+
}
338347
return;
339348
}
340349

src/test/java/com/yelp/nrtsearch/server/luceneserver/logging/HitsLoggerTest.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,39 @@ public void testLoggingWithZeroHitsToLog() {
467467
assertEquals(1, response.getHitsCount());
468468
}
469469

470+
@Test
471+
public void testLoggingWithZeroHits() {
472+
SearchRequest request =
473+
SearchRequest.newBuilder()
474+
.setTopHits(1)
475+
.setStartHit(0)
476+
.setIndexName(DEFAULT_TEST_INDEX)
477+
.addRetrieveFields("doc_id")
478+
.setQuery(
479+
Query.newBuilder()
480+
.setTermQuery(
481+
TermQuery.newBuilder()
482+
.setField("vendor_name")
483+
.setTextValue("vendor_no_hits")
484+
.build())
485+
.build())
486+
.setLoggingHits(
487+
LoggingHits.newBuilder()
488+
.setName("custom_logger")
489+
.setHitsToLog(1)
490+
.setParams(
491+
Struct.newBuilder()
492+
.putFields(
493+
"external_value", Value.newBuilder().setStringValue("abc").build()))
494+
.build())
495+
.build();
496+
SearchResponse response = getGrpcServer().getBlockingStub().search(request);
497+
498+
assertEquals("LOGGED {external_value=abc}", HitsLoggerTest.logMessage);
499+
assertEquals(0, response.getTotalHits().getValue());
500+
assertEquals(0, response.getHitsCount());
501+
}
502+
470503
@Test
471504
public void testLoggingTimeTaken() {
472505
SearchRequest request =

0 commit comments

Comments
 (0)