diff options
author | Henning Baldersheim <balder@oath.com> | 2018-02-09 09:58:47 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@oath.com> | 2018-02-09 09:58:47 +0100 |
commit | e5bddcb27e266d6545775843eeca617306de5ff6 (patch) | |
tree | a9704bbc5a9ca246dd98f6d938aa99245c31f075 | |
parent | 3e349b470c968586116245ef9a8719002cdf47b7 (diff) |
Ensure that we filter and QFLAGS and do not automatically say we have the same capabilities as our master.
7 files changed, 17 insertions, 8 deletions
diff --git a/searchcore/src/vespa/searchcore/fdispatch/search/fnet_search.cpp b/searchcore/src/vespa/searchcore/fdispatch/search/fnet_search.cpp index 98642c6edf6..ba67b533ca5 100644 --- a/searchcore/src/vespa/searchcore/fdispatch/search/fnet_search.cpp +++ b/searchcore/src/vespa/searchcore/fdispatch/search/fnet_search.cpp @@ -1151,7 +1151,7 @@ FastS_FNET_Search::setupQueryPacket(uint32_t hitsPerNode, uint32_t qflags, qx._features = search::fs4transport::QF_PARSEDQUERY | search::fs4transport::QF_RANKP; qx._offset = _util.GetAlignedSearchOffset(); qx._maxhits = hitsPerNode; // capped maxhits - qx._qflags = qflags; // filtered query flags + qx.setQueryFlags(qflags); qx.setTimeout(_queryArgs->getTimeLeft()); qx.setRanking(_queryArgs->ranking); diff --git a/searchlib/src/tests/common/packets/packets_test.cpp b/searchlib/src/tests/common/packets/packets_test.cpp index ad4cf02f4e8..060a07dcdac 100644 --- a/searchlib/src/tests/common/packets/packets_test.cpp +++ b/searchlib/src/tests/common/packets/packets_test.cpp @@ -398,7 +398,7 @@ createAndFill_QUERYX() EXPECT_EQUAL(0l, src->getTimeout()); src->setTimeout(fastos::TimeStamp(4*fastos::TimeStamp::MS)); EXPECT_EQUAL(fastos::TimeStamp(4*fastos::TimeStamp::MS), src->getTimeout()); - src->_qflags = 5u; + src->setQueryFlags(5u); src->setRanking("seven"); src->_numStackItems = 14u; src->_propsVector.resize(2); @@ -419,7 +419,7 @@ verifyQueryX(FS4Packet_QUERYX & queryX, uint32_t features) EXPECT_EQUAL(2u, queryX._offset); EXPECT_EQUAL(3u, queryX._maxhits); EXPECT_EQUAL(fastos::TimeStamp(4*fastos::TimeStamp::MS), queryX.getTimeout()); - EXPECT_EQUAL(0x5u, queryX._qflags); + EXPECT_EQUAL(0x1u, queryX.getQueryFlags()); //Filtered if (queryX._features & QF_RANKP) { EXPECT_EQUAL("seven", queryX._ranking); } else { diff --git a/searchlib/src/tests/engine/searchapi/searchapi_test.cpp b/searchlib/src/tests/engine/searchapi/searchapi_test.cpp index 3e8be3a99fc..a517890620c 100644 --- a/searchlib/src/tests/engine/searchapi/searchapi_test.cpp +++ b/searchlib/src/tests/engine/searchapi/searchapi_test.cpp @@ -54,7 +54,7 @@ Test::convertToRequest() src._offset = 2u; src._maxhits = 3u; src.setTimeout(fastos::TimeStamp(4*fastos::TimeStamp::MS)); - src._qflags = 5u; + src.setQueryFlags(5u); src._features |= QF_RANKP; src.setRanking("seven"); src._features |= QF_PROPERTIES; @@ -92,7 +92,7 @@ Test::convertToRequest() EXPECT_EQUAL(dst.offset, 2u); EXPECT_EQUAL(dst.maxhits, 3u); EXPECT_EQUAL((dst.getTimeOfDoom() - dst.getStartTime()).ms(), 4u); - EXPECT_EQUAL(dst.queryFlags, 5u); + EXPECT_EQUAL(dst.queryFlags, 1u); //Filtered EXPECT_EQUAL(vespalib::string("seven"), dst.ranking); EXPECT_EQUAL(dst.propertiesMap.size(), 2u); EXPECT_EQUAL(dst.propertiesMap.featureOverrides().lookup("p1k1").get(), std::string("p1v1")); diff --git a/searchlib/src/vespa/searchlib/common/packets.cpp b/searchlib/src/vespa/searchlib/common/packets.cpp index 4bb11acaabb..4a436b3ae82 100644 --- a/searchlib/src/vespa/searchlib/common/packets.cpp +++ b/searchlib/src/vespa/searchlib/common/packets.cpp @@ -1172,10 +1172,10 @@ FS4Packet_QUERYRESULTX::toString(uint32_t indent) const FS4Packet_QUERYX::FS4Packet_QUERYX() : FS4Packet(), _timeout(0), + _qflags(0), _features(0), _offset(0), _maxhits(0), - _qflags(0), _ranking(), _propsVector(), _sortSpec(), diff --git a/searchlib/src/vespa/searchlib/common/packets.h b/searchlib/src/vespa/searchlib/common/packets.h index a876400e503..23411dcb322 100644 --- a/searchlib/src/vespa/searchlib/common/packets.h +++ b/searchlib/src/vespa/searchlib/common/packets.h @@ -42,6 +42,12 @@ enum fnet_feature_masks { GDF_RESCLASSNAME | GDF_PROPERTIES | GDF_FLAGS), + FNET_QFLAG_SUPPORTED_MASK = (QFLAG_EXTENDED_COVERAGE | + QFLAG_COVERAGE_NODES | + QFLAG_ESTIMATE | + QFLAG_DROP_SORTDATA | + QFLAG_NO_RESULTCACHE | + QFLAG_DUMP_FEATURES), FNET_MQF_SUPPORTED_MASK = (MQF_QFLAGS), @@ -441,12 +447,12 @@ private: FS4Packet_QUERYX& operator=(const FS4Packet_QUERYX &); uint32_t _timeout; + uint32_t _qflags; public: uint32_t _features; // see query_features uint32_t _offset; uint32_t _maxhits; - uint32_t _qflags; string _ranking; // if QF_RANKP PropsVector _propsVector; // if QF_PROPERTIES string _sortSpec; // if QF_SORTSPEC @@ -457,6 +463,7 @@ public: uint32_t _numStackItems; // if QF_PARSEDQUERY string _stackDump; // if QF_PARSEDQUERY + void setQueryFlags(uint32_t qflags) { _qflags = FNET_QFLAG_SUPPORTED_MASK & qflags; } void setRanking(const vespalib::stringref &ranking) { _ranking = ranking; } void setSortSpec(const vespalib::stringref &spec) { _sortSpec = spec; } void setGroupSpec(const vespalib::stringref &spec) { _groupSpec = spec; } @@ -465,6 +472,7 @@ public: void setStackDump(const vespalib::stringref &buf) { _stackDump = buf; } void setTimeout(const fastos::TimeStamp & timeout); fastos::TimeStamp getTimeout() const; + uint32_t getQueryFlags() const { return _qflags; } explicit FS4Packet_QUERYX(); ~FS4Packet_QUERYX(); diff --git a/searchlib/src/vespa/searchlib/common/transport.h b/searchlib/src/vespa/searchlib/common/transport.h index b6a925240c9..55cb44a34d0 100644 --- a/searchlib/src/vespa/searchlib/common/transport.h +++ b/searchlib/src/vespa/searchlib/common/transport.h @@ -12,6 +12,7 @@ namespace search::fs4transport { * are as follows: * <ul> * <li><b>QFLAG_EXTENDED_COVERAGE</b>: Indicates that the it is able to receive extended coverage information.</li> + * <li><b>QFLAG_COVERAGE_NODES</b>: Indicate that it is able to handle nodes information.</li> * <li><b>QFLAG_ESTIMATE</b>: Indicates that the query is performed to get * an estimate of the total number of hits</li> * <li><b>QFLAG_DUMP_FEATURES</b>: Dump detailed ranking information. Note that diff --git a/searchlib/src/vespa/searchlib/engine/packetconverter.cpp b/searchlib/src/vespa/searchlib/engine/packetconverter.cpp index 2ebbb9bf89c..e6fb37223d6 100644 --- a/searchlib/src/vespa/searchlib/engine/packetconverter.cpp +++ b/searchlib/src/vespa/searchlib/engine/packetconverter.cpp @@ -55,7 +55,7 @@ PacketConverter::toSearchRequest(const QUERYX &packet, SearchRequest &request) request.offset = packet._offset; request.maxhits = packet._maxhits; request.setTimeout(packet.getTimeout()); - request.queryFlags = packet._qflags; + request.queryFlags = packet.getQueryFlags(); request.ranking = packet._ranking; for (uint32_t i = 0; i < packet._propsVector.size(); ++i) { |