summaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@oath.com>2018-01-31 18:41:15 +0100
committerHenning Baldersheim <balder@oath.com>2018-01-31 21:40:45 +0100
commit42369f54c76dc83e4b7dc053cc4f34f33d9a8d93 (patch)
tree11311f3c519394a2bde98a3e597fcf6ffee527d0 /searchcore
parent3f01eefe0d5ef3b288443adb901e8d70dbf20a40 (diff)
Shortcut summary generation on timeout.
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp
index df93d4cd1ff..31f034ebc77 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp
@@ -70,7 +70,11 @@ DocsumContext::createReply()
if (docId != search::endDocId && !rci.mustSkip) {
Slime slime(Slime::Params(std::move(symbols)));
vespalib::slime::SlimeInserter inserter(slime);
- _docsumWriter.insertDocsum(rci, docId, &_docsumState, &_docsumStore, slime, inserter);
+ if (_request.expired()) {
+ inserter.insertString(Memory("timed out"));
+ } else {
+ _docsumWriter.insertDocsum(rci, docId, &_docsumState, &_docsumStore, slime, inserter);
+ }
uint32_t docsumLen = (slime.get().type().getId() != NIX::ID)
? IDocsumWriter::slime2RawBuf(slime, buf)
: 0;
@@ -102,12 +106,16 @@ DocsumContext::createSlimeReply()
Cursor & array = root.setArray(DOCSUMS);
const Symbol docsumSym = response->insert(DOCSUM);
IDocsumWriter::ResolveClassInfo rci = _docsumWriter.resolveClassInfo(_docsumState._args.getResultClassName(), _docsumStore.getSummaryClassId());
- for (uint32_t i = 0; i < _docsumState._docsumcnt; ++i) {
+ for (uint32_t i = 0; (i < _docsumState._docsumcnt); ++i) {
uint32_t docId = _docsumState._docsumbuf[i];
Cursor & docSumC = array.addObject();
ObjectSymbolInserter inserter(docSumC, docsumSym);
- if (docId != search::endDocId && !rci.mustSkip) {
- _docsumWriter.insertDocsum(rci, docId, &_docsumState, &_docsumStore, *response, inserter);
+ if ((docId != search::endDocId) && !rci.mustSkip) {
+ if (_request.expired()) {
+ inserter.insertString(Memory("timed out"));
+ } else {
+ _docsumWriter.insertDocsum(rci, docId, &_docsumState, &_docsumStore, *response, inserter);
+ }
}
}
return response;