From 42369f54c76dc83e4b7dc053cc4f34f33d9a8d93 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Wed, 31 Jan 2018 18:41:15 +0100 Subject: Shortcut summary generation on timeout. --- .../vespa/searchcore/proton/docsummary/docsumcontext.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'searchcore') 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; -- cgit v1.2.3 From 9e6dca9949dac4a105c88da8d5c44923d1024d6e Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Wed, 31 Jan 2018 22:34:52 +0100 Subject: Report back as field 'error' the timeout as amount of us on overtime. --- .../src/vespa/searchcore/proton/docsummary/docsumcontext.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'searchcore') diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp index 31f034ebc77..4fbfa466732 100644 --- a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp +++ b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp @@ -6,6 +6,7 @@ #include #include #include +#include #include LOG_SETUP(".proton.docsummary.docsumcontext"); @@ -34,6 +35,10 @@ namespace { Memory DOCSUMS("docsums"); Memory DOCSUM("docsum"); +void addTimedOut(Inserter & inserter, fastos::TimeStamp left) { + inserter.insertObject().setString("error", vespalib::make_string("Timeout at %ldus", left.us())); +} + } void @@ -71,7 +76,7 @@ DocsumContext::createReply() Slime slime(Slime::Params(std::move(symbols))); vespalib::slime::SlimeInserter inserter(slime); if (_request.expired()) { - inserter.insertString(Memory("timed out")); + addTimedOut(inserter, _request.getTimeLeft()); } else { _docsumWriter.insertDocsum(rci, docId, &_docsumState, &_docsumStore, slime, inserter); } @@ -112,7 +117,7 @@ DocsumContext::createSlimeReply() ObjectSymbolInserter inserter(docSumC, docsumSym); if ((docId != search::endDocId) && !rci.mustSkip) { if (_request.expired()) { - inserter.insertString(Memory("timed out")); + addTimedOut(inserter, _request.getTimeLeft()); } else { _docsumWriter.insertDocsum(rci, docId, &_docsumState, &_docsumStore, *response, inserter); } -- cgit v1.2.3 From 722f0a455a0b662145629cedcd39a388fd38e794 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Fri, 2 Feb 2018 09:43:18 +0100 Subject: Nested namespaces --- .../searchcore/proton/docsummary/docsumcontext.cpp | 2 +- searchlib/src/vespa/searchlib/engine/docsumreply.cpp | 7 +++---- searchlib/src/vespa/searchlib/engine/docsumreply.h | 7 +++---- searchlib/src/vespa/searchlib/engine/docsumrequest.cpp | 8 +++----- searchlib/src/vespa/searchlib/engine/docsumrequest.h | 4 ++-- searchlib/src/vespa/searchlib/engine/errorcodes.cpp | 7 +++---- searchlib/src/vespa/searchlib/engine/errorcodes.h | 6 ++---- searchlib/src/vespa/searchlib/engine/monitorapi.h | 6 ++---- searchlib/src/vespa/searchlib/engine/monitorreply.cpp | 7 +++---- searchlib/src/vespa/searchlib/engine/monitorreply.h | 9 +++------ .../src/vespa/searchlib/engine/monitorrequest.cpp | 7 +++---- searchlib/src/vespa/searchlib/engine/monitorrequest.h | 7 +++---- .../src/vespa/searchlib/engine/packetconverter.cpp | 7 +++---- searchlib/src/vespa/searchlib/engine/packetconverter.h | 8 +++----- searchlib/src/vespa/searchlib/engine/propertiesmap.cpp | 13 ++++++------- searchlib/src/vespa/searchlib/engine/request.cpp | 10 +++------- searchlib/src/vespa/searchlib/engine/searchapi.h | 6 ++---- searchlib/src/vespa/searchlib/engine/searchreply.cpp | 9 ++++----- searchlib/src/vespa/searchlib/engine/searchreply.h | 9 +++------ searchlib/src/vespa/searchlib/engine/searchrequest.cpp | 7 +++---- searchlib/src/vespa/searchlib/engine/searchrequest.h | 10 ++++------ .../src/vespa/searchlib/engine/source_description.cpp | 7 +++---- .../src/vespa/searchlib/engine/source_description.h | 6 ++---- searchlib/src/vespa/searchlib/engine/tracereply.h | 6 ++---- .../src/vespa/searchlib/engine/transport_metrics.cpp | 13 ++++++------- .../src/vespa/searchlib/engine/transport_metrics.h | 8 +++----- .../src/vespa/searchlib/engine/transportserver.cpp | 7 +++---- searchlib/src/vespa/searchlib/engine/transportserver.h | 18 ++++++++---------- 28 files changed, 89 insertions(+), 132 deletions(-) (limited to 'searchcore') diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp index 4fbfa466732..7cc2a724707 100644 --- a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp +++ b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp @@ -36,7 +36,7 @@ Memory DOCSUMS("docsums"); Memory DOCSUM("docsum"); void addTimedOut(Inserter & inserter, fastos::TimeStamp left) { - inserter.insertObject().setString("error", vespalib::make_string("Timeout at %ldus", left.us())); + inserter.insertObject().setString("error", vespalib::make_string("Timed out with %ldus left.", left.us())); } } diff --git a/searchlib/src/vespa/searchlib/engine/docsumreply.cpp b/searchlib/src/vespa/searchlib/engine/docsumreply.cpp index a139064d1eb..11c170296b7 100644 --- a/searchlib/src/vespa/searchlib/engine/docsumreply.cpp +++ b/searchlib/src/vespa/searchlib/engine/docsumreply.cpp @@ -3,8 +3,7 @@ #include "docsumreply.h" #include -namespace search { -namespace engine { +namespace search::engine { DocsumReply::DocsumReply() : DocsumReply(vespalib::Slime::UP(nullptr)) { } @@ -15,5 +14,5 @@ DocsumReply::DocsumReply(vespalib::Slime::UP root) DocsumReply::~DocsumReply() { } -} // namespace engine -} // namespace search +} + diff --git a/searchlib/src/vespa/searchlib/engine/docsumreply.h b/searchlib/src/vespa/searchlib/engine/docsumreply.h index c445b412a26..37431030253 100644 --- a/searchlib/src/vespa/searchlib/engine/docsumreply.h +++ b/searchlib/src/vespa/searchlib/engine/docsumreply.h @@ -9,8 +9,7 @@ #include namespace vespalib { class Slime; } -namespace search { -namespace engine { +namespace search::engine { struct DocsumReply { @@ -44,5 +43,5 @@ struct DocsumReply ~DocsumReply(); }; -} // namespace engine -} // namespace search +} + diff --git a/searchlib/src/vespa/searchlib/engine/docsumrequest.cpp b/searchlib/src/vespa/searchlib/engine/docsumrequest.cpp index 92eddb7f21f..b2a71b85890 100644 --- a/searchlib/src/vespa/searchlib/engine/docsumrequest.cpp +++ b/searchlib/src/vespa/searchlib/engine/docsumrequest.cpp @@ -3,8 +3,7 @@ #include "docsumrequest.h" #include "packetconverter.h" -namespace search { -namespace engine { +namespace search::engine { DocsumRequest::DocsumRequest() : DocsumRequest(false) {} @@ -25,7 +24,7 @@ DocsumRequest::DocsumRequest(const fastos::TimeStamp &start_time, bool useRootSl { } -DocsumRequest::~DocsumRequest() {} +DocsumRequest::~DocsumRequest() = default; void DocsumRequest::Source::lazyDecode() const { @@ -43,5 +42,4 @@ DocsumRequest::Source::~Source() { } } -} // namespace engine -} // namespace search +} diff --git a/searchlib/src/vespa/searchlib/engine/docsumrequest.h b/searchlib/src/vespa/searchlib/engine/docsumrequest.h index e2b724065b1..93961c80e79 100644 --- a/searchlib/src/vespa/searchlib/engine/docsumrequest.h +++ b/searchlib/src/vespa/searchlib/engine/docsumrequest.h @@ -2,11 +2,11 @@ #pragma once -#include -#include #include "propertiesmap.h" #include "request.h" #include "source_description.h" +#include +#include namespace search::fs4transport { class FS4Packet_GETDOCSUMSX; } diff --git a/searchlib/src/vespa/searchlib/engine/errorcodes.cpp b/searchlib/src/vespa/searchlib/engine/errorcodes.cpp index dd656fe1ef2..0182d85177a 100644 --- a/searchlib/src/vespa/searchlib/engine/errorcodes.cpp +++ b/searchlib/src/vespa/searchlib/engine/errorcodes.cpp @@ -2,8 +2,7 @@ #include "errorcodes.h" -namespace search { -namespace engine { +namespace search::engine { const char * getStringFromErrorCode(ErrorCode ecode) @@ -31,5 +30,5 @@ getStringFromErrorCode(ErrorCode ecode) return "Unknown error"; } -} // namespace engine -} // namespace search +} + diff --git a/searchlib/src/vespa/searchlib/engine/errorcodes.h b/searchlib/src/vespa/searchlib/engine/errorcodes.h index 3b2357a1ebb..d0812ad9d6c 100644 --- a/searchlib/src/vespa/searchlib/engine/errorcodes.h +++ b/searchlib/src/vespa/searchlib/engine/errorcodes.h @@ -2,8 +2,7 @@ #pragma once -namespace search { -namespace engine { +namespace search::engine { /** * Enum defining global error codes. @@ -31,6 +30,5 @@ enum ErrorCode { **/ const char* getStringFromErrorCode(ErrorCode error); -} // namespace engine -} // namespace search +} diff --git a/searchlib/src/vespa/searchlib/engine/monitorapi.h b/searchlib/src/vespa/searchlib/engine/monitorapi.h index a0e184a4c04..ece52da74da 100644 --- a/searchlib/src/vespa/searchlib/engine/monitorapi.h +++ b/searchlib/src/vespa/searchlib/engine/monitorapi.h @@ -5,8 +5,7 @@ #include "monitorrequest.h" #include "monitorreply.h" -namespace search { -namespace engine { +namespace search::engine { /** * A monitor client is the object being notified of the completion of @@ -61,6 +60,5 @@ public: virtual ~MonitorServer() {} }; -} // namespace engine -} // namespace search +} diff --git a/searchlib/src/vespa/searchlib/engine/monitorreply.cpp b/searchlib/src/vespa/searchlib/engine/monitorreply.cpp index 77d1b31d071..46525244dc4 100644 --- a/searchlib/src/vespa/searchlib/engine/monitorreply.cpp +++ b/searchlib/src/vespa/searchlib/engine/monitorreply.cpp @@ -2,8 +2,7 @@ #include "monitorreply.h" -namespace search { -namespace engine { +namespace search::engine { MonitorReply::MonitorReply() : mld(), @@ -18,5 +17,5 @@ MonitorReply::MonitorReply() flags() { } -} // namespace engine -} // namespace search +} + diff --git a/searchlib/src/vespa/searchlib/engine/monitorreply.h b/searchlib/src/vespa/searchlib/engine/monitorreply.h index 12fb39b0944..600a855a4ec 100644 --- a/searchlib/src/vespa/searchlib/engine/monitorreply.h +++ b/searchlib/src/vespa/searchlib/engine/monitorreply.h @@ -2,12 +2,9 @@ #pragma once -#include -#include #include -namespace search { -namespace engine { +namespace search::engine { struct MonitorReply { @@ -27,5 +24,5 @@ struct MonitorReply MonitorReply(); }; -} // namespace engine -} // namespace search +} + diff --git a/searchlib/src/vespa/searchlib/engine/monitorrequest.cpp b/searchlib/src/vespa/searchlib/engine/monitorrequest.cpp index 81074743ab5..1e5c2868cef 100644 --- a/searchlib/src/vespa/searchlib/engine/monitorrequest.cpp +++ b/searchlib/src/vespa/searchlib/engine/monitorrequest.cpp @@ -2,13 +2,12 @@ #include "monitorrequest.h" -namespace search { -namespace engine { +namespace search::engine { MonitorRequest::MonitorRequest() : reportActiveDocs(false), flags(0) { } -} // namespace engine -} // namespace search +} + diff --git a/searchlib/src/vespa/searchlib/engine/monitorrequest.h b/searchlib/src/vespa/searchlib/engine/monitorrequest.h index e9665ba1b1a..ac07e42a68a 100644 --- a/searchlib/src/vespa/searchlib/engine/monitorrequest.h +++ b/searchlib/src/vespa/searchlib/engine/monitorrequest.h @@ -4,8 +4,7 @@ #include -namespace search { -namespace engine { +namespace search::engine { struct MonitorRequest { @@ -18,5 +17,5 @@ struct MonitorRequest MonitorRequest(); }; -} // namespace engine -} // namespace search +} + diff --git a/searchlib/src/vespa/searchlib/engine/packetconverter.cpp b/searchlib/src/vespa/searchlib/engine/packetconverter.cpp index 21e13f7855c..0697c4631ba 100644 --- a/searchlib/src/vespa/searchlib/engine/packetconverter.cpp +++ b/searchlib/src/vespa/searchlib/engine/packetconverter.cpp @@ -27,8 +27,7 @@ struct FS4PropertiesBuilder : public search::fef::IPropertiesVisitor { } // namespace -namespace search { -namespace engine { +namespace search::engine { using namespace search::fs4transport; @@ -259,5 +258,5 @@ PacketConverter::fromTraceReply(const TraceReply &reply, TRACEREPLY &packet) fillPacketProperties(reply.propertiesMap, packet._propsVector); } -} // namespace engine -} // namespace search +} + diff --git a/searchlib/src/vespa/searchlib/engine/packetconverter.h b/searchlib/src/vespa/searchlib/engine/packetconverter.h index e2f41a77e91..90fc27c8c97 100644 --- a/searchlib/src/vespa/searchlib/engine/packetconverter.h +++ b/searchlib/src/vespa/searchlib/engine/packetconverter.h @@ -2,7 +2,6 @@ #pragma once -#include #include "searchrequest.h" #include "searchreply.h" #include "docsumrequest.h" @@ -10,9 +9,9 @@ #include "monitorrequest.h" #include "monitorreply.h" #include "tracereply.h" +#include -namespace search { -namespace engine { +namespace search::engine { /** @@ -171,6 +170,5 @@ public: static void fromTraceReply(const TraceReply &reply, TRACEREPLY &packet); }; -} // namespace engine -} // namespace search +} diff --git a/searchlib/src/vespa/searchlib/engine/propertiesmap.cpp b/searchlib/src/vespa/searchlib/engine/propertiesmap.cpp index ca15294d5a4..f9045612849 100644 --- a/searchlib/src/vespa/searchlib/engine/propertiesmap.cpp +++ b/searchlib/src/vespa/searchlib/engine/propertiesmap.cpp @@ -3,10 +3,9 @@ #include "propertiesmap.h" #include -namespace search { -namespace engine { +namespace search::engine { -search::fef::Properties PropertiesMap::_emptyProperties; +fef::Properties PropertiesMap::_emptyProperties; PropertiesMap::PropertiesMap() : _propertiesMap() @@ -14,13 +13,13 @@ PropertiesMap::PropertiesMap() PropertiesMap::~PropertiesMap() { } -search::fef::Properties & +fef::Properties & PropertiesMap::lookupCreate(const vespalib::stringref &name) { return _propertiesMap[name]; } -const search::fef::Properties & +const fef::Properties & PropertiesMap::lookup(const vespalib::stringref &name) const { PropsMap::const_iterator pos = _propertiesMap.find(name); @@ -30,7 +29,7 @@ PropertiesMap::lookup(const vespalib::stringref &name) const return pos->second; } -} // namespace engine -} // namespace search +} VESPALIB_HASH_MAP_INSTANTIATE(vespalib::string, search::fef::Properties); + diff --git a/searchlib/src/vespa/searchlib/engine/request.cpp b/searchlib/src/vespa/searchlib/engine/request.cpp index e74152872b5..66b3bbac09b 100644 --- a/searchlib/src/vespa/searchlib/engine/request.cpp +++ b/searchlib/src/vespa/searchlib/engine/request.cpp @@ -2,8 +2,7 @@ #include "request.h" -namespace search { -namespace engine { +namespace search::engine { Request::Request(const fastos::TimeStamp &start_time) : _startTime(start_time), @@ -32,9 +31,6 @@ fastos::TimeStamp Request::getTimeLeft() const return _timeOfDoom - fastos::TimeStamp(fastos::ClockSystem::now()); } -Request::~Request() -{ -} +Request::~Request() = default; -} // namespace engine -} // namespace search +} diff --git a/searchlib/src/vespa/searchlib/engine/searchapi.h b/searchlib/src/vespa/searchlib/engine/searchapi.h index a0a177aed82..cdb974872cb 100644 --- a/searchlib/src/vespa/searchlib/engine/searchapi.h +++ b/searchlib/src/vespa/searchlib/engine/searchapi.h @@ -5,8 +5,7 @@ #include "searchrequest.h" #include "searchreply.h" -namespace search { -namespace engine { +namespace search::engine { /** * A search client is the object being notified of the completion of @@ -61,6 +60,5 @@ public: virtual ~SearchServer() {} }; -} // namespace engine -} // namespace search +} diff --git a/searchlib/src/vespa/searchlib/engine/searchreply.cpp b/searchlib/src/vespa/searchlib/engine/searchreply.cpp index c39013222f0..ef39e4da027 100644 --- a/searchlib/src/vespa/searchlib/engine/searchreply.cpp +++ b/searchlib/src/vespa/searchlib/engine/searchreply.cpp @@ -2,8 +2,7 @@ #include "searchreply.h" -namespace search { -namespace engine { +namespace search::engine { SearchReply::SearchReply() : valid(true), @@ -22,7 +21,7 @@ SearchReply::SearchReply() request() { } -SearchReply::~SearchReply() {} +SearchReply::~SearchReply() = default; SearchReply::SearchReply(const SearchReply &rhs) : valid (rhs.valid), @@ -41,5 +40,5 @@ SearchReply::SearchReply(const SearchReply &rhs) : request() // NB not copied { } -} // namespace engine -} // namespace search +} + diff --git a/searchlib/src/vespa/searchlib/engine/searchreply.h b/searchlib/src/vespa/searchlib/engine/searchreply.h index 554d4fb43c1..b1c55fea874 100644 --- a/searchlib/src/vespa/searchlib/engine/searchreply.h +++ b/searchlib/src/vespa/searchlib/engine/searchreply.h @@ -2,15 +2,13 @@ #pragma once -#include #include #include #include -#include #include +#include -namespace search { -namespace engine { +namespace search::engine { class SearchReply { @@ -86,6 +84,5 @@ public: uint32_t getDistributionKey() const { return _distributionKey; } }; -} // namespace engine -} // namespace search +} diff --git a/searchlib/src/vespa/searchlib/engine/searchrequest.cpp b/searchlib/src/vespa/searchlib/engine/searchrequest.cpp index dd432e7b390..7159c83716b 100644 --- a/searchlib/src/vespa/searchlib/engine/searchrequest.cpp +++ b/searchlib/src/vespa/searchlib/engine/searchrequest.cpp @@ -3,8 +3,7 @@ #include "searchrequest.h" #include "packetconverter.h" -namespace search { -namespace engine { +namespace search::engine { SearchRequest::SearchRequest() : SearchRequest(fastos::ClockSystem::now()) {} @@ -36,5 +35,5 @@ SearchRequest::Source::~Source() { } } -} // namespace engine -} // namespace search +} + diff --git a/searchlib/src/vespa/searchlib/engine/searchrequest.h b/searchlib/src/vespa/searchlib/engine/searchrequest.h index bb5cd376df5..805dd7703cd 100644 --- a/searchlib/src/vespa/searchlib/engine/searchrequest.h +++ b/searchlib/src/vespa/searchlib/engine/searchrequest.h @@ -2,14 +2,13 @@ #pragma once -#include #include "propertiesmap.h" #include "request.h" #include "source_description.h" -namespace search { -namespace fs4transport { class FS4Packet_QUERYX; } -namespace engine { +namespace search::fs4transport { class FS4Packet_QUERYX; } + +namespace search::engine { class SearchRequest : public Request { @@ -80,6 +79,5 @@ public: ~SearchRequest(); }; -} // namespace engine -} // namespace search +} diff --git a/searchlib/src/vespa/searchlib/engine/source_description.cpp b/searchlib/src/vespa/searchlib/engine/source_description.cpp index 36b7b36340e..bd285dcdee2 100644 --- a/searchlib/src/vespa/searchlib/engine/source_description.cpp +++ b/searchlib/src/vespa/searchlib/engine/source_description.cpp @@ -2,10 +2,9 @@ #include "source_description.h" -namespace search { -namespace engine { +namespace search::engine { const vespalib::string SourceDescription::protocol("FS4"); -} // namespace engine -} // namespace search +} + diff --git a/searchlib/src/vespa/searchlib/engine/source_description.h b/searchlib/src/vespa/searchlib/engine/source_description.h index 7d901f13ee3..21274d4b097 100644 --- a/searchlib/src/vespa/searchlib/engine/source_description.h +++ b/searchlib/src/vespa/searchlib/engine/source_description.h @@ -3,8 +3,7 @@ #pragma once #include -namespace search { -namespace engine { +namespace search::engine { struct SourceDescription { int listenPort; @@ -12,6 +11,5 @@ struct SourceDescription { SourceDescription(int port) : listenPort(port) {} }; -} // namespace engine -} // namespace search +} diff --git a/searchlib/src/vespa/searchlib/engine/tracereply.h b/searchlib/src/vespa/searchlib/engine/tracereply.h index ebea612d125..32de6e6e6eb 100644 --- a/searchlib/src/vespa/searchlib/engine/tracereply.h +++ b/searchlib/src/vespa/searchlib/engine/tracereply.h @@ -3,14 +3,12 @@ #include "propertiesmap.h" -namespace search { -namespace engine { +namespace search::engine { struct TraceReply { PropertiesMap propertiesMap; }; -} // namespace engine -} // namespace search +} diff --git a/searchlib/src/vespa/searchlib/engine/transport_metrics.cpp b/searchlib/src/vespa/searchlib/engine/transport_metrics.cpp index c2057f49bd8..b3696641f8e 100644 --- a/searchlib/src/vespa/searchlib/engine/transport_metrics.cpp +++ b/searchlib/src/vespa/searchlib/engine/transport_metrics.cpp @@ -2,8 +2,7 @@ #include "transport_metrics.h" -namespace search { -namespace engine { +namespace search::engine { TransportMetrics::QueryMetrics::QueryMetrics(metrics::MetricSet *parent) : metrics::MetricSet("query", "", "Query metrics", parent), @@ -12,7 +11,7 @@ TransportMetrics::QueryMetrics::QueryMetrics(metrics::MetricSet *parent) { } -TransportMetrics::QueryMetrics::~QueryMetrics() { } +TransportMetrics::QueryMetrics::~QueryMetrics() = default; TransportMetrics::DocsumMetrics::DocsumMetrics(metrics::MetricSet *parent) : metrics::MetricSet("docsum", "", "Docsum metrics", parent), @@ -22,7 +21,7 @@ TransportMetrics::DocsumMetrics::DocsumMetrics(metrics::MetricSet *parent) { } -TransportMetrics::DocsumMetrics::~DocsumMetrics() { } +TransportMetrics::DocsumMetrics::~DocsumMetrics() = default; TransportMetrics::TransportMetrics() : metrics::MetricSet("transport", "", "Transport server metrics", 0), @@ -32,7 +31,7 @@ TransportMetrics::TransportMetrics() { } -TransportMetrics::~TransportMetrics() { } +TransportMetrics::~TransportMetrics() = default; + +} -} // namespace engine -} // namespace search diff --git a/searchlib/src/vespa/searchlib/engine/transport_metrics.h b/searchlib/src/vespa/searchlib/engine/transport_metrics.h index 288c7f12e2d..8b85438f688 100644 --- a/searchlib/src/vespa/searchlib/engine/transport_metrics.h +++ b/searchlib/src/vespa/searchlib/engine/transport_metrics.h @@ -5,8 +5,7 @@ #include #include -namespace search { -namespace engine { +namespace search::engine { struct TransportMetrics : metrics::MetricSet { @@ -32,9 +31,8 @@ struct TransportMetrics : metrics::MetricSet DocsumMetrics docsum; TransportMetrics(); - ~TransportMetrics(); + ~TransportMetrics() override; }; -} // namespace engine -} // namespace search +} diff --git a/searchlib/src/vespa/searchlib/engine/transportserver.cpp b/searchlib/src/vespa/searchlib/engine/transportserver.cpp index 864903bbc44..c97995db44d 100644 --- a/searchlib/src/vespa/searchlib/engine/transportserver.cpp +++ b/searchlib/src/vespa/searchlib/engine/transportserver.cpp @@ -11,8 +11,7 @@ #include LOG_SETUP(".engine.transportserver"); -namespace search { -namespace engine { +namespace search::engine { //----------------------------------------------------------------------------- @@ -424,5 +423,5 @@ TransportServer::~TransportServer() } } -} // namespace engine -} // namespace search +} + diff --git a/searchlib/src/vespa/searchlib/engine/transportserver.h b/searchlib/src/vespa/searchlib/engine/transportserver.h index 76fba4e96fc..76327dd8fcd 100644 --- a/searchlib/src/vespa/searchlib/engine/transportserver.h +++ b/searchlib/src/vespa/searchlib/engine/transportserver.h @@ -4,21 +4,20 @@ #include "transport_metrics.h" #include "source_description.h" +#include "searchapi.h" +#include "docsumapi.h" +#include "monitorapi.h" +#include #include #include #include #include -#include -#include -#include -#include -#include -#include #include #include +#include +#include -namespace search { -namespace engine { +namespace search::engine { /** * Common transport server implementation interacting with the @@ -331,6 +330,5 @@ public: ~TransportServer(); }; -} // namespace engine -} // namespace search +} -- cgit v1.2.3 From 830854d706f75b78d4d6a281bec273cc3f89aba4 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Fri, 2 Feb 2018 14:26:19 +0100 Subject: Use schematic 'type', 'message', 'details' error schema. --- .../src/tests/proton/docsummary/docsummary.cpp | 73 ++++++++++++++++------ .../tests/proton/summaryengine/summaryengine.cpp | 3 - .../searchcore/proton/docsummary/docsumcontext.cpp | 57 +++++++++-------- .../proton/docsummary/documentstoreadapter.cpp | 1 + .../vespa/searchcore/proton/server/rpc_hooks.cpp | 1 - .../slime_summary/slime_summary_test.cpp | 4 -- 6 files changed, 84 insertions(+), 55 deletions(-) (limited to 'searchcore') diff --git a/searchcore/src/tests/proton/docsummary/docsummary.cpp b/searchcore/src/tests/proton/docsummary/docsummary.cpp index ff393682f9b..518ec07330a 100644 --- a/searchcore/src/tests/proton/docsummary/docsummary.cpp +++ b/searchcore/src/tests/proton/docsummary/docsummary.cpp @@ -57,6 +57,7 @@ using vespalib::tensor::Tensor; using vespalib::tensor::TensorCells; using vespalib::tensor::TensorDimensions; using vespalib::tensor::TensorFactory; +using namespace vespalib::slime; typedef std::unique_ptr GeneralResultPtr; @@ -143,18 +144,18 @@ Tensor::UP createTensor(const TensorCells &cells, vespalib::string asVstring(vespalib::Memory str) { return vespalib::string(str.data, str.size); } -vespalib::string asVstring(const vespalib::slime::Inspector &value) { +vespalib::string asVstring(const Inspector &value) { return asVstring(value.asString()); } void decode(const ResEntry *entry, vespalib::Slime &slime) { vespalib::Memory mem(entry->_dataval, entry->_datalen); - size_t decodeRes = vespalib::slime::BinaryFormat::decode(mem, slime); + size_t decodeRes = BinaryFormat::decode(mem, slime); ASSERT_EQUAL(decodeRes, mem.size); } -std::string b64encode(const vespalib::slime::Inspector &value) { +std::string b64encode(const Inspector &value) { vespalib::Memory mem = value.asData(); std::string str(mem.data, mem.size); return vespalib::Base64::encode(str); @@ -274,12 +275,6 @@ private: ResultConfig _resultCfg; std::set _markupFields; - const vespa::config::search::SummaryConfig & - getSummaryConfig() const - { - return *_summaryCfg; - } - const ResultConfig &getResultConfig() const { return _resultCfg; @@ -335,6 +330,7 @@ private: void requireThatPositionsAreUsed(); void requireThatRawFieldsWorks(); void requireThatFieldCacheRepoCanReturnDefaultFieldCache(); + void requireThatSummariesTimeout(); public: Test(); @@ -409,7 +405,7 @@ Test::assertTensor(const Tensor::UP & exp, const std::string & fieldName, vespalib::Slime slime; vespalib::Memory serialized(docsum.data.c_str() + sizeof(classId), docsum.data.size() - sizeof(classId)); - size_t decodeRes = vespalib::slime::BinaryFormat::decode(serialized, + size_t decodeRes = BinaryFormat::decode(serialized, slime); ASSERT_EQUAL(decodeRes, serialized.size); @@ -424,9 +420,8 @@ Test::assertTensor(const Tensor::UP & exp, const std::string & fieldName, } } - -bool -Test::assertSlime(const std::string &exp, const DocsumReply &reply, uint32_t id, bool relaxed) +vespalib::Slime +getSlime(const DocsumReply &reply, uint32_t id, bool relaxed) { const DocsumReply::Docsum & docsum = reply.docsums[id]; uint32_t classId; @@ -435,20 +430,26 @@ Test::assertSlime(const std::string &exp, const DocsumReply &reply, uint32_t id, ASSERT_EQUAL(::search::fs4transport::SLIME_MAGIC_ID, classId); vespalib::Slime slime; vespalib::Memory serialized(docsum.data.c_str() + sizeof(classId), - docsum.data.size() - sizeof(classId)); - size_t decodeRes = vespalib::slime::BinaryFormat::decode(serialized, - slime); + docsum.data.size() - sizeof(classId)); + size_t decodeRes = BinaryFormat::decode(serialized, slime); ASSERT_EQUAL(decodeRes, serialized.size); if (relaxed) { vespalib::SimpleBuffer buf; - vespalib::slime::JsonFormat::encode(slime, buf, false); + JsonFormat::encode(slime, buf, false); vespalib::Slime tmpSlime; - size_t used = vespalib::slime::JsonFormat::decode(buf.get(), tmpSlime); + size_t used = JsonFormat::decode(buf.get(), tmpSlime); EXPECT_TRUE(used > 0); slime = std::move(tmpSlime); } + return slime; +} + +bool +Test::assertSlime(const std::string &exp, const DocsumReply &reply, uint32_t id, bool relaxed) +{ + vespalib::Slime slime = getSlime(reply, id, relaxed); vespalib::Slime expSlime; - size_t used = vespalib::slime::JsonFormat::decode(exp, expSlime); + size_t used = JsonFormat::decode(exp, expSlime); EXPECT_TRUE(used > 0); return EXPECT_EQUAL(expSlime, slime); } @@ -664,9 +665,40 @@ Test::requireThatRewritersAreUsed() req.hits.push_back(DocsumRequest::Hit(gid1)); DocsumReply::UP rep = dc._ddb->getDocsums(req); EXPECT_EQUAL(1u, rep->docsums.size()); - EXPECT_TRUE(assertSlime("{aa:20}", *rep, 0, false)); + vespalib::SimpleBuffer buf; + vespalib::Slime summary = getSlime(*rep, 0, false); + JsonFormat::encode(summary, buf, false); + EXPECT_TRUE(vespalib::Regexp("Timed out with -[0-9]+us left.").match(buf.get().make_stringref())); } +void +Test::requireThatSummariesTimeout() +{ + Schema s; + s.addSummaryField(Schema::SummaryField("aa", schema::DataType::INT32)); + s.addSummaryField(Schema::SummaryField("ab", schema::DataType::INT32)); + + BuildContext bc(s); + DBContext dc(bc._repo, getDocTypeName()); + dc.put(*bc._bld.startDocument("doc::1"). + startSummaryField("aa"). + addInt(10). + endField(). + startSummaryField("ab"). + addInt(20). + endField(). + endDocument(), + 1); + + DocsumRequest req; + req.setTimeout(0); + EXPECT_TRUE(req.expired()); + req.resultClassName = "class2"; + req.hits.push_back(DocsumRequest::Hit(gid1)); + DocsumReply::UP rep = dc._ddb->getDocsums(req); + EXPECT_EQUAL(1u, rep->docsums.size()); + EXPECT_TRUE(assertSlime("{aa:20}", *rep, 0, false)); +} void addField(Schema & s, @@ -1288,6 +1320,7 @@ Test::Main() TEST_DO(requireThatPositionsAreUsed()); TEST_DO(requireThatRawFieldsWorks()); TEST_DO(requireThatFieldCacheRepoCanReturnDefaultFieldCache()); + TEST_DO(requireThatSummariesTimeout()); TEST_DONE(); } diff --git a/searchcore/src/tests/proton/summaryengine/summaryengine.cpp b/searchcore/src/tests/proton/summaryengine/summaryengine.cpp index 4951b1cd569..408ca27c16e 100644 --- a/searchcore/src/tests/proton/summaryengine/summaryengine.cpp +++ b/searchcore/src/tests/proton/summaryengine/summaryengine.cpp @@ -9,9 +9,6 @@ #include #include #include -#include -#include -#include #include LOG_SETUP("summaryengine_test"); diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp index 7cc2a724707..da936a9d7af 100644 --- a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp +++ b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp @@ -7,6 +7,7 @@ #include #include #include + #include LOG_SETUP(".proton.docsummary.docsumcontext"); @@ -21,6 +22,7 @@ using vespalib::slime::Symbol; using vespalib::slime::Inserter; using vespalib::slime::ObjectSymbolInserter; using vespalib::Slime; +using vespalib::make_string; using namespace search; using namespace search::attribute; using namespace search::engine; @@ -34,10 +36,11 @@ namespace { Memory DOCSUMS("docsums"); Memory DOCSUM("docsum"); - -void addTimedOut(Inserter & inserter, fastos::TimeStamp left) { - inserter.insertObject().setString("error", vespalib::make_string("Timed out with %ldus left.", left.us())); -} +Memory ERRORS("errors"); +Memory TYPE("type"); +Memory MESSAGE("message"); +Memory DETAILS("details"); +Memory TIMEOUT("timeout"); } @@ -49,11 +52,10 @@ DocsumContext::initState() _docsumState._args.SetQueryFlags(req.queryFlags & ~search::fs4transport::QFLAG_DROP_SORTDATA); _docsumState._docsumcnt = req.hits.size(); - if (_docsumState._docsumcnt > 0) { - _docsumState._docsumbuf = (uint32_t*)malloc(sizeof(uint32_t) * _docsumState._docsumcnt); - } else { - _docsumState._docsumbuf = NULL; - } + _docsumState._docsumbuf = (_docsumState._docsumcnt > 0) + ? (uint32_t*)malloc(sizeof(uint32_t) * _docsumState._docsumcnt) + : nullptr; + for (uint32_t i = 0; i < _docsumState._docsumcnt; i++) { _docsumState._docsumbuf[i] = req.hits[i].docid; } @@ -76,7 +78,7 @@ DocsumContext::createReply() Slime slime(Slime::Params(std::move(symbols))); vespalib::slime::SlimeInserter inserter(slime); if (_request.expired()) { - addTimedOut(inserter, _request.getTimeLeft()); + inserter.insertString(make_string("Timed out with %ldus left.", _request.getTimeLeft().us())); } else { _docsumWriter.insertDocsum(rci, docId, &_docsumState, &_docsumStore, slime, inserter); } @@ -110,30 +112,32 @@ DocsumContext::createSlimeReply() Cursor & root = response->setObject(); 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) { + IDocsumWriter::ResolveClassInfo rci = _docsumWriter.resolveClassInfo(_docsumState._args.getResultClassName(), + _docsumStore.getSummaryClassId()); + uint32_t i(0); + for (i = 0; (i < _docsumState._docsumcnt) && !_request.expired(); ++i) { uint32_t docId = _docsumState._docsumbuf[i]; Cursor & docSumC = array.addObject(); ObjectSymbolInserter inserter(docSumC, docsumSym); if ((docId != search::endDocId) && !rci.mustSkip) { - if (_request.expired()) { - addTimedOut(inserter, _request.getTimeLeft()); - } else { - _docsumWriter.insertDocsum(rci, docId, &_docsumState, &_docsumStore, *response, inserter); - } + _docsumWriter.insertDocsum(rci, docId, &_docsumState, &_docsumStore, *response, inserter); } } + if (i != _docsumState._docsumcnt) { + const uint32_t numTimedOut = _docsumState._docsumcnt - 1; + Cursor & errors = root.setArray(ERRORS); + Cursor & timeout = errors.addObject(); + timeout.setString(TYPE, TIMEOUT); + timeout.setString(MESSAGE, make_string("Timed out %d summaries with %ldus left.", + numTimedOut, _request.getTimeLeft().us())); + } return response; } -DocsumContext::DocsumContext(const DocsumRequest & request, - IDocsumWriter & docsumWriter, - IDocsumStore & docsumStore, - const Matcher::SP & matcher, - ISearchContext & searchCtx, - IAttributeContext & attrCtx, - search::IAttributeManager & attrMgr, - SessionManager & sessionMgr) : +DocsumContext::DocsumContext(const DocsumRequest & request, IDocsumWriter & docsumWriter, + IDocsumStore & docsumStore, const Matcher::SP & matcher, + ISearchContext & searchCtx, IAttributeContext & attrCtx, + search::IAttributeManager & attrMgr, SessionManager & sessionMgr) : _request(request), _docsumWriter(docsumWriter), _docsumStore(docsumStore), @@ -195,8 +199,7 @@ Location *getLocation(const string &loc_str, search::IAttributeManager &attrMgr) loc->setVecGuard(std::move(vec)); location = loc_str.substr(pos + 1); } else { - LOG(warning, "Location string lacks attribute vector specification. " - "loc='%s'", loc_str.c_str()); + LOG(warning, "Location string lacks attribute vector specification. loc='%s'", loc_str.c_str()); location = loc_str; } loc->parse(location); diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.cpp index eb1302f9d4d..85ae621db48 100644 --- a/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.cpp +++ b/searchcore/src/vespa/searchcore/proton/docsummary/documentstoreadapter.cpp @@ -7,6 +7,7 @@ #include #include #include + #include LOG_SETUP(".proton.docsummary.documentstoreadapter"); diff --git a/searchcore/src/vespa/searchcore/proton/server/rpc_hooks.cpp b/searchcore/src/vespa/searchcore/proton/server/rpc_hooks.cpp index 913efa469d3..b7210988de2 100644 --- a/searchcore/src/vespa/searchcore/proton/server/rpc_hooks.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/rpc_hooks.cpp @@ -4,7 +4,6 @@ #include "proton.h" #include #include -#include #include LOG_SETUP(".proton.server.rtchooks"); diff --git a/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp b/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp index b2e324eb42e..5d6565ceadb 100644 --- a/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp +++ b/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp @@ -3,12 +3,8 @@ #include #include #include -#include #include #include -#include -#include -#include #include using namespace vespalib::slime::convenience; -- cgit v1.2.3 From 8d6c9b50c3c27df161c615ad0a955c3d11fc1400 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Fri, 2 Feb 2018 14:58:10 +0100 Subject: Put the right assert in the right testcase. --- searchcore/src/tests/proton/docsummary/docsummary.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'searchcore') diff --git a/searchcore/src/tests/proton/docsummary/docsummary.cpp b/searchcore/src/tests/proton/docsummary/docsummary.cpp index 518ec07330a..0338bb5506a 100644 --- a/searchcore/src/tests/proton/docsummary/docsummary.cpp +++ b/searchcore/src/tests/proton/docsummary/docsummary.cpp @@ -665,10 +665,7 @@ Test::requireThatRewritersAreUsed() req.hits.push_back(DocsumRequest::Hit(gid1)); DocsumReply::UP rep = dc._ddb->getDocsums(req); EXPECT_EQUAL(1u, rep->docsums.size()); - vespalib::SimpleBuffer buf; - vespalib::Slime summary = getSlime(*rep, 0, false); - JsonFormat::encode(summary, buf, false); - EXPECT_TRUE(vespalib::Regexp("Timed out with -[0-9]+us left.").match(buf.get().make_stringref())); + EXPECT_TRUE(assertSlime("{aa:20}", *rep, 0, false)); } void @@ -697,7 +694,10 @@ Test::requireThatSummariesTimeout() req.hits.push_back(DocsumRequest::Hit(gid1)); DocsumReply::UP rep = dc._ddb->getDocsums(req); EXPECT_EQUAL(1u, rep->docsums.size()); - EXPECT_TRUE(assertSlime("{aa:20}", *rep, 0, false)); + vespalib::SimpleBuffer buf; + vespalib::Slime summary = getSlime(*rep, 0, false); + JsonFormat::encode(summary, buf, false); + EXPECT_TRUE(vespalib::Regexp("Timed out with -[0-9]+us left.").match(buf.get().make_stringref())); } void -- cgit v1.2.3 From 36e0c35d559375de02e5332c3b2de9c0c7e0bf84 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Fri, 2 Feb 2018 15:30:10 +0100 Subject: Even though visually similar, semantic similarity of '1' and 'i' are close to zero. --- searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'searchcore') diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp index da936a9d7af..dac9753773c 100644 --- a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp +++ b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp @@ -124,7 +124,7 @@ DocsumContext::createSlimeReply() } } if (i != _docsumState._docsumcnt) { - const uint32_t numTimedOut = _docsumState._docsumcnt - 1; + const uint32_t numTimedOut = _docsumState._docsumcnt - i; Cursor & errors = root.setArray(ERRORS); Cursor & timeout = errors.addObject(); timeout.setString(TYPE, TIMEOUT); -- cgit v1.2.3