summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2016-10-17 16:26:29 +0200
committerGitHub <noreply@github.com>2016-10-17 16:26:29 +0200
commit520a8e4ae5c186ed6b532729efd2704848b6cf0a (patch)
tree2f086ee72b2ad9555564b5b102477c90c89f6500 /searchlib
parent65dc70a4c206055aebb7080a0286ad82bce43972 (diff)
parent32a99639e4d945c0d90451a2bfcd63b3679f9bcc (diff)
Merge pull request #894 from yahoo/balder/always-provide-coverage
Balder/always provide coverage
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/tests/common/packets/packets_test.cpp74
-rw-r--r--searchlib/src/tests/engine/searchapi/searchapi_test.cpp13
-rw-r--r--searchlib/src/vespa/searchlib/common/packets.cpp671
-rw-r--r--searchlib/src/vespa/searchlib/common/packets.h84
-rw-r--r--searchlib/src/vespa/searchlib/common/transport.h158
-rw-r--r--searchlib/src/vespa/searchlib/engine/packetconverter.cpp10
-rw-r--r--searchlib/src/vespa/searchlib/engine/packetconverter.h1
-rw-r--r--searchlib/src/vespa/searchlib/engine/searchreply.cpp6
-rw-r--r--searchlib/src/vespa/searchlib/engine/searchreply.h4
-rw-r--r--searchlib/src/vespa/searchlib/engine/transportserver.cpp11
10 files changed, 211 insertions, 821 deletions
diff --git a/searchlib/src/tests/common/packets/packets_test.cpp b/searchlib/src/tests/common/packets/packets_test.cpp
index 443436537e1..9e8f6698220 100644
--- a/searchlib/src/tests/common/packets/packets_test.cpp
+++ b/searchlib/src/tests/common/packets/packets_test.cpp
@@ -136,6 +136,16 @@ TEST("testPacketFactory") {
for (uint32_t pcode = PCODE_BEGIN; pcode < PCODE_END; ++pcode) {
if ((pcode != PCODE_MLD_QUERYRESULT2_NOTUSED) &&
(pcode != PCODE_QUERY_NOTUSED) &&
+ (pcode != PCODE_MONITORQUERY_NOTUSED) &&
+ (pcode != PCODE_GETDOCSUMS_NOTUSED) &&
+ (pcode != PCODE_MLD_GETDOCSUMS_NOTUSED) &&
+ (pcode != PCODE_QUERYRESULT_NOTUSED) &&
+ (pcode != PCODE_MLD_QUERYRESULT_NOTUSED) &&
+ (pcode != PCODE_MONITORRESULT_NOTUSED) &&
+ (pcode != PCODE_MLD_MONITORRESULT_NOTUSED) &&
+ (pcode != PCODE_CLEARCACHES_NOTUSED) &&
+ (pcode != PCODE_PARSEDQUERY2_NOTUSED) &&
+ (pcode != PCODE_QUEUELEN_NOTUSED) &&
(pcode != PCODE_QUERY2_NOTUSED) &&
(pcode != PCODE_MLD_GETDOCSUMS2_NOTUSED))
{
@@ -306,42 +316,6 @@ TEST("testMonitorResultX") {
}
}
-TEST("testClearCaches") {
- FS4Packet_CLEARCACHES *src = dynamic_cast<FS4Packet_CLEARCACHES*>(FS4PacketFactory::CreateFS4Packet(PCODE_CLEARCACHES));
- ASSERT_TRUE(src != NULL);
-
- std::vector<FNET_Packet*> lst { src, testEncodeDecode(*src) };
-
- for (FNET_Packet * packet : lst) {
- FS4Packet_CLEARCACHES *ptr = dynamic_cast<FS4Packet_CLEARCACHES*>(packet);
- ASSERT_TRUE(ptr != NULL);
- EXPECT_EQUAL((uint32_t)PCODE_CLEARCACHES, ptr->GetPCODE());
- EXPECT_EQUAL(0u, ptr->GetLength());
-
- delete ptr;
- }
-}
-
-TEST("testQueueLen") {
- FS4Packet_QUEUELEN *src = dynamic_cast<FS4Packet_QUEUELEN*>(FS4PacketFactory::CreateFS4Packet(PCODE_QUEUELEN));
- ASSERT_TRUE(src != NULL);
- src->_queueLen = 1u;
- src->_dispatchers = 2u;
-
- std::vector<FNET_Packet*> lst { src, testEncodeDecode(*src) };
-
- for (FNET_Packet * packet : lst) {
- FS4Packet_QUEUELEN *ptr = dynamic_cast<FS4Packet_QUEUELEN*>(packet);
- ASSERT_TRUE(ptr != NULL);
- EXPECT_EQUAL((uint32_t)PCODE_QUEUELEN, ptr->GetPCODE());
- EXPECT_EQUAL(8u, ptr->GetLength());
- EXPECT_EQUAL(1u, ptr->_queueLen);
- EXPECT_EQUAL(2u, ptr->_dispatchers);
-
- delete ptr;
- }
-}
-
TEST("testQueryResultX") {
FS4Packet_QUERYRESULTX *src = dynamic_cast<FS4Packet_QUERYRESULTX*>(FS4PacketFactory::CreateFS4Packet(PCODE_QUERYRESULTX));
ASSERT_TRUE(src != NULL);
@@ -353,7 +327,6 @@ TEST("testQueryResultX") {
src->_activeDocs = 7u;
uint32_t sortIndex[3] = { 0u, 1u, 3u /* size of data */}; // numDocs + 1
src->SetSortDataRef(2, sortIndex, "foo");
- src->SetAggrDataRef("bar", 3u);
src->SetGroupDataRef("baz", 3u);
src->AllocateHits(2);
src->_hits[0]._gid = gid0;
@@ -396,12 +369,6 @@ TEST("testQueryResultX") {
EXPECT_EQUAL((void*)NULL, ptr->_sortIndex);
EXPECT_EQUAL((void*)NULL, ptr->_sortData);
}
- if (ptr->_features & QRF_AGGRDATA) {
- EXPECT_EQUAL("bar", std::string(ptr->_aggrData, ptr->_aggrDataLen));
- } else {
- EXPECT_EQUAL(0u, ptr->_aggrDataLen);
- EXPECT_EQUAL((void*)NULL, ptr->_aggrData);
- }
if (ptr->_features & QRF_GROUPDATA) {
EXPECT_EQUAL("baz", std::string(ptr->_groupData, ptr->_groupDataLen));
} else {
@@ -440,7 +407,6 @@ createAndFill_QUERYX()
fillProperties(src->_propsVector[0], "foo", 8);
fillProperties(src->_propsVector[1], "bar", 16);
src->setSortSpec("sortspec");
- src->setAggrSpec("aggrspec");
src->setGroupSpec("groupspec");
src->setLocation("location");
src->setStackDump("stackdump");
@@ -474,11 +440,6 @@ verifyQueryX(FS4Packet_QUERYX & queryX, uint32_t features)
} else {
EXPECT_EQUAL(0u, queryX._sortSpec.size());
}
- if (queryX._features & QF_AGGRSPEC) {
- EXPECT_EQUAL("aggrspec", queryX._aggrSpec);
- } else {
- EXPECT_EQUAL(0u, queryX._aggrSpec.size());
- }
if (queryX._features & QF_GROUPSPEC) {
EXPECT_EQUAL("groupspec", queryX._groupSpec);
} else {
@@ -545,13 +506,13 @@ TEST("test pre serializing packets no compression") {
queryX->_features=FNET_QF_SUPPORTED_MASK;
FNET_Packet::UP decoded(testEncodeDecode(*src));
verifyQueryX(*static_cast<FS4Packet_QUERYX *>(decoded.get()), FNET_QF_SUPPORTED_MASK);
- EXPECT_EQUAL(512u, src->GetLength());
+ EXPECT_EQUAL(500u, src->GetLength());
EXPECT_EQUAL(src->GetLength(), decoded->GetLength());
FS4Packet_PreSerialized serialized(*src);
EXPECT_EQUAL(218u, serialized.GetPCODE());
- EXPECT_EQUAL(512u, serialized.GetLength());
+ EXPECT_EQUAL(500u, serialized.GetLength());
FNET_Packet::UP decoded2(testEncodeDecode(serialized));
- EXPECT_EQUAL(512u, decoded2->GetLength());
+ EXPECT_EQUAL(500u, decoded2->GetLength());
verifyQueryX(*static_cast<FS4Packet_QUERYX *>(decoded2.get()), FNET_QF_SUPPORTED_MASK);
}
@@ -561,14 +522,14 @@ TEST("test pre serializing packets with compression") {
queryX->_features=FNET_QF_SUPPORTED_MASK;
FNET_Packet::UP decoded(testEncodeDecode(*src));
verifyQueryX(*static_cast<FS4Packet_QUERYX *>(decoded.get()), FNET_QF_SUPPORTED_MASK);
- EXPECT_EQUAL(512u, src->GetLength());
+ EXPECT_EQUAL(500u, src->GetLength());
EXPECT_EQUAL(src->GetLength(), decoded->GetLength());
FS4PersistentPacketStreamer::Instance.SetCompressionLimit(100);
FS4Packet_PreSerialized serialized(*src);
EXPECT_EQUAL(218u | (document::CompressionConfig::LZ4 << 24), serialized.GetPCODE());
EXPECT_GREATER_EQUAL(321u, serialized.GetLength());
FNET_Packet::UP decoded2(testEncodeDecode(serialized));
- EXPECT_EQUAL(512u, decoded2->GetLength());
+ EXPECT_EQUAL(500u, decoded2->GetLength());
verifyQueryX(*static_cast<FS4Packet_QUERYX *>(decoded2.get()), FNET_QF_SUPPORTED_MASK);
}
@@ -645,9 +606,8 @@ TEST("testGetDocsumsX") {
} else {
EXPECT_EQUAL(0u, ptr->_flags);
}
- EXPECT_EQUAL(2u, ptr->_docidCnt);
- ASSERT_TRUE(ptr->_docid != NULL);
- for (uint32_t i = 0; i < ptr->_docidCnt; ++i) {
+ EXPECT_EQUAL(2u, ptr->_docid.size());
+ for (uint32_t i = 0; i < ptr->_docid.size(); ++i) {
EXPECT_EQUAL(i == 0u ? gid0 : gid1, ptr->_docid[i]._gid);
EXPECT_EQUAL(ptr->_features & GDF_MLD ? 2u + i : 0u, ptr->_docid[i]._partid);
}
diff --git a/searchlib/src/tests/engine/searchapi/searchapi_test.cpp b/searchlib/src/tests/engine/searchapi/searchapi_test.cpp
index cd040bfaeac..ce850c9e1e1 100644
--- a/searchlib/src/tests/engine/searchapi/searchapi_test.cpp
+++ b/searchlib/src/tests/engine/searchapi/searchapi_test.cpp
@@ -74,8 +74,6 @@ Test::convertToRequest()
src._propsVector[1].setValue(1, "p2v2", strlen("p2v2"));
src._features |= QF_SORTSPEC;
src.setSortSpec("sortspec");
- src._features |= QF_AGGRSPEC;
- src.setAggrSpec("aggrspec");
src._features |= QF_GROUPSPEC;
src.setGroupSpec("groupspec");
src._features |= QF_SESSIONID;
@@ -133,7 +131,6 @@ Test::convertFromReply()
src.sortData.push_back(11);
src.sortData.push_back(22);
src.groupResult.push_back(2);
- src.useCoverage = true;
src.coverage = SearchReply::Coverage(5, 3);
src.useWideHits = true;
src.hits.resize(2);
@@ -214,16 +211,6 @@ Test::convertFromReply()
EXPECT_EQUAL(dst._coverageDocs, 3u);
EXPECT_EQUAL(dst._activeDocs, 5u);
}
- { // not coverage
- SearchReply cpy = src;
- cpy.useCoverage = false;
-
- FS4Packet_QUERYRESULTX dst0;
- PacketConverter::fromSearchReply(cpy, dst0);
- FS4Packet_QUERYRESULTX dst;
- copyPacket(dst0, dst);
- EXPECT_TRUE(checkNotFeature(dst._features, QRF_COVERAGE));
- }
{ // non-mld
SearchReply cpy = src;
cpy.useWideHits = false;
diff --git a/searchlib/src/vespa/searchlib/common/packets.cpp b/searchlib/src/vespa/searchlib/common/packets.cpp
index 769cbbeeed4..274188c87f9 100644
--- a/searchlib/src/vespa/searchlib/common/packets.cpp
+++ b/searchlib/src/vespa/searchlib/common/packets.cpp
@@ -39,18 +39,13 @@ bool
FS4PersistentPacketStreamer::HasChannelID(uint32_t pcode)
{
switch(pcode & PCODE_MASK) {
- case search::fs4transport::PCODE_EOL:
- case search::fs4transport::PCODE_QUERYRESULT:
- case search::fs4transport::PCODE_ERROR:
- case search::fs4transport::PCODE_GETDOCSUMS:
- case search::fs4transport::PCODE_DOCSUM:
- case search::fs4transport::PCODE_MLD_QUERYRESULT:
- case search::fs4transport::PCODE_MLD_GETDOCSUMS:
- case search::fs4transport::PCODE_PARSEDQUERY2:
- case search::fs4transport::PCODE_QUERYRESULTX:
- case search::fs4transport::PCODE_QUERYX:
- case search::fs4transport::PCODE_GETDOCSUMSX:
- case search::fs4transport::PCODE_TRACEREPLY:
+ case PCODE_EOL:
+ case PCODE_ERROR:
+ case PCODE_DOCSUM:
+ case PCODE_QUERYRESULTX:
+ case PCODE_QUERYX:
+ case PCODE_GETDOCSUMSX:
+ case PCODE_TRACEREPLY:
return true;
default:
return false;
@@ -668,7 +663,7 @@ FS4Packet_DOCSUM::toString(uint32_t indent) const
s += make_string("%*sFS4Packet_DOCSUM {\n", indent, "");
s += make_string("%*s gid : %s\n", indent, "", _gid.toString().c_str());
- uint32_t magic = ::search::fs4transport::SLIME_MAGIC_ID;
+ uint32_t magic = SLIME_MAGIC_ID;
if (_buf.size() >= sizeof(magic) &&
memcmp(_buf.c_str(), &magic, sizeof(magic)) == 0) {
vespalib::Slime slime;
@@ -699,13 +694,11 @@ FS4Packet_DOCSUM::toString(uint32_t indent) const
//============================================================
-FS4Packet_MONITORQUERYX::FS4Packet_MONITORQUERYX(uint32_t pcode)
+FS4Packet_MONITORQUERYX::FS4Packet_MONITORQUERYX()
: FS4Packet(),
- _pcode(pcode),
_features(0),
_qflags(0u)
{
- UpdateCompatFeatures();
}
@@ -714,32 +707,13 @@ FS4Packet_MONITORQUERYX::~FS4Packet_MONITORQUERYX()
}
-void
-FS4Packet_MONITORQUERYX::UpdateCompatPCODE(void)
-{
- if (_features == search::fs4transport::MQF_MONITORQUERY_MASK)
- _pcode = search::fs4transport::PCODE_MONITORQUERY;
- else
- _pcode = search::fs4transport::PCODE_MONITORQUERYX;
-}
-
-
-void
-FS4Packet_MONITORQUERYX::UpdateCompatFeatures(void)
-{
- if (_pcode == search::fs4transport::PCODE_MONITORQUERY)
- _features = search::fs4transport::MQF_MONITORQUERY_MASK;
-}
-
-
uint32_t
FS4Packet_MONITORQUERYX::GetLength()
{
uint32_t plen = 0;
- if (_pcode == search::fs4transport::PCODE_MONITORQUERYX)
- plen += sizeof(uint32_t);
- if (_features & search::fs4transport::MQF_QFLAGS)
+ plen += sizeof(uint32_t);
+ if (_features & MQF_QFLAGS)
plen += sizeof(uint32_t);
return plen;
}
@@ -748,10 +722,9 @@ FS4Packet_MONITORQUERYX::GetLength()
void
FS4Packet_MONITORQUERYX::Encode(FNET_DataBuffer *dst)
{
- if (_pcode == search::fs4transport::PCODE_MONITORQUERYX)
- dst->WriteInt32Fast(_features);
+ dst->WriteInt32Fast(_features);
- if ((_features & search::fs4transport::MQF_QFLAGS) != 0)
+ if ((_features & MQF_QFLAGS) != 0)
dst->WriteInt32Fast(_qflags);
}
@@ -759,16 +732,14 @@ FS4Packet_MONITORQUERYX::Encode(FNET_DataBuffer *dst)
bool
FS4Packet_MONITORQUERYX::Decode(FNET_DataBuffer *src, uint32_t len)
{
- if (_pcode == search::fs4transport::PCODE_MONITORQUERYX) {
- if (len < sizeof(uint32_t))
- goto error;
- _features = src->ReadInt32();
- len -= sizeof(uint32_t);
- }
- if ((_features & ~search::fs4transport::FNET_MQF_SUPPORTED_MASK) != 0)
+ if (len < sizeof(uint32_t))
+ goto error;
+ _features = src->ReadInt32();
+ len -= sizeof(uint32_t);
+ if ((_features & ~FNET_MQF_SUPPORTED_MASK) != 0)
goto error;
- if ((_features & search::fs4transport::MQF_QFLAGS) != 0) {
+ if ((_features & MQF_QFLAGS) != 0) {
if (len < sizeof(uint32_t))
goto error;
_qflags = src->ReadInt32();
@@ -778,8 +749,7 @@ FS4Packet_MONITORQUERYX::Decode(FNET_DataBuffer *src, uint32_t len)
if (len != 0)
goto error;
- SetRealPCODE();
- return true; // OK
+ return true;
error:
src->DataToDead(len);
return false; // FAIL
@@ -791,7 +761,6 @@ FS4Packet_MONITORQUERYX::toString(uint32_t indent) const
{
vespalib::string s;
s += make_string("%*sFS4Packet_MONITORQUERYX {\n", indent, "");
- s += make_string("%*s pcode : %d\n", indent, "", _pcode);
s += make_string("%*s features : 0x%x\n", indent, "", _features);
s += make_string("%*s qflags : %d\n", indent, "", _qflags);
s += make_string("%*s}\n", indent, "");
@@ -800,10 +769,8 @@ FS4Packet_MONITORQUERYX::toString(uint32_t indent) const
//============================================================
-FS4Packet_MONITORRESULTX::
-FS4Packet_MONITORRESULTX(uint32_t pcode)
+FS4Packet_MONITORRESULTX::FS4Packet_MONITORRESULTX()
: FS4Packet(),
- _pcode(pcode),
_features(0),
_partid(0),
_timestamp(0),
@@ -813,50 +780,21 @@ FS4Packet_MONITORRESULTX(uint32_t pcode)
_activeParts(0),
_rflags(0u),
_activeDocs(0)
-{
- UpdateCompatFeatures();
-}
-
-
-FS4Packet_MONITORRESULTX::~FS4Packet_MONITORRESULTX(void)
-{
-}
-
-
-void
-FS4Packet_MONITORRESULTX::UpdateCompatPCODE(void)
-{
- if (_features == search::fs4transport::MRF_MONITORRESULT_MASK)
- _pcode = search::fs4transport::PCODE_MONITORRESULT;
- else if (_features == search::fs4transport::MRF_MLD_MONITORRESULT_MASK)
- _pcode = search::fs4transport::PCODE_MLD_MONITORRESULT;
- else
- _pcode = search::fs4transport::PCODE_MONITORRESULTX;
-}
-
-
-void
-FS4Packet_MONITORRESULTX::UpdateCompatFeatures(void)
-{
- if (_pcode == search::fs4transport::PCODE_MONITORRESULT)
- _features = search::fs4transport::MRF_MONITORRESULT_MASK;
- else if (_pcode == search::fs4transport::PCODE_MLD_MONITORRESULT)
- _features = search::fs4transport::MRF_MLD_MONITORRESULT_MASK;
-}
+{ }
+FS4Packet_MONITORRESULTX::~FS4Packet_MONITORRESULTX() { }
uint32_t
-FS4Packet_MONITORRESULTX::GetLength(void)
+FS4Packet_MONITORRESULTX::GetLength()
{
uint32_t plen = 2 * sizeof(uint32_t);
- if (_pcode == search::fs4transport::PCODE_MONITORRESULTX)
- plen += sizeof(uint32_t);
- if ((_features & search::fs4transport::MRF_MLD) != 0)
+ plen += sizeof(uint32_t);
+ if ((_features & MRF_MLD) != 0)
plen += 4 * sizeof(uint32_t);
- if ((_features & search::fs4transport::MRF_RFLAGS) != 0)
+ if ((_features & MRF_RFLAGS) != 0)
plen += sizeof(uint32_t);
- if ((_features & search::fs4transport::MRF_ACTIVEDOCS) != 0)
+ if ((_features & MRF_ACTIVEDOCS) != 0)
plen += sizeof(uint64_t);
return plen;
@@ -866,21 +804,20 @@ FS4Packet_MONITORRESULTX::GetLength(void)
void
FS4Packet_MONITORRESULTX::Encode(FNET_DataBuffer *dst)
{
- if (_pcode == search::fs4transport::PCODE_MONITORRESULTX)
- dst->WriteInt32Fast(_features);
+ dst->WriteInt32Fast(_features);
dst->WriteInt32Fast(_partid);
dst->WriteInt32Fast(_timestamp);
- if ((_features & search::fs4transport::MRF_MLD) != 0) {
+ if ((_features & MRF_MLD) != 0) {
dst->WriteInt32Fast(_totalNodes);
dst->WriteInt32Fast(_activeNodes);
dst->WriteInt32Fast(_totalParts);
dst->WriteInt32Fast(_activeParts);
}
- if ((_features & search::fs4transport::MRF_RFLAGS) != 0) {
+ if ((_features & MRF_RFLAGS) != 0) {
dst->WriteInt32Fast(_rflags);
}
- if ((_features & search::fs4transport::MRF_ACTIVEDOCS) != 0) {
+ if ((_features & MRF_ACTIVEDOCS) != 0) {
dst->WriteInt64Fast(_activeDocs);
}
}
@@ -889,12 +826,10 @@ FS4Packet_MONITORRESULTX::Encode(FNET_DataBuffer *dst)
bool
FS4Packet_MONITORRESULTX::Decode(FNET_DataBuffer *src, uint32_t len)
{
- if (_pcode == search::fs4transport::PCODE_MONITORRESULTX) {
- if (len < sizeof(uint32_t)) goto error;
- _features = src->ReadInt32();
- len -= sizeof(uint32_t);
- }
- if ((_features & ~search::fs4transport::FNET_MRF_SUPPORTED_MASK) != 0)
+ if (len < sizeof(uint32_t)) goto error;
+ _features = src->ReadInt32();
+ len -= sizeof(uint32_t);
+ if ((_features & ~FNET_MRF_SUPPORTED_MASK) != 0)
goto error;
if (len < 2 * sizeof(uint32_t))
@@ -903,7 +838,7 @@ FS4Packet_MONITORRESULTX::Decode(FNET_DataBuffer *src, uint32_t len)
_timestamp = src->ReadInt32();
len -= 2 * sizeof(uint32_t);
- if ((_features & search::fs4transport::MRF_MLD) != 0) {
+ if ((_features & MRF_MLD) != 0) {
if (len < 4 * sizeof(uint32_t))
goto error;
_totalNodes = src->ReadInt32();
@@ -913,14 +848,14 @@ FS4Packet_MONITORRESULTX::Decode(FNET_DataBuffer *src, uint32_t len)
len -= 4 * sizeof(uint32_t);
}
- if ((_features & search::fs4transport::MRF_RFLAGS) != 0) {
+ if ((_features & MRF_RFLAGS) != 0) {
if (len < sizeof(uint32_t))
goto error;
_rflags = src->ReadInt32();
len -= sizeof(uint32_t);
}
- if ((_features & search::fs4transport::MRF_ACTIVEDOCS) != 0) {
+ if ((_features & MRF_ACTIVEDOCS) != 0) {
if (len < sizeof(uint64_t))
goto error;
_activeDocs = src->ReadInt64();
@@ -930,7 +865,6 @@ FS4Packet_MONITORRESULTX::Decode(FNET_DataBuffer *src, uint32_t len)
if (len != 0)
goto error;
- SetRealPCODE();
return true; // OK
error:
src->DataToDead(len);
@@ -943,7 +877,6 @@ FS4Packet_MONITORRESULTX::toString(uint32_t indent) const
{
vespalib::string s;
s += make_string("%*sFS4Packet_MONITORRESULTX {\n", indent, "");
- s += make_string("%*s pcode : %d\n", indent, "", _pcode);
s += make_string("%*s features : 0x%x\n", indent, "", _features);
s += make_string("%*s partid : %d\n", indent, "", _partid);
s += make_string("%*s timestamp : %d\n", indent, "", _timestamp);
@@ -957,101 +890,6 @@ FS4Packet_MONITORRESULTX::toString(uint32_t indent) const
//============================================================
-FS4Packet_CLEARCACHES::FS4Packet_CLEARCACHES()
- : FS4Packet()
-{
-}
-
-
-FS4Packet_CLEARCACHES::~FS4Packet_CLEARCACHES()
-{
-}
-
-
-uint32_t
-FS4Packet_CLEARCACHES::GetLength()
-{
- return 0;
-}
-
-
-void
-FS4Packet_CLEARCACHES::Encode(FNET_DataBuffer *dst)
-{
- (void) dst;
-}
-
-
-bool
-FS4Packet_CLEARCACHES::Decode(FNET_DataBuffer *src, uint32_t len)
-{
- src->DataToDead(len);
- return (len == 0);
-}
-
-
-vespalib::string
-FS4Packet_CLEARCACHES::toString(uint32_t indent) const
-{
- return make_string("%*sFS4Packet_CLEARCACHES {}\n", indent, "");
-}
-
-//============================================================
-
-FS4Packet_QUEUELEN::FS4Packet_QUEUELEN()
- : FS4Packet(),
- _queueLen(0),
- _dispatchers(0)
-{
-}
-
-
-FS4Packet_QUEUELEN::~FS4Packet_QUEUELEN()
-{
-}
-
-
-uint32_t
-FS4Packet_QUEUELEN::GetLength()
-{
- return 2 * sizeof(uint32_t);
-}
-
-
-void
-FS4Packet_QUEUELEN::Encode(FNET_DataBuffer *dst)
-{
- dst->WriteInt32Fast(_queueLen);
- dst->WriteInt32Fast(_dispatchers);
-}
-
-
-bool
-FS4Packet_QUEUELEN::Decode(FNET_DataBuffer *src, uint32_t len)
-{
- if (len != 2 * sizeof(uint32_t)) {
- src->DataToDead(len);
- return false;
- }
- _queueLen = src->ReadInt32();
- _dispatchers = src->ReadInt32();
- return true;
-}
-
-
-vespalib::string
-FS4Packet_QUEUELEN::toString(uint32_t indent) const
-{
- vespalib::string s;
- s += make_string("%*sFS4Packet_QUEUELEN {\n", indent, "");
- s += make_string("%*s queue len : %d\n", indent, "", _queueLen);
- s += make_string("%*s dispatchers : %d\n", indent, "", _dispatchers);
- s += make_string("%*s}\n", indent, "");
- return s;
-}
-
-//============================================================
-
void
FS4Packet_QUERYRESULTX::AllocateSortIndex(uint32_t cnt)
{
@@ -1089,29 +927,6 @@ FS4Packet_QUERYRESULTX::SetSortDataRef(uint32_t cnt,
void
-FS4Packet_QUERYRESULTX::AllocateAggrData(uint32_t len)
-{
- if (len == 0)
- return;
-
- _aggrData = (char *) malloc(len);
- _aggrDataLen = len;
-}
-
-
-void
-FS4Packet_QUERYRESULTX::SetAggrDataRef(const char *aggrData,
- uint32_t len)
-{
- if (len == 0)
- return;
-
- AllocateAggrData(len);
- memcpy(_aggrData, aggrData, len);
-}
-
-
-void
FS4Packet_QUERYRESULTX::AllocateGroupData(uint32_t len)
{
if (len == 0)
@@ -1145,9 +960,8 @@ FS4Packet_QUERYRESULTX::AllocateHits(uint32_t cnt)
}
-FS4Packet_QUERYRESULTX::FS4Packet_QUERYRESULTX(uint32_t pcode)
+FS4Packet_QUERYRESULTX::FS4Packet_QUERYRESULTX()
: FS4Packet(),
- _pcode(pcode),
_distributionKey(0),
_features(0),
_offset(0),
@@ -1156,8 +970,6 @@ FS4Packet_QUERYRESULTX::FS4Packet_QUERYRESULTX(uint32_t pcode)
_maxRank(0),
_sortIndex(NULL),
_sortData(NULL),
- _aggrDataLen(0),
- _aggrData(NULL),
_groupDataLen(0),
_groupData(NULL),
_coverageDocs(0),
@@ -1165,7 +977,6 @@ FS4Packet_QUERYRESULTX::FS4Packet_QUERYRESULTX(uint32_t pcode)
_hits(NULL),
_propsVector()
{
- UpdateCompatFeatures();
}
@@ -1173,34 +984,11 @@ FS4Packet_QUERYRESULTX::~FS4Packet_QUERYRESULTX()
{
if (_sortIndex) { delete [] _sortIndex; }
if (_sortData) { free(_sortData); }
- if (_aggrData) { free(_aggrData); }
if (_groupData) { free(_groupData); }
if (_hits) { delete [] _hits; }
}
-void
-FS4Packet_QUERYRESULTX::UpdateCompatPCODE()
-{
- if (_features == search::fs4transport::QRF_QUERYRESULT_MASK)
- _pcode = search::fs4transport::PCODE_QUERYRESULT;
- else if (_features == search::fs4transport::QRF_MLD_QUERYRESULT_MASK)
- _pcode = search::fs4transport::PCODE_MLD_QUERYRESULT;
- else
- _pcode = search::fs4transport::PCODE_QUERYRESULTX;
-}
-
-
-void
-FS4Packet_QUERYRESULTX::UpdateCompatFeatures()
-{
- if (_pcode == search::fs4transport::PCODE_QUERYRESULT)
- _features = search::fs4transport::QRF_QUERYRESULT_MASK;
- else if (_pcode == search::fs4transport::PCODE_MLD_QUERYRESULT)
- _features = search::fs4transport::QRF_MLD_QUERYRESULT_MASK;
-}
-
-
uint32_t
FS4Packet_QUERYRESULTX::GetLength()
{
@@ -1209,30 +997,21 @@ FS4Packet_QUERYRESULTX::GetLength()
sizeof(search::HitRank) +
_numDocs * (sizeof(document::GlobalId) + sizeof(search::HitRank));
- if (_pcode == search::fs4transport::PCODE_QUERYRESULTX)
- plen += sizeof(uint32_t);
+ plen += sizeof(uint32_t);
- if ((_features & search::fs4transport::QRF_MLD) != 0)
+ if ((_features & QRF_MLD) != 0)
plen += _numDocs * 2 * sizeof(uint32_t);
- if (((_features & search::fs4transport::QRF_SORTDATA) != 0) &&
- (_numDocs > 0))
- plen += _numDocs * sizeof(uint32_t)
- + (_sortIndex[_numDocs] - _sortIndex[0]);
-
- if ((_features & search::fs4transport::QRF_AGGRDATA) != 0)
- plen += sizeof(uint32_t)
- + _aggrDataLen;
+ if (((_features & QRF_SORTDATA) != 0) && (_numDocs > 0))
+ plen += _numDocs * sizeof(uint32_t) + (_sortIndex[_numDocs] - _sortIndex[0]);
- if ((_features & search::fs4transport::QRF_GROUPDATA) != 0)
- plen += sizeof(uint32_t)
- + _groupDataLen;
+ if ((_features & QRF_GROUPDATA) != 0)
+ plen += sizeof(uint32_t) + _groupDataLen;
- if ((_features & search::fs4transport::QRF_COVERAGE) != 0)
- plen += sizeof(uint64_t)
- + 2 * sizeof(uint32_t);
+ if ((_features & QRF_COVERAGE) != 0)
+ plen += sizeof(uint64_t) + 2 * sizeof(uint32_t);
- if ((_features & search::fs4transport::QRF_PROPERTIES) != 0) {
+ if ((_features & QRF_PROPERTIES) != 0) {
plen += sizeof(uint32_t);
for (uint32_t i = 0; i < _propsVector.size(); ++i) {
plen += _propsVector[i].getLength();
@@ -1246,10 +1025,7 @@ FS4Packet_QUERYRESULTX::GetLength()
void
FS4Packet_QUERYRESULTX::Encode(FNET_DataBuffer *dst)
{
- if (_pcode == search::fs4transport::PCODE_QUERYRESULTX) {
- // Never provide QF_WARMUP downwards
- dst->WriteInt32Fast(_features & ~QF_WARMUP);
- }
+ dst->WriteInt32Fast(_features);
dst->WriteInt32Fast(_offset);
dst->WriteInt32Fast(_numDocs);
dst->WriteInt64Fast(_totNumDocs);
@@ -1258,7 +1034,7 @@ FS4Packet_QUERYRESULTX::Encode(FNET_DataBuffer *dst)
dst->WriteInt64Fast(mrval.INT64);
dst->WriteInt32Fast(_distributionKey);
- if (((_features & search::fs4transport::QRF_SORTDATA) != 0) &&
+ if (((_features & QRF_SORTDATA) != 0) &&
(_numDocs > 0))
{
uint32_t idx0 = _sortIndex[0];
@@ -1270,17 +1046,12 @@ FS4Packet_QUERYRESULTX::Encode(FNET_DataBuffer *dst)
_sortIndex[_numDocs] - idx0);
}
- if ((_features & search::fs4transport::QRF_AGGRDATA) != 0) {
- dst->WriteInt32Fast(_aggrDataLen);
- dst->WriteBytesFast(_aggrData, _aggrDataLen);
- }
-
- if ((_features & search::fs4transport::QRF_GROUPDATA) != 0) {
+ if ((_features & QRF_GROUPDATA) != 0) {
dst->WriteInt32Fast(_groupDataLen);
dst->WriteBytesFast(_groupData, _groupDataLen);
}
- if ((_features & search::fs4transport::QRF_COVERAGE) != 0) {
+ if ((_features & QRF_COVERAGE) != 0) {
dst->WriteInt64Fast(_coverageDocs);
dst->WriteInt64Fast(_activeDocs);
}
@@ -1290,13 +1061,13 @@ FS4Packet_QUERYRESULTX::Encode(FNET_DataBuffer *dst)
union { uint64_t INT64; double DOUBLE; } val;
val.DOUBLE = _hits[i]._metric;
dst->WriteInt64Fast(val.INT64);
- if ((_features & search::fs4transport::QRF_MLD) != 0) {
+ if ((_features & QRF_MLD) != 0) {
dst->WriteInt32Fast(_hits[i]._partid);
dst->WriteInt32Fast(_hits[i].getDistributionKey());
}
}
- if ((_features & search::fs4transport::QRF_PROPERTIES) != 0) {
+ if ((_features & QRF_PROPERTIES) != 0) {
dst->WriteInt32Fast(_propsVector.size());
for (uint32_t i = 0; i < _propsVector.size(); ++i) {
_propsVector[i].encode(*dst);
@@ -1309,17 +1080,14 @@ FS4Packet_QUERYRESULTX::Encode(FNET_DataBuffer *dst)
bool
FS4Packet_QUERYRESULTX::Decode(FNET_DataBuffer *src, uint32_t len)
{
- uint32_t i;
uint32_t hitSize = sizeof(document::GlobalId);
- if (_pcode == search::fs4transport::PCODE_QUERYRESULTX) {
- if (len < sizeof(uint32_t)) goto error;
- _features = src->ReadInt32();
- len -= sizeof(uint32_t);
- }
+ if (len < sizeof(uint32_t)) goto error;
+ _features = src->ReadInt32();
+ len -= sizeof(uint32_t);
- if ((_features & ~search::fs4transport::FNET_QRF_SUPPORTED_MASK) != 0) {
- throwUnsupportedFeatures(_features, search::fs4transport::FNET_QRF_SUPPORTED_MASK);
+ if ((_features & ~FNET_QRF_SUPPORTED_MASK) != 0) {
+ throwUnsupportedFeatures(_features, FNET_QRF_SUPPORTED_MASK);
}
hitSize += sizeof(uint64_t);
@@ -1333,13 +1101,14 @@ FS4Packet_QUERYRESULTX::Decode(FNET_DataBuffer *src, uint32_t len)
_distributionKey = src->ReadInt32();
len -= 3 * sizeof(uint32_t) + sizeof(uint64_t) + sizeof(search::HitRank);
- if (((_features & search::fs4transport::QRF_SORTDATA) != 0) &&
+ if (((_features & QRF_SORTDATA) != 0) &&
(_numDocs > 0)) {
if (len < _numDocs * sizeof(uint32_t)) goto error;
AllocateSortIndex(_numDocs);
_sortIndex[0] = 0; // implicit
- for (i = 1; i <= _numDocs; i++)
+ for (uint32_t i = 1; i <= _numDocs; i++) {
_sortIndex[i] = src->ReadInt32();
+ }
len -= _numDocs * sizeof(uint32_t);
uint32_t sortDataLen = _sortIndex[_numDocs];
@@ -1349,18 +1118,7 @@ FS4Packet_QUERYRESULTX::Decode(FNET_DataBuffer *src, uint32_t len)
len -= sortDataLen;
}
- if ((_features & search::fs4transport::QRF_AGGRDATA) != 0) {
- if (len < sizeof(uint32_t)) goto error;
- _aggrDataLen = src->ReadInt32();
- len -= sizeof(uint32_t);
-
- if (len < _aggrDataLen) goto error;
- AllocateAggrData(_aggrDataLen);
- src->ReadBytes(_aggrData, _aggrDataLen);
- len -= _aggrDataLen;
- }
-
- if ((_features & search::fs4transport::QRF_GROUPDATA) != 0) {
+ if ((_features & QRF_GROUPDATA) != 0) {
if (len < sizeof(uint32_t)) goto error;
_groupDataLen = src->ReadInt32();
len -= sizeof(uint32_t);
@@ -1371,26 +1129,26 @@ FS4Packet_QUERYRESULTX::Decode(FNET_DataBuffer *src, uint32_t len)
len -= _groupDataLen;
}
- if ((_features & search::fs4transport::QRF_COVERAGE) != 0) {
+ if ((_features & QRF_COVERAGE) != 0) {
if (len < 2 * sizeof(uint64_t)) goto error;
_coverageDocs = src->ReadInt64();
_activeDocs = src->ReadInt64();
len -= 2 * sizeof(uint64_t);
}
- if ((_features & search::fs4transport::QRF_MLD) != 0)
+ if ((_features & QRF_MLD) != 0)
hitSize += 2 * sizeof(uint32_t);
if (len < _numDocs * hitSize) goto error;
AllocateHits(_numDocs);
unsigned char rawGid[document::GlobalId::LENGTH];
- for (i = 0; i < _numDocs; i++) {
+ for (uint32_t i = 0; i < _numDocs; i++) {
src->ReadBytes(rawGid, document::GlobalId::LENGTH);
_hits[i]._gid.set(rawGid);
union { uint64_t INT64; double DOUBLE; } val;
val.INT64 = src->ReadInt64();
_hits[i]._metric = val.DOUBLE;
- if ((_features & search::fs4transport::QRF_MLD) != 0) {
+ if ((_features & QRF_MLD) != 0) {
_hits[i]._partid = src->ReadInt32();
_hits[i].setDistributionKey(src->ReadInt32());
} else {
@@ -1400,18 +1158,17 @@ FS4Packet_QUERYRESULTX::Decode(FNET_DataBuffer *src, uint32_t len)
}
len -= _numDocs * hitSize;
- if ((_features & search::fs4transport::QRF_PROPERTIES) != 0) {
+ if ((_features & QRF_PROPERTIES) != 0) {
uint32_t sz = src->ReadInt32();
_propsVector.resize(sz);
len -= sizeof(uint32_t);
- for (i = 0; i < sz; ++i) {
+ for (uint32_t i = 0; i < sz; ++i) {
if (! _propsVector[i].decode(*src, len)) goto error;
}
}
if (len != 0) goto error;
- SetRealPCODE();
return true; // OK
error:
@@ -1427,7 +1184,6 @@ FS4Packet_QUERYRESULTX::toString(uint32_t indent) const
uint32_t i;
s += make_string("%*sFS4Packet_QUERYRESULTX {\n", indent, "");
- s += make_string("%*s pcode : %d\n", indent, "", _pcode);
s += make_string("%*s features : 0x%x\n", indent, "", _features);
s += make_string("%*s offset : %d\n", indent, "", _offset);
s += make_string("%*s numDocs : %d\n", indent, "", _numDocs);
@@ -1444,7 +1200,6 @@ FS4Packet_QUERYRESULTX::toString(uint32_t indent) const
s += make_string(" }\n");
}
}
- s += make_string("%*s aggrData : %d bytes\n", indent, "", _aggrDataLen);
s += make_string("%*s groupData : %d bytes\n", indent, "", _groupDataLen);
s += make_string("%*s coverageDocs : %" PRIu64 "\n", indent, "", _coverageDocs);
s += make_string("%*s activeDocs : %" PRIu64 "\n", indent, "", _activeDocs);
@@ -1462,9 +1217,8 @@ FS4Packet_QUERYRESULTX::toString(uint32_t indent) const
//============================================================
-FS4Packet_QUERYX::FS4Packet_QUERYX(uint32_t pcode)
+FS4Packet_QUERYX::FS4Packet_QUERYX()
: FS4Packet(),
- _pcode(pcode),
_timeout(0),
_features(0),
_offset(0),
@@ -1473,14 +1227,12 @@ FS4Packet_QUERYX::FS4Packet_QUERYX(uint32_t pcode)
_ranking(),
_propsVector(),
_sortSpec(),
- _aggrSpec(),
_groupSpec(),
_sessionId(),
_location(),
_numStackItems(0),
_stackDump()
{
- UpdateCompatFeatures();
}
@@ -1488,68 +1240,40 @@ FS4Packet_QUERYX::~FS4Packet_QUERYX()
{
}
-
-void
-FS4Packet_QUERYX::UpdateCompatPCODE()
-{
- if (_features == search::fs4transport::QF_PARSEDQUERY2_MASK)
- _pcode = search::fs4transport::PCODE_PARSEDQUERY2;
- else
- _pcode = search::fs4transport::PCODE_QUERYX;
-}
-
-
-void
-FS4Packet_QUERYX::UpdateCompatFeatures()
-{
- if (_pcode == search::fs4transport::PCODE_PARSEDQUERY2)
- _features = search::fs4transport::QF_PARSEDQUERY2_MASK;
-}
-
-
uint32_t
FS4Packet_QUERYX::GetLength()
{
uint32_t plen = 2 * sizeof(uint32_t);
plen += FNET_DataBuffer::getCompressedPositiveLength(_offset);
plen += FNET_DataBuffer::getCompressedPositiveLength(_maxhits);
- if (_pcode == search::fs4transport::PCODE_QUERYX)
- plen += sizeof(uint32_t);
+ plen += sizeof(uint32_t);
- if ((_features & search::fs4transport::QF_PARSEDQUERY) != 0) {
+ if ((_features & QF_PARSEDQUERY) != 0) {
plen += sizeof(uint32_t)*2;
plen += _stackDump.size();
}
- if ((_features & search::fs4transport::QF_RANKP) != 0) {
+ if ((_features & QF_RANKP) != 0) {
plen += FNET_DataBuffer::getCompressedPositiveLength(_ranking.size());
plen += _ranking.size();
}
- if ((_features & search::fs4transport::QF_PROPERTIES) != 0) {
+ if ((_features & QF_PROPERTIES) != 0) {
plen += sizeof(uint32_t);
for (uint32_t i = 0; i < _propsVector.size(); ++i) {
plen += _propsVector[i].getLength();
}
}
- if ((_features & search::fs4transport::QF_SORTSPEC) != 0)
- plen += sizeof(uint32_t)
- + _sortSpec.size();
+ if ((_features & QF_SORTSPEC) != 0)
+ plen += sizeof(uint32_t) + _sortSpec.size();
- if ((_features & search::fs4transport::QF_AGGRSPEC) != 0)
- plen += sizeof(uint32_t)
- + _aggrSpec.size();
+ if ((_features & QF_GROUPSPEC) != 0)
+ plen += sizeof(uint32_t) + _groupSpec.size();
- if ((_features & search::fs4transport::QF_GROUPSPEC) != 0)
- plen += sizeof(uint32_t)
- + _groupSpec.size();
+ if ((_features & QF_SESSIONID) != 0)
+ plen += sizeof(uint32_t) + _sessionId.size();
- if ((_features & search::fs4transport::QF_SESSIONID) != 0)
- plen += sizeof(uint32_t)
- + _sessionId.size();
-
- if ((_features & search::fs4transport::QF_LOCATION) != 0)
- plen += sizeof(uint32_t)
- + _location.size();
+ if ((_features & QF_LOCATION) != 0)
+ plen += sizeof(uint32_t) + _location.size();
return plen;
}
@@ -1558,52 +1282,46 @@ FS4Packet_QUERYX::GetLength()
void
FS4Packet_QUERYX::Encode(FNET_DataBuffer *dst)
{
- if (_pcode == search::fs4transport::PCODE_QUERYX)
- dst->WriteInt32Fast(_features);
+ dst->WriteInt32Fast(_features);
dst->writeCompressedPositive(_offset);
dst->writeCompressedPositive(_maxhits);
dst->WriteInt32Fast(_timeout);
dst->WriteInt32Fast(_qflags);
- if ((_features & search::fs4transport::QF_RANKP) != 0) {
+ if ((_features & QF_RANKP) != 0) {
dst->writeCompressedPositive(_ranking.size());
dst->WriteBytesFast(_ranking.c_str(), _ranking.size());
}
- if ((_features & search::fs4transport::QF_PROPERTIES) != 0) {
+ if ((_features & QF_PROPERTIES) != 0) {
dst->WriteInt32Fast(_propsVector.size());
for (uint32_t i = 0; i < _propsVector.size(); ++i) {
_propsVector[i].encode(*dst);
}
}
- if ((_features & search::fs4transport::QF_SORTSPEC) != 0) {
+ if ((_features & QF_SORTSPEC) != 0) {
dst->WriteInt32Fast(_sortSpec.size());
dst->WriteBytesFast(_sortSpec.c_str(), _sortSpec.size());
}
- if ((_features & search::fs4transport::QF_AGGRSPEC) != 0) {
- dst->WriteInt32Fast(_aggrSpec.size());
- dst->WriteBytesFast(_aggrSpec.c_str(), _aggrSpec.size());
- }
-
- if ((_features & search::fs4transport::QF_GROUPSPEC) != 0) {
+ if ((_features & QF_GROUPSPEC) != 0) {
dst->WriteInt32Fast(_groupSpec.size());
dst->WriteBytesFast(_groupSpec.c_str(), _groupSpec.size());
}
- if ((_features & search::fs4transport::QF_SESSIONID) != 0) {
+ if ((_features & QF_SESSIONID) != 0) {
dst->WriteInt32Fast(_sessionId.size());
dst->WriteBytesFast(_sessionId.c_str(), _sessionId.size());
}
- if ((_features & search::fs4transport::QF_LOCATION) != 0) {
+ if ((_features & QF_LOCATION) != 0) {
dst->WriteInt32Fast(_location.size());
dst->WriteBytesFast(_location.c_str(), _location.size());
}
- if ((_features & search::fs4transport::QF_PARSEDQUERY) != 0) {
+ if ((_features & QF_PARSEDQUERY) != 0) {
dst->WriteInt32Fast(_numStackItems);
dst->WriteInt32Fast(_stackDump.size());
dst->WriteBytesFast(_stackDump.c_str(), _stackDump.size());
@@ -1670,12 +1388,10 @@ FS4Packet_QUERYX::getTimeout() const
bool
FS4Packet_QUERYX::Decode(FNET_DataBuffer *src, uint32_t len)
{
- if (_pcode == search::fs4transport::PCODE_QUERYX) {
- _features = readUInt32(*src, len, "features");
- }
+ _features = readUInt32(*src, len, "features");
- if (((_features & ~search::fs4transport::FNET_QF_SUPPORTED_MASK) != 0)) {
- throwUnsupportedFeatures(_features, search::fs4transport::FNET_QF_SUPPORTED_MASK);
+ if (((_features & ~FNET_QF_SUPPORTED_MASK) != 0)) {
+ throwUnsupportedFeatures(_features, FNET_QF_SUPPORTED_MASK);
}
_offset = src->readCompressedPositiveInteger();
len -= FNET_DataBuffer::getCompressedPositiveLength(_offset);
@@ -1685,7 +1401,7 @@ FS4Packet_QUERYX::Decode(FNET_DataBuffer *src, uint32_t len)
_timeout = src->ReadInt32();
_qflags = src->ReadInt32();
- if ((_features & search::fs4transport::QF_RANKP) != 0) {
+ if ((_features & QF_RANKP) != 0) {
uint32_t rankingLen = src->readCompressedPositiveInteger();
len -= FNET_DataBuffer::getCompressedPositiveLength(rankingLen);
VERIFY_LEN(rankingLen, "ranking blob");
@@ -1693,7 +1409,7 @@ FS4Packet_QUERYX::Decode(FNET_DataBuffer *src, uint32_t len)
src->DataToDead(rankingLen);
}
- if ((_features & search::fs4transport::QF_PROPERTIES) != 0) {
+ if ((_features & QF_PROPERTIES) != 0) {
uint32_t cnt = readUInt32(*src, len, "#properties");
_propsVector.resize(cnt);
for (uint32_t i = 0; i < cnt; ++i) {
@@ -1703,7 +1419,7 @@ FS4Packet_QUERYX::Decode(FNET_DataBuffer *src, uint32_t len)
}
}
- if ((_features & search::fs4transport::QF_SORTSPEC) != 0) {
+ if ((_features & QF_SORTSPEC) != 0) {
uint32_t sortSpecLen = readUInt32(*src, len, "sortspec length");
VERIFY_LEN(sortSpecLen, "sortspec string");
@@ -1711,15 +1427,7 @@ FS4Packet_QUERYX::Decode(FNET_DataBuffer *src, uint32_t len)
src->DataToDead(sortSpecLen);
}
- if ((_features & search::fs4transport::QF_AGGRSPEC) != 0) {
- uint32_t aggrSpecLen = readUInt32(*src, len, "aggrspec length");
-
- VERIFY_LEN(aggrSpecLen, "aggrspec string");
- setAggrSpec(stringref(src->GetData(), aggrSpecLen));
- src->DataToDead(aggrSpecLen);
- }
-
- if ((_features & search::fs4transport::QF_GROUPSPEC) != 0) {
+ if ((_features & QF_GROUPSPEC) != 0) {
uint32_t groupSpecLen = readUInt32(*src, len, "groupspec length");
VERIFY_LEN(groupSpecLen, "groupspec string");
@@ -1727,14 +1435,14 @@ FS4Packet_QUERYX::Decode(FNET_DataBuffer *src, uint32_t len)
src->DataToDead(groupSpecLen);
}
- if ((_features & search::fs4transport::QF_SESSIONID) != 0) {
+ if ((_features & QF_SESSIONID) != 0) {
uint32_t sessionIdLen = readUInt32(*src, len, "sessionid length");
VERIFY_LEN(sessionIdLen, "sessionid string");
setSessionId(stringref(src->GetData(), sessionIdLen));
src->DataToDead(sessionIdLen);
}
- if ((_features & search::fs4transport::QF_LOCATION) != 0) {
+ if ((_features & QF_LOCATION) != 0) {
uint32_t locationLen = readUInt32(*src, len, "location length");
VERIFY_LEN(locationLen, "location string");
@@ -1742,11 +1450,7 @@ FS4Packet_QUERYX::Decode(FNET_DataBuffer *src, uint32_t len)
src->DataToDead(locationLen);
}
- if ((_features & search::fs4transport::QF_WARMUP) != 0) {
- (void) readUInt32(*src, len, "warmup");
- }
-
- if ((_features & search::fs4transport::QF_PARSEDQUERY) != 0) {
+ if ((_features & QF_PARSEDQUERY) != 0) {
_numStackItems = readUInt32(*src, len, "# querystack items");
uint32_t stackDumpLen = readUInt32(*src, len, "stackdump length");
@@ -1758,8 +1462,7 @@ FS4Packet_QUERYX::Decode(FNET_DataBuffer *src, uint32_t len)
throwNotEnoughData(*src, len, 0, "eof");
}
- SetRealPCODE();
- return true; // OK
+ return true;
}
@@ -1768,7 +1471,6 @@ FS4Packet_QUERYX::toString(uint32_t indent) const
{
vespalib::string s;
s += make_string("%*sFS4Packet_QUERYX {\n", indent, "");
- s += make_string("%*s pcode : %d\n", indent, "", _pcode);
s += make_string("%*s features : 0x%x\n", indent, "", _features);
s += make_string("%*s offset : %d\n", indent, "", _offset);
s += make_string("%*s maxhits : %d\n", indent, "", _maxhits);
@@ -1778,7 +1480,6 @@ FS4Packet_QUERYX::toString(uint32_t indent) const
s += _propsVector[i].toString(indent + 2);
}
s += make_string("%*s sortspec : %s\n", indent, "", _sortSpec.c_str());
- s += make_string("%*s aggrspec : %s\n", indent, "", _aggrSpec.c_str());
s += make_string("%*s groupspec : (%d bytes)\n", indent, "", (int)_groupSpec.size());
s += make_string("%*s sessionId : (%d bytes)\n", indent, "", (int)_sessionId.size());
s += make_string("%*s location : %s\n", indent, "", _location.c_str());
@@ -1810,14 +1511,12 @@ FS4Packet_GETDOCSUMSX::AllocateDocIDs(uint32_t cnt)
if (cnt == 0)
return;
- _docid = new FS4_docid[cnt];
- _docidCnt = cnt;
+ _docid.resize(cnt);
}
-FS4Packet_GETDOCSUMSX::FS4Packet_GETDOCSUMSX(uint32_t pcode)
+FS4Packet_GETDOCSUMSX::FS4Packet_GETDOCSUMSX()
: FS4Packet(),
- _pcode(pcode),
_timeout(0),
_features(0),
_ranking(),
@@ -1828,77 +1527,49 @@ FS4Packet_GETDOCSUMSX::FS4Packet_GETDOCSUMSX(uint32_t pcode)
_stackDump(),
_location(),
_flags(0u),
- _docid(NULL),
- _docidCnt(0)
+ _docid()
{
- UpdateCompatFeatures();
}
FS4Packet_GETDOCSUMSX::~FS4Packet_GETDOCSUMSX()
{
- delete [] _docid;
-}
-
-
-void
-FS4Packet_GETDOCSUMSX::UpdateCompatPCODE()
-{
- if (_features == search::fs4transport::GDF_GETDOCSUMS_MASK)
- _pcode = search::fs4transport::PCODE_GETDOCSUMS;
- else if (_features == search::fs4transport::GDF_MLD_GETDOCSUMS_MASK)
- _pcode = search::fs4transport::PCODE_MLD_GETDOCSUMS;
- else
- _pcode = search::fs4transport::PCODE_GETDOCSUMSX;
-}
-
-
-void
-FS4Packet_GETDOCSUMSX::UpdateCompatFeatures()
-{
- if (_pcode == search::fs4transport::PCODE_GETDOCSUMS)
- _features = search::fs4transport::GDF_GETDOCSUMS_MASK;
- else if (_pcode == search::fs4transport::PCODE_MLD_GETDOCSUMS)
- _features = search::fs4transport::GDF_MLD_GETDOCSUMS_MASK;
}
-
uint32_t
FS4Packet_GETDOCSUMSX::GetLength()
{
uint32_t plen = 2 * sizeof(uint32_t) +
- + _docidCnt * (sizeof(document::GlobalId));
+ + _docid.size() * (sizeof(document::GlobalId));
- if (_pcode == search::fs4transport::PCODE_GETDOCSUMSX)
- plen += sizeof(uint32_t);
+ plen += sizeof(uint32_t);
- if ((_features & search::fs4transport::GDF_MLD) != 0)
- plen += 2 * _docidCnt * sizeof(uint32_t);
+ if ((_features & GDF_MLD) != 0)
+ plen += 2 * _docid.size() * sizeof(uint32_t);
- if ((_features & search::fs4transport::GDF_QUERYSTACK) != 0)
+ if ((_features & GDF_QUERYSTACK) != 0)
plen += 2 * sizeof(uint32_t) + _stackDump.size();
- if ((_features & search::fs4transport::GDF_RESCLASSNAME) != 0)
+ if ((_features & GDF_RESCLASSNAME) != 0)
plen += sizeof(uint32_t) + _resultClassName.size();
- if ((_features & search::fs4transport::GDF_PROPERTIES) != 0) {
+ if ((_features & GDF_PROPERTIES) != 0) {
plen += sizeof(uint32_t);
for (uint32_t i = 0; i < _propsVector.size(); ++i) {
plen += _propsVector[i].getLength();
}
}
- if ((_features & search::fs4transport::GDF_RANKP_QFLAGS) != 0) {
+ if ((_features & GDF_RANKP_QFLAGS) != 0) {
plen += FNET_DataBuffer::getCompressedPositiveLength(_ranking.size());
plen += _ranking.size();
plen += sizeof(uint32_t);
}
- if ((_features & search::fs4transport::GDF_LOCATION) != 0)
- plen += sizeof(uint32_t)
- + _location.size();
+ if ((_features & GDF_LOCATION) != 0)
+ plen += sizeof(uint32_t) + _location.size();
- if ((_features & search::fs4transport::GDF_FLAGS) != 0)
+ if ((_features & GDF_FLAGS) != 0)
plen += sizeof(uint32_t);
return plen;
@@ -1908,47 +1579,46 @@ FS4Packet_GETDOCSUMSX::GetLength()
void
FS4Packet_GETDOCSUMSX::Encode(FNET_DataBuffer *dst)
{
- if (_pcode == search::fs4transport::PCODE_GETDOCSUMSX)
- dst->WriteInt32Fast(_features);
+ dst->WriteInt32Fast(_features);
dst->WriteInt32Fast(0);
dst->WriteInt32Fast(_timeout);
- if ((_features & search::fs4transport::GDF_RANKP_QFLAGS) != 0) {
+ if ((_features & GDF_RANKP_QFLAGS) != 0) {
dst->writeCompressedPositive(_ranking.size());
dst->WriteBytesFast(_ranking.c_str(), _ranking.size());
dst->WriteInt32Fast(_qflags);
}
- if ((_features & search::fs4transport::GDF_RESCLASSNAME) != 0) {
+ if ((_features & GDF_RESCLASSNAME) != 0) {
writeLenString(dst, _resultClassName);
}
- if ((_features & search::fs4transport::GDF_PROPERTIES) != 0) {
+ if ((_features & GDF_PROPERTIES) != 0) {
dst->WriteInt32Fast(_propsVector.size());
for (uint32_t i = 0; i < _propsVector.size(); ++i) {
_propsVector[i].encode(*dst);
}
}
- if ((_features & search::fs4transport::GDF_QUERYSTACK) != 0) {
+ if ((_features & GDF_QUERYSTACK) != 0) {
dst->WriteInt32Fast(_stackItems);
writeLenString(dst, _stackDump);
}
- if ((_features & search::fs4transport::GDF_LOCATION) != 0) {
+ if ((_features & GDF_LOCATION) != 0) {
writeLenString(dst, _location);
}
- if ((_features & search::fs4transport::GDF_FLAGS) != 0) {
+ if ((_features & GDF_FLAGS) != 0) {
dst->WriteInt32Fast(_flags);
}
- for (uint32_t i = 0; i < _docidCnt; i++) {
- dst->WriteBytesFast(_docid[i]._gid.get(), document::GlobalId::LENGTH);
+ for (const auto & docid : _docid) {
+ dst->WriteBytesFast(docid._gid.get(), document::GlobalId::LENGTH);
- if ((_features & search::fs4transport::GDF_MLD) != 0) {
- dst->WriteInt32Fast(_docid[i]._partid);
+ if ((_features & GDF_MLD) != 0) {
+ dst->WriteInt32Fast(docid._partid);
dst->WriteInt32Fast(0);
}
}
@@ -1960,19 +1630,17 @@ FS4Packet_GETDOCSUMSX::Decode(FNET_DataBuffer *src, uint32_t len)
{
uint32_t docidSize = sizeof(document::GlobalId);
- if (_pcode == search::fs4transport::PCODE_GETDOCSUMSX) {
- _features = readUInt32(*src, len, "features");
- }
+ _features = readUInt32(*src, len, "features");
- if ((_features & ~search::fs4transport::FNET_GDF_SUPPORTED_MASK) != 0) {
- throwUnsupportedFeatures(_features, search::fs4transport::FNET_GDF_SUPPORTED_MASK);
+ if ((_features & ~FNET_GDF_SUPPORTED_MASK) != 0) {
+ throwUnsupportedFeatures(_features, FNET_GDF_SUPPORTED_MASK);
}
VERIFY_LEN(2*sizeof(uint32_t), "unused and timeout");
src->ReadInt32(); // unused
_timeout = src->ReadInt32();
- if ((_features & search::fs4transport::GDF_RANKP_QFLAGS) != 0) {
+ if ((_features & GDF_RANKP_QFLAGS) != 0) {
uint32_t rankingLen = src->readCompressedPositiveInteger();
len -= FNET_DataBuffer::getCompressedPositiveLength(rankingLen);
@@ -1983,7 +1651,7 @@ FS4Packet_GETDOCSUMSX::Decode(FNET_DataBuffer *src, uint32_t len)
_qflags = readUInt32(*src, len, "qflags");
}
- if ((_features & search::fs4transport::GDF_RESCLASSNAME) != 0) {
+ if ((_features & GDF_RESCLASSNAME) != 0) {
uint32_t resultClassNameLen = readUInt32(*src, len, "result class name length");
VERIFY_LEN(resultClassNameLen, "result class");
@@ -1991,7 +1659,7 @@ FS4Packet_GETDOCSUMSX::Decode(FNET_DataBuffer *src, uint32_t len)
src->DataToDead(resultClassNameLen);
}
- if ((_features & search::fs4transport::GDF_PROPERTIES) != 0) {
+ if ((_features & GDF_PROPERTIES) != 0) {
uint32_t cnt = readUInt32(*src, len, "#properties");
_propsVector.resize(cnt);
for (uint32_t i = 0; i < cnt; ++i) {
@@ -2001,7 +1669,7 @@ FS4Packet_GETDOCSUMSX::Decode(FNET_DataBuffer *src, uint32_t len)
}
}
- if ((_features & search::fs4transport::GDF_QUERYSTACK) != 0) {
+ if ((_features & GDF_QUERYSTACK) != 0) {
_stackItems = readUInt32(*src, len, "num stack items");
uint32_t stackDumpLen = readUInt32(*src, len, "stackdump length");
VERIFY_LEN(stackDumpLen, "stackdump");
@@ -2009,42 +1677,40 @@ FS4Packet_GETDOCSUMSX::Decode(FNET_DataBuffer *src, uint32_t len)
src->DataToDead(stackDumpLen);
}
- if ((_features & search::fs4transport::GDF_LOCATION) != 0) {
+ if ((_features & GDF_LOCATION) != 0) {
uint32_t locationLen = readUInt32(*src, len, "location length");
VERIFY_LEN(locationLen, "location string");
setLocation(stringref(src->GetData(), locationLen));
src->DataToDead(locationLen);
}
- if ((_features & search::fs4transport::GDF_FLAGS) != 0) {
+ if ((_features & GDF_FLAGS) != 0) {
_flags = readUInt32(*src, len, "flags");
}
- if ((_features & search::fs4transport::GDF_MLD) != 0)
+ if ((_features & GDF_MLD) != 0)
docidSize += 2 * sizeof(uint32_t);
- _docidCnt = len / docidSize;
- AllocateDocIDs(_docidCnt);
+ AllocateDocIDs(len / docidSize);
unsigned char rawGid[document::GlobalId::LENGTH];
- for (uint32_t i = 0; i < _docidCnt; i++) {
+ for (auto & docid : _docid) {
src->ReadBytes(rawGid, document::GlobalId::LENGTH);
- _docid[i]._gid.set(rawGid);
+ docid._gid.set(rawGid);
- if ((_features & search::fs4transport::GDF_MLD) != 0) {
- _docid[i]._partid = src->ReadInt32();
+ if ((_features & GDF_MLD) != 0) {
+ docid._partid = src->ReadInt32();
src->ReadInt32(); // unused
} else {
- _docid[i]._partid = 0; // partid not available
+ docid._partid = 0; // partid not available
}
}
- len -= _docidCnt * docidSize;
+ len -= _docid.size() * docidSize;
if (len != 0) {
throwNotEnoughData(*src, len, 0, "eof");
}
- SetRealPCODE();
return true; // OK
}
@@ -2076,9 +1742,9 @@ FS4Packet_GETDOCSUMSX::toString(uint32_t indent) const
}
if ((i % 16) != 0) s += make_string("\n");
}
- for (i = 0; i < _docidCnt; i++) {
+ for (const auto & docId : _docid) {
s += make_string("%*s gid=%s, partid=%d\n", indent, "",
- _docid[i]._gid.toString().c_str(), _docid[i]._partid);
+ docId._gid.toString().c_str(), docId._partid);
}
s += make_string("%*s location : %s\n", indent, "", _location.c_str());
s += make_string("%*s timeout : %d\n", indent, "", _timeout);
@@ -2144,50 +1810,23 @@ FNET_Packet*
FS4PacketFactory::CreateFS4Packet(uint32_t pcode)
{
switch(pcode) {
- case search::fs4transport::PCODE_EOL:
+ case PCODE_EOL:
return new FS4Packet_EOL;
- case search::fs4transport::PCODE_QUERYRESULT:
- return new FS4Packet_QUERYRESULTX(search::fs4transport::
- PCODE_QUERYRESULT);
- case search::fs4transport::PCODE_ERROR:
+ case PCODE_ERROR:
return new FS4Packet_ERROR;
- case search::fs4transport::PCODE_GETDOCSUMS:
- return new FS4Packet_GETDOCSUMSX(search::fs4transport::
- PCODE_GETDOCSUMS);
- case search::fs4transport::PCODE_DOCSUM:
+ case PCODE_DOCSUM:
return new FS4Packet_DOCSUM;
- case search::fs4transport::PCODE_MONITORQUERY:
- return new FS4Packet_MONITORQUERYX(search::fs4transport::
- PCODE_MONITORQUERY);
- case search::fs4transport::PCODE_MONITORRESULT:
- return new FS4Packet_MONITORRESULTX(search::fs4transport::
- PCODE_MONITORRESULT);
- case search::fs4transport::PCODE_MLD_QUERYRESULT:
- return new FS4Packet_QUERYRESULTX(search::fs4transport::
- PCODE_MLD_QUERYRESULT);
- case search::fs4transport::PCODE_MLD_GETDOCSUMS:
- return new FS4Packet_GETDOCSUMSX(search::fs4transport::
- PCODE_MLD_GETDOCSUMS);
- case search::fs4transport::PCODE_MLD_MONITORRESULT:
- return new FS4Packet_MONITORRESULTX(search::fs4transport::
- PCODE_MLD_MONITORRESULT);
- case search::fs4transport::PCODE_CLEARCACHES:
- return new FS4Packet_CLEARCACHES;
- case search::fs4transport::PCODE_PARSEDQUERY2:
- return new FS4Packet_QUERYX(search::fs4transport::PCODE_PARSEDQUERY2);
- case search::fs4transport::PCODE_QUEUELEN:
- return new FS4Packet_QUEUELEN;
- case search::fs4transport::PCODE_QUERYRESULTX:
+ case PCODE_QUERYRESULTX:
return new FS4Packet_QUERYRESULTX;
- case search::fs4transport::PCODE_QUERYX:
+ case PCODE_QUERYX:
return new FS4Packet_QUERYX;
- case search::fs4transport::PCODE_GETDOCSUMSX:
+ case PCODE_GETDOCSUMSX:
return new FS4Packet_GETDOCSUMSX;
- case search::fs4transport::PCODE_MONITORQUERYX:
+ case PCODE_MONITORQUERYX:
return new FS4Packet_MONITORQUERYX;
- case search::fs4transport::PCODE_MONITORRESULTX:
+ case PCODE_MONITORRESULTX:
return new FS4Packet_MONITORRESULTX;
- case search::fs4transport::PCODE_TRACEREPLY:
+ case PCODE_TRACEREPLY:
return new FS4Packet_TRACEREPLY;
default:
return NULL;
diff --git a/searchlib/src/vespa/searchlib/common/packets.h b/searchlib/src/vespa/searchlib/common/packets.h
index f3ea8e5b225..53cc4aa5f67 100644
--- a/searchlib/src/vespa/searchlib/common/packets.h
+++ b/searchlib/src/vespa/searchlib/common/packets.h
@@ -21,7 +21,6 @@ using vespalib::string;
enum fnet_feature_masks {
FNET_QRF_SUPPORTED_MASK = (QRF_MLD |
QRF_SORTDATA |
- QRF_AGGRDATA |
QRF_COVERAGE |
QRF_GROUPDATA |
QRF_PROPERTIES),
@@ -29,7 +28,6 @@ enum fnet_feature_masks {
FNET_QF_SUPPORTED_MASK = (QF_PARSEDQUERY |
QF_RANKP |
QF_SORTSPEC |
- QF_AGGRSPEC |
QF_LOCATION |
QF_PROPERTIES |
QF_GROUPSPEC |
@@ -321,17 +319,13 @@ class FS4Packet_MONITORQUERYX : public FS4Packet
FS4Packet_MONITORQUERYX(const FS4Packet_MONITORQUERYX &);
FS4Packet_MONITORQUERYX& operator=(const FS4Packet_MONITORQUERYX &);
- uint32_t _pcode;
public:
uint32_t _features; // see monitorquery_features
uint32_t _qflags; // if MQF_QFLAGS
- FS4Packet_MONITORQUERYX(uint32_t pcode = PCODE_MONITORQUERYX);
+ FS4Packet_MONITORQUERYX();
~FS4Packet_MONITORQUERYX();
- void UpdateCompatPCODE();
- void UpdateCompatFeatures();
- void SetRealPCODE(void) { _pcode = PCODE_MONITORQUERYX; }
- uint32_t GetPCODE() override { return _pcode; }
+ uint32_t GetPCODE() override { return PCODE_MONITORQUERYX; }
uint32_t GetLength() override;
void Encode(FNET_DataBuffer *dst) override;
bool Decode(FNET_DataBuffer *src, uint32_t len) override;
@@ -346,7 +340,6 @@ private:
FS4Packet_MONITORRESULTX(const FS4Packet_MONITORRESULTX &);
FS4Packet_MONITORRESULTX& operator=(const FS4Packet_MONITORRESULTX &);
- uint32_t _pcode;
public:
uint32_t _features; // see monitor
uint32_t _partid;
@@ -360,43 +353,9 @@ public:
uint32_t _rflags; // if MRF_RFLAGS
uint64_t _activeDocs; // if MRF_ACTIVEDOCS
- FS4Packet_MONITORRESULTX(uint32_t pcode = PCODE_MONITORRESULTX);
+ FS4Packet_MONITORRESULTX();
~FS4Packet_MONITORRESULTX();
- void UpdateCompatPCODE();
- void UpdateCompatFeatures();
- void SetRealPCODE(void) { _pcode = PCODE_MONITORRESULTX; }
- uint32_t GetPCODE() override { return _pcode; }
- uint32_t GetLength() override;
- void Encode(FNET_DataBuffer *dst) override;
- bool Decode(FNET_DataBuffer *src, uint32_t len) override;
- vespalib::string toString(uint32_t indent) const override;
-};
-
-//==========================================================================
-
-class FS4Packet_CLEARCACHES : public FS4Packet
-{
-public:
- FS4Packet_CLEARCACHES();
- ~FS4Packet_CLEARCACHES();
- uint32_t GetPCODE() override { return PCODE_CLEARCACHES; }
- uint32_t GetLength() override;
- void Encode(FNET_DataBuffer *dst) override;
- bool Decode(FNET_DataBuffer *src, uint32_t len) override;
- vespalib::string toString(uint32_t indent) const override;
-};
-
-//==========================================================================
-
-class FS4Packet_QUEUELEN : public FS4Packet
-{
-public:
- uint32_t _queueLen;
- uint32_t _dispatchers;
-
- FS4Packet_QUEUELEN();
- ~FS4Packet_QUEUELEN();
- uint32_t GetPCODE() override { return PCODE_QUEUELEN; }
+ uint32_t GetPCODE() override { return PCODE_MONITORRESULTX; }
uint32_t GetLength() override;
void Encode(FNET_DataBuffer *dst) override;
bool Decode(FNET_DataBuffer *src, uint32_t len) override;
@@ -411,7 +370,6 @@ private:
FS4Packet_QUERYRESULTX(const FS4Packet_QUERYRESULTX &);
FS4Packet_QUERYRESULTX& operator=(const FS4Packet_QUERYRESULTX &);
- uint32_t _pcode;
uint32_t _distributionKey;
public:
@@ -422,8 +380,6 @@ public:
search::HitRank _maxRank;
uint32_t *_sortIndex; // if QRF_SORTDATA
char *_sortData; // if QRF_SORTDATA
- uint32_t _aggrDataLen; // if QRF_AGGRDATA
- char *_aggrData; // if QRF_AGGRDATA
uint32_t _groupDataLen; // if QRF_GROUPDATA
char *_groupData; // if QRF_GROUPDATA
uint64_t _coverageDocs; // if QRF_COVERAGE
@@ -451,18 +407,13 @@ public:
void AllocateSortIndex(uint32_t cnt);
void AllocateSortData(uint32_t len);
void SetSortDataRef(uint32_t cnt, uint32_t *sortIndex, const char *sortData);
- void AllocateAggrData(uint32_t len);
- void SetAggrDataRef(const char *aggrData, uint32_t len);
void AllocateGroupData(uint32_t len);
void SetGroupDataRef(const char *groupData, uint32_t len);
void AllocateHits(uint32_t cnt);
- FS4Packet_QUERYRESULTX(uint32_t pcode = PCODE_QUERYRESULTX);
+ FS4Packet_QUERYRESULTX();
~FS4Packet_QUERYRESULTX();
- void UpdateCompatPCODE();
- void UpdateCompatFeatures();
- void SetRealPCODE() { _pcode = PCODE_QUERYRESULTX; }
- uint32_t GetPCODE() override { return _pcode; }
+ uint32_t GetPCODE() override { return PCODE_QUERYRESULTX; }
uint32_t GetLength() override;
void Encode(FNET_DataBuffer *dst) override;
bool Decode(FNET_DataBuffer *src, uint32_t len) override ;
@@ -479,7 +430,6 @@ private:
FS4Packet_QUERYX(const FS4Packet_QUERYX &);
FS4Packet_QUERYX& operator=(const FS4Packet_QUERYX &);
- uint32_t _pcode;
uint32_t _timeout;
public:
@@ -490,7 +440,6 @@ public:
string _ranking; // if QF_RANKP
PropsVector _propsVector; // if QF_PROPERTIES
string _sortSpec; // if QF_SORTSPEC
- string _aggrSpec; // if QF_AGGRSPEC
string _groupSpec; // if QF_GROUPSPEC
string _sessionId; // if QF_SESSIONID
string _location; // if QF_LOCATION
@@ -500,7 +449,6 @@ public:
void setRanking(const vespalib::stringref &ranking) { _ranking = ranking; }
void setSortSpec(const vespalib::stringref &spec) { _sortSpec = spec; }
- void setAggrSpec(const vespalib::stringref &spec) { _aggrSpec = spec; }
void setGroupSpec(const vespalib::stringref &spec) { _groupSpec = spec; }
void setSessionId(const vespalib::stringref &sid) { _sessionId = sid; }
void setLocation(const vespalib::stringref &loc) { _location = loc; }
@@ -508,12 +456,9 @@ public:
void setTimeout(const fastos::TimeStamp & timeout);
fastos::TimeStamp getTimeout() const;
- explicit FS4Packet_QUERYX(uint32_t pcode = PCODE_QUERYX);
+ explicit FS4Packet_QUERYX();
~FS4Packet_QUERYX();
- void UpdateCompatPCODE();
- void UpdateCompatFeatures();
- void SetRealPCODE() { _pcode = PCODE_QUERYX; }
- uint32_t GetPCODE() override { return _pcode; }
+ uint32_t GetPCODE() override { return PCODE_QUERYX; }
uint32_t GetLength() override;
void Encode(FNET_DataBuffer *dst) override;
bool Decode(FNET_DataBuffer *src, uint32_t len) override;
@@ -528,7 +473,6 @@ private:
FS4Packet_GETDOCSUMSX(const FS4Packet_GETDOCSUMSX &);
FS4Packet_GETDOCSUMSX& operator=(const FS4Packet_GETDOCSUMSX &);
- uint32_t _pcode;
uint32_t _timeout;
public:
uint32_t _features; // see getdocsums_features
@@ -545,9 +489,8 @@ public:
FS4_docid() : _gid(), _partid(0) { }
document::GlobalId _gid;
uint32_t _partid; // if GDF_MLD
- } *_docid;
-
- uint32_t _docidCnt;
+ };
+ std::vector<FS4_docid> _docid;
void AllocateDocIDs(uint32_t cnt);
@@ -558,12 +501,9 @@ public:
void setTimeout(const fastos::TimeStamp & timeout);
fastos::TimeStamp getTimeout() const;
- FS4Packet_GETDOCSUMSX(uint32_t pcode = PCODE_GETDOCSUMSX);
+ FS4Packet_GETDOCSUMSX();
~FS4Packet_GETDOCSUMSX();
- void UpdateCompatPCODE();
- void UpdateCompatFeatures();
- void SetRealPCODE() { _pcode = PCODE_GETDOCSUMSX; }
- uint32_t GetPCODE() override { return _pcode; }
+ uint32_t GetPCODE() override { return PCODE_GETDOCSUMSX; }
uint32_t GetLength() override;
void Encode(FNET_DataBuffer *dst) override;
bool Decode(FNET_DataBuffer *src, uint32_t len) override;
diff --git a/searchlib/src/vespa/searchlib/common/transport.h b/searchlib/src/vespa/searchlib/common/transport.h
index 9b4f2ecb5c2..dc99b66ec8a 100644
--- a/searchlib/src/vespa/searchlib/common/transport.h
+++ b/searchlib/src/vespa/searchlib/common/transport.h
@@ -8,21 +8,15 @@
#include <vespa/fastos/fastos.h>
-namespace search
-{
+namespace search {
-namespace fs4transport
-{
+namespace fs4transport {
/**
* Instead of using a 32-bit number to send the 'usehardware' flag, we
* now use this 32-bit number to send 32 flags. The currently defined flags
* are as follows:
* <ul>
- * <li><b>QFLAG_ALLOW_ERRORPACKET</b>: Allow an error packet to be sent as
- * response to this query packet.</li>
- * <li><b>QFLAG_REPORT_QUEUELEN</b>: Send an extra queue length packet before
- * query result packets.</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
@@ -35,18 +29,10 @@ namespace fs4transport
* </ul>
**/
enum queryflags {
- QFLAG_ALLOW_ERRORPACKET = 0x00000004,
- QFLAG_REPORT_QUEUELEN = 0x00000008,
QFLAG_ESTIMATE = 0x00000080,
QFLAG_DROP_SORTDATA = 0x00004000,
- QFLAG_REPORT_COVERAGE = 0x00008000,
QFLAG_NO_RESULTCACHE = 0x00010000,
- QFLAG_DUMP_FEATURES = 0x00040000,
-
- QFLAG_CACHE_MASK = (// which flags affect the cache
- QFLAG_ESTIMATE |
- QFLAG_DROP_SORTDATA |
- QFLAG_REPORT_COVERAGE)
+ QFLAG_DUMP_FEATURES = 0x00040000
};
@@ -55,11 +41,7 @@ enum queryflags {
* 'featureflags'. Each bit in that field denotes a separate feature
* that may be present in the query result packet or not. The comment
* describing the packet format indicates what data fields depend on
- * what features. Note that after removing the query id and the
- * feature flags from a PCODE_QUERYRESULTX packet it is binary
- * compatible with the PCODE_QUERYRESULT, PCODE_MLD_QUERYRESULT and
- * PCODE_MLD_QUERYRESULT2 packets given the correct set of
- * features. The features present in the 'old' query result packets
+ * what features. The features present in the 'old' query result packets
* are defined in this enum along with the Query Result Features
* themselves. The value called QRF_SUPPORTED_MASK denotes which
* features are supported by the current version. If a packet with
@@ -69,13 +51,9 @@ enum queryflags {
enum queryresult_features {
QRF_MLD = 0x00000001,
QRF_SORTDATA = 0x00000010,
- QRF_AGGRDATA = 0x00000020,
QRF_COVERAGE = 0x00000040,
QRF_GROUPDATA = 0x00000200,
- QRF_PROPERTIES = 0x00000400,
-
- QRF_QUERYRESULT_MASK = 0,
- QRF_MLD_QUERYRESULT_MASK = QRF_MLD
+ QRF_PROPERTIES = 0x00000400
};
@@ -84,10 +62,7 @@ enum queryresult_features {
* 'featureflags'. Each bit in that field denotes a separate feature
* that may be present in the query packet or not. The comment
* describing the packet format indicates what data fields depend on
- * what features. Note that after removing the query id and the
- * feature flags from a PCODE_QUERYX packet it is binary compatible
- * with the PCODE_PARSEDQUERY2 packets
- * given the correct set of features. The features present in the
+ * what features. The features present in the
* 'old' query packets are defined in this enum along with the Query
* Features themselves. The values called
* QF_SUPPORTED_[FSEARCH/FDISPATCH]_MASK denotes which features are
@@ -99,14 +74,10 @@ enum query_features {
QF_PARSEDQUERY = 0x00000002,
QF_RANKP = 0x00000004,
QF_SORTSPEC = 0x00000080,
- QF_AGGRSPEC = 0x00000100,
QF_LOCATION = 0x00000800,
QF_PROPERTIES = 0x00100000,
- QF_WARMUP = 0x00200000, // Deprecated, do not use!
QF_GROUPSPEC = 0x00400000,
- QF_SESSIONID = 0x00800000,
-
- QF_PARSEDQUERY2_MASK = (QF_PARSEDQUERY | QF_RANKP)
+ QF_SESSIONID = 0x00800000
};
@@ -115,11 +86,7 @@ enum query_features {
* 'featureflags'. Each bit in that field denotes a separate feature
* that may be present in the getdocsums packet or not. The comment
* describing the packet format indicates what data fields depend on
- * what features. Note that after removing the query id and the
- * feature flags from a PCODE_GETDOCSUMSX packet it is binary
- * compatible with the PCODE_GETDOCSUMS, PCODE_MLD_GETDOCSUMS and
- * PCODE_MLD_GETDOCSUMS2 packets given the correct set of
- * features. The features present in the 'old' getdocsums packets are
+ * what features. The features present in the 'old' getdocsums packets are
* defined in this enum along with the GetDocsums Features
* themselves. The values called
* GDF_SUPPORTED_[FSEARCH/FDISPATCH]_MASK denotes which features are
@@ -134,15 +101,11 @@ enum getdocsums_features {
GDF_LOCATION = 0x00000080,
GDF_RESCLASSNAME = 0x00000800,
GDF_PROPERTIES = 0x00001000,
- GDF_FLAGS = 0x00002000,
-
- GDF_GETDOCSUMS_MASK = 0,
- GDF_MLD_GETDOCSUMS_MASK = (GDF_MLD)
+ GDF_FLAGS = 0x00002000
};
-enum getdocsums_flags
-{
+enum getdocsums_flags {
GDFLAG_IGNORE_ROW = 0x00000001,
GDFLAG_ALLOW_SLIME = 0x00000002
};
@@ -150,38 +113,20 @@ enum getdocsums_flags
// docsum class for slime tunneling
const uint32_t SLIME_MAGIC_ID = 0x55555555;
-enum monitorquery_features
-{
+enum monitorquery_features {
MQF_QFLAGS = 0x00000002,
-
- MQF_MONITORQUERY_MASK = 0
};
-
-enum monitorquery_flags
-{
- // NOT_USED MQFLAG_REPORT_SOFTOFFLINE = 0x00000010,
+enum monitorquery_flags {
MQFLAG_REPORT_ACTIVEDOCS = 0x00000020
};
-
-enum monitorresult_features
-{
+enum monitorresult_features {
MRF_MLD = 0x00000001,
MRF_RFLAGS = 0x00000008,
MRF_ACTIVEDOCS = 0x00000010,
-
- MRF_MONITORRESULT_MASK = 0,
- MRF_MLD_MONITORRESULT_MASK = (MRF_MLD)
-};
-
-
-enum monitorresult_flags
-{
- // NOT_USED MRFLAG_SOFTOFFLINE = 0x00000001
};
-
/**
* Codes for packets between dispatch nodes and search nodes.
* general packet (i.e. message) format:
@@ -193,83 +138,30 @@ enum packetcode {
PCODE_EOL = 200, /* ..fdispatch <-> ..fsearch. PacketData:
*0 {uint32_t queryId,} - only in new format!*/
PCODE_QUERY_NOTUSED = 201,
- PCODE_QUERYRESULT = 202, /* ..fdispatch <- ..fsearch. PacketData:
- *0 {uint32_t queryId,} - only in new format!
- *1 uint32_t offset,
- *2 uint32_t numDocs,
- *3 uint32_t totNumDocs,
- *4 search::HitRank maxRank,
- *5 time_t docstamp, - sent as Uint32
- *6 struct FastS_connhitresult {
- * uint32_t docid;
- * search::HitRank metric
- * }[] hits */
+ PCODE_QUERYRESULT_NOTUSED = 202,
PCODE_ERROR = 203, /* ..fdispatch <- ..fsearch/..fdispatch
* {uint32_t queryId,} - only in new format!
* uint32_t error_code [see common/errorcodes.h]
* uint32_t message_len
* char[] message (UTF-8) */
- PCODE_GETDOCSUMS = 204, /* ..fdispatch -> ..fsearch. PacketData:
- *0 {uint32_t queryId,} - only in new format!
- * time_t docstamp - header
- * uint32_t[] docid - body */
+ PCODE_GETDOCSUMS_NOTUSED = 204,
PCODE_DOCSUM = 205, /* ..fdispatch <- ..fsearch.
*0 {uint32_t queryId,} - only in new format!
*1 uint32_t location
*2 char[] <title, incipit, URL, ...>
*/
- PCODE_MONITORQUERY = 206, /* ..fdispatch -> ..fsearch. No packet data.
- */
- PCODE_MONITORRESULT = 207, /* ..fdispatch <- ..fsearch. PacketData:
- * int partitionId,
- * time_t timeStamp */
- PCODE_MLD_QUERYRESULT = 208,/* ..fdispatch <- ..fdispatch.
- * header: {queryId,} offset, numdocs, tnumdocs,
- * maxRank, docstamp
- * body: (docid, metric, partition, docstamp)*
- */
- PCODE_MLD_GETDOCSUMS = 209, /* ..fdispatch -> ..fdispatch.
- * header: {queryId,} docstamp
- * body: (docid, partition, docstamp)*
- */
- PCODE_MLD_MONITORRESULT = 210 ,/* ..fdispatch <- ..fdispatch NB: no queryId!
- * lowest partition id,
- * timestamp,
- * total number of nodes,
- * active nodes,
- * total number of partitions,
- * active partitions
- */
- PCODE_CLEARCACHES = 211, /* ..fdispatch -> ..fdispatch. No packet data/ NotUsed
- */
+ PCODE_MONITORQUERY_NOTUSED = 206,
+ PCODE_MONITORRESULT_NOTUSED = 207,
+ PCODE_MLD_QUERYRESULT_NOTUSED = 208,
+ PCODE_MLD_GETDOCSUMS_NOTUSED = 209,
+ PCODE_MLD_MONITORRESULT_NOTUSED = 210,
+ PCODE_CLEARCACHES_NOTUSED = 211,
PCODE_QUERY2_NOTUSED = 212,
- PCODE_PARSEDQUERY2 = 213, /* ..fdispatch -> ..fsearch. PacketData:
- *0 {uint32_t queryId,} - only in new format!
- *1 ..query::querytypes searchType, - all/any/exact
- *2 uint32_t offset,
- *3 uint32_t maxhits,
- *4 uint32_t qflags, (including usehardware)
- *5 uint32_t rankprofile, - enum
- *6 uint32_t numStackItems,
- *7 multiple encoded stackitems:
- - uint32_t OR|AND|NOT|RANK
- uint32_t arity
- - uint32_t PHRASE
- uint32_t arity
- uint32_t indexNameLen
- char[] indexName
- - uint32_t TERM
- uint32_t indexNameLen
- char[] indexName
- uint32_t termLen
- char[] term
- */
+ PCODE_PARSEDQUERY2_NOTUSED = 213,
PCODE_MLD_QUERYRESULT2_NOTUSED = 214,
PCODE_MLD_GETDOCSUMS2_NOTUSED = 215,
+ PCODE_QUEUELEN_NOTUSED = 216,
- PCODE_QUEUELEN = 216, /* fdispatch <- fsearch.
- * header: queueLen, dispatchers
- */
PCODE_QUERYRESULTX = 217, /*
* {uint32_t queryId,} - only if persistent
* uint32_t featureflags, - see 'queryresult_features'
@@ -280,8 +172,6 @@ enum packetcode {
* uint32_t docstamp,
* uint32_t[numDocs] sortIndex - if QRF_SORTDATA
* char[sidx[n - 1]] sortData - if QRF_SORTDATA
- * uint32_t aggrDataLen - if QRF_AGGRDATA
- * char[aggrDataLen] aggrData - if QRF_AGGRDATA
* uint32_t groupDataLen - if QRF_GROUPDATA
* char[groupDataLen] groupData - if QRF_GROUPDATA
* uint64_t coverageDocs - if QRF_COVERAGE
@@ -315,8 +205,6 @@ enum packetcode {
* }
* uint32_t sortSpecLen - if QF_SORTSPEC
* char[sortSpecLen] sortSpec - if QF_SORTSPEC
- * uint32_t aggrSpecLen - if QF_AGGRSPEC
- * char[aggrSpecLen] aggrSpec - if QF_AGGRSPEC
* uint32_t groupSpecLen - if QF_GROUPSPEC
* char[groupSpecLen] groupSpec - if QF_GROUPSPEC
* uint32_t locationLen - if QF_LOCATION
diff --git a/searchlib/src/vespa/searchlib/engine/packetconverter.cpp b/searchlib/src/vespa/searchlib/engine/packetconverter.cpp
index 9282c7cc820..8405f87a9c2 100644
--- a/searchlib/src/vespa/searchlib/engine/packetconverter.cpp
+++ b/searchlib/src/vespa/searchlib/engine/packetconverter.cpp
@@ -119,11 +119,9 @@ PacketConverter::fromSearchReply(const SearchReply &reply, QUERYRESULTX &packet)
packet.AllocateGroupData(reply.groupResult.size());
memcpy(packet._groupData, &(reply.groupResult[0]), reply.groupResult.size());
}
- if (reply.useCoverage) {
- packet._features |= QRF_COVERAGE;
- packet._coverageDocs = reply.coverage.getCovered();
- packet._activeDocs = reply.coverage.getActive();
- }
+ packet._features |= QRF_COVERAGE;
+ packet._coverageDocs = reply.coverage.getCovered();
+ packet._activeDocs = reply.coverage.getActive();
if (reply.useWideHits) {
packet._features |= QRF_MLD;
}
@@ -161,7 +159,7 @@ PacketConverter::toDocsumRequest(const GETDOCSUMSX &packet, DocsumRequest &reque
request.location = packet._location;
request._flags = packet._flags;
request.useWideHits = checkFeature(packet._features, GDF_MLD);
- uint32_t hitCnt = packet._docidCnt;
+ uint32_t hitCnt = packet._docid.size();
request.hits.resize(hitCnt);
for (uint32_t i = 0; i < hitCnt; ++i) {
request.hits[i].gid = packet._docid[i]._gid;
diff --git a/searchlib/src/vespa/searchlib/engine/packetconverter.h b/searchlib/src/vespa/searchlib/engine/packetconverter.h
index f58bf6a9642..aea75186cde 100644
--- a/searchlib/src/vespa/searchlib/engine/packetconverter.h
+++ b/searchlib/src/vespa/searchlib/engine/packetconverter.h
@@ -35,7 +35,6 @@ private:
public:
typedef search::fs4transport::FS4Packet_QUERYX QUERYX;
typedef search::fs4transport::FS4Packet_QUERYRESULTX QUERYRESULTX;
- typedef search::fs4transport::FS4Packet_QUEUELEN QUEUELEN;
typedef search::fs4transport::FS4Packet_ERROR ERROR;
typedef search::fs4transport::FS4Packet_GETDOCSUMSX GETDOCSUMSX;
typedef search::fs4transport::FS4Packet_DOCSUM DOCSUM;
diff --git a/searchlib/src/vespa/searchlib/engine/searchreply.cpp b/searchlib/src/vespa/searchlib/engine/searchreply.cpp
index 529be053e42..52a4431a239 100644
--- a/searchlib/src/vespa/searchlib/engine/searchreply.cpp
+++ b/searchlib/src/vespa/searchlib/engine/searchreply.cpp
@@ -18,14 +18,11 @@ SearchReply::SearchReply()
sortIndex(),
sortData(),
groupResult(),
- useCoverage(false),
coverage(),
useWideHits(false),
hits(),
errorCode(0),
errorMessage(),
- useQueueLen(false),
- queueLen(0),
request()
{
}
@@ -40,14 +37,11 @@ SearchReply::SearchReply(const SearchReply &rhs)
sortIndex (rhs.sortIndex),
sortData (rhs.sortData),
groupResult (rhs.groupResult),
- useCoverage (rhs.useCoverage),
coverage (rhs.coverage),
useWideHits (rhs.useWideHits),
hits (rhs.hits),
errorCode (rhs.errorCode),
errorMessage (rhs.errorMessage),
- useQueueLen (rhs.useQueueLen),
- queueLen (rhs.queueLen),
request() // NB not copied
{
}
diff --git a/searchlib/src/vespa/searchlib/engine/searchreply.h b/searchlib/src/vespa/searchlib/engine/searchreply.h
index 0e7ab43e66d..8a5fc7e2a2b 100644
--- a/searchlib/src/vespa/searchlib/engine/searchreply.h
+++ b/searchlib/src/vespa/searchlib/engine/searchreply.h
@@ -57,7 +57,6 @@ public:
std::vector<uint32_t> sortIndex;
std::vector<char> sortData;
vespalib::Array<char> groupResult;
- bool useCoverage;
Coverage coverage;
bool useWideHits;
std::vector<Hit> hits;
@@ -67,9 +66,6 @@ public:
uint32_t errorCode;
vespalib::string errorMessage;
- // piggyback monitoring
- bool useQueueLen;
- uint32_t queueLen;
SearchRequest::UP request;
SearchReply();
diff --git a/searchlib/src/vespa/searchlib/engine/transportserver.cpp b/searchlib/src/vespa/searchlib/engine/transportserver.cpp
index cdde798b579..73594a950d1 100644
--- a/searchlib/src/vespa/searchlib/engine/transportserver.cpp
+++ b/searchlib/src/vespa/searchlib/engine/transportserver.cpp
@@ -32,19 +32,9 @@ TransportServer::SearchHandler::searchDone(SearchReply::UP reply)
if (reply.get() != 0) {
const SearchReply &r = *reply;
if (r.valid) {
- if (r.useQueueLen) {
- PacketConverter::QUEUELEN *p = new PacketConverter::QUEUELEN();
- p->_queueLen = r.queueLen;
- p->_dispatchers = clientCnt;
- if (shouldLog(DEBUG_SEARCH)) {
- logPacket("outgoing packet", p, 0, channel->GetConnection());
- }
- channel->GetConnection()->PostPacket(p, FNET_NOID);
- }
if (r.errorCode == 0) {
PacketConverter::QUERYRESULTX *p = new PacketConverter::QUERYRESULTX();
PacketConverter::fromSearchReply(r, *p);
- p->UpdateCompatPCODE();
if (shouldLog(DEBUG_SEARCH)) {
logPacket("outgoing packet", p, channel, 0);
}
@@ -141,7 +131,6 @@ TransportServer::MonitorHandler::pingDone(MonitorReply::UP reply)
const MonitorReply &r = *reply;
PacketConverter::MONITORRESULTX *p = new PacketConverter::MONITORRESULTX();
PacketConverter::fromMonitorReply(r, *p);
- p->UpdateCompatPCODE();
if (shouldLog(DEBUG_MONITOR)) {
logPacket("outgoing packet", p, 0, connection);
}