diff options
author | Henning Baldersheim <balder@oath.com> | 2018-01-31 18:41:15 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@oath.com> | 2018-01-31 21:40:45 +0100 |
commit | 42369f54c76dc83e4b7dc053cc4f34f33d9a8d93 (patch) | |
tree | 11311f3c519394a2bde98a3e597fcf6ffee527d0 /searchcore | |
parent | 3f01eefe0d5ef3b288443adb901e8d70dbf20a40 (diff) |
Shortcut summary generation on timeout.
Diffstat (limited to 'searchcore')
-rw-r--r-- | searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp | 16 |
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; |