summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@oath.com>2017-09-21 09:57:11 +0000
committerTor Egge <Tor.Egge@oath.com>2017-09-21 09:57:11 +0000
commit389aeebfbe39856f0f21ad455795d41c7eedd801 (patch)
treec571a2652cf40bbb12487edbb2f5842c82fc037c /searchlib
parent59a94a6cc5e0c76d7f34a0835f80b86033261651 (diff)
Make attribute disk usage estimate more robust. Use cached values instead
of calling methods that require an attribute guard being held.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/tests/attribute/attribute_test.cpp1
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attributevector.cpp4
2 files changed, 3 insertions, 2 deletions
diff --git a/searchlib/src/tests/attribute/attribute_test.cpp b/searchlib/src/tests/attribute/attribute_test.cpp
index e13c419e68e..b406afa7e7b 100644
--- a/searchlib/src/tests/attribute/attribute_test.cpp
+++ b/searchlib/src/tests/attribute/attribute_test.cpp
@@ -459,6 +459,7 @@ void AttributeTest::testReload(const AttributePtr & a, const AttributePtr & b, c
(*(static_cast<VectorType *>(a.get())), *(static_cast<VectorType *>(b.get())));
a->setCreateSerialNum(43u);
EXPECT_TRUE( a->saveAs(b->getBaseFileName()) );
+ a->commit(true);
if (preciseEstimatedSize(*a)) {
EXPECT_EQUAL(statSize(*b), a->getEstimatedSaveByteSize());
} else {
diff --git a/searchlib/src/vespa/searchlib/attribute/attributevector.cpp b/searchlib/src/vespa/searchlib/attribute/attributevector.cpp
index 5735ddfd923..8b3af9bddd3 100644
--- a/searchlib/src/vespa/searchlib/attribute/attributevector.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/attributevector.cpp
@@ -805,8 +805,8 @@ uint64_t
AttributeVector::getEstimatedSaveByteSize() const
{
uint64_t headerSize = 4096;
- uint64_t totalValueCount = getTotalValueCount();
- uint64_t uniqueValueCount = getUniqueValueCount();
+ uint64_t totalValueCount = _status.getNumValues();
+ uint64_t uniqueValueCount = _status.getNumUniqueValues();
uint64_t docIdLimit = getCommittedDocIdLimit();
uint64_t datFileSize = 0;
uint64_t weightFileSize = 0;