summaryrefslogtreecommitdiffstats
path: root/searchcore/src
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@yahoo-inc.com>2017-01-04 13:27:40 +0000
committerTor Egge <Tor.Egge@yahoo-inc.com>2017-01-04 13:27:40 +0000
commit68acec412cc00cdbf4fcf9192d98cbe7b7fff16f (patch)
tree8b1175e4f8f9221efcedc4f3690ff8a483ee62a3 /searchcore/src
parent533fe298affe57d6f0d16f883ead34bb63836474 (diff)
Treat attribute fields the same way as indexed fields with regards to
delaying lid reuse, helper threads are used for those fields too now.
Diffstat (limited to 'searchcore/src')
-rw-r--r--searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp2
-rw-r--r--searchcore/src/tests/proton/documentmetastore/lidreusedelayer/lidreusedelayer_test.cpp16
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/ilidreusedelayer.h2
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/lid_reuse_delayer_config.cpp5
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/lid_reuse_delayer_config.h4
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/lidreusedelayer.cpp10
-rw-r--r--searchcore/src/vespa/searchcore/proton/documentmetastore/lidreusedelayer.h4
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp2
8 files changed, 23 insertions, 22 deletions
diff --git a/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp b/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp
index 6415138631e..5d932cb7dfc 100644
--- a/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/feedview/feedview_test.cpp
@@ -663,7 +663,7 @@ struct SearchableFeedViewFixture : public FixtureBase
FastAccessFeedView::Context(aw, _docIdLimit),
SearchableFeedView::Context(iw))
{
- runInMaster([&]() { _lidReuseDelayer.setHasIndexedFields(true); });
+ runInMaster([&]() { _lidReuseDelayer.setHasIndexedOrAttributeFields(true); });
}
virtual IFeedView &getFeedView() { return fv; }
};
diff --git a/searchcore/src/tests/proton/documentmetastore/lidreusedelayer/lidreusedelayer_test.cpp b/searchcore/src/tests/proton/documentmetastore/lidreusedelayer/lidreusedelayer_test.cpp
index ceecaad7d5b..ad1eb837c3d 100644
--- a/searchcore/src/tests/proton/documentmetastore/lidreusedelayer/lidreusedelayer_test.cpp
+++ b/searchcore/src/tests/proton/documentmetastore/lidreusedelayer/lidreusedelayer_test.cpp
@@ -204,9 +204,9 @@ public:
setImmediateCommit(immediateCommit); } );
}
- void setHasIndexedFields(bool hasIndexedFields) {
+ void setHasIndexedOrAttributeFields(bool hasIndexedOrAttributeFields) {
runInMaster([&] () { _lidReuseDelayer.
- setHasIndexedFields(hasIndexedFields); } );
+ setHasIndexedOrAttributeFields(hasIndexedOrAttributeFields); } );
}
void commit() {
@@ -235,7 +235,7 @@ public:
TEST_F("require that nothing happens before free list is active", Fixture)
{
- f.setHasIndexedFields(true);
+ f.setHasIndexedOrAttributeFields(true);
EXPECT_FALSE(f.delayReuse(4));
EXPECT_FALSE(f.delayReuse({ 5, 6}));
EXPECT_TRUE(f._store.assertWork(0, 0, 0));
@@ -246,7 +246,7 @@ TEST_F("require that nothing happens before free list is active", Fixture)
TEST_F("require that single lid is delayed", Fixture)
{
f._store._freeListActive = true;
- f.setHasIndexedFields(true);
+ f.setHasIndexedOrAttributeFields(true);
EXPECT_TRUE(f.delayReuse(4));
f.scheduleDelayReuseLid(4);
EXPECT_TRUE(f._store.assertWork(1, 0, 1));
@@ -257,7 +257,7 @@ TEST_F("require that single lid is delayed", Fixture)
TEST_F("require that lid vector is delayed", Fixture)
{
f._store._freeListActive = true;
- f.setHasIndexedFields(true);
+ f.setHasIndexedOrAttributeFields(true);
EXPECT_TRUE(f.delayReuse({ 5, 6, 7}));
f.scheduleDelayReuseLids({ 5, 6, 7});
EXPECT_TRUE(f._store.assertWork(0, 1, 3));
@@ -268,7 +268,7 @@ TEST_F("require that lid vector is delayed", Fixture)
TEST_F("require that reuse can be batched", Fixture)
{
f._store._freeListActive = true;
- f.setHasIndexedFields(true);
+ f.setHasIndexedOrAttributeFields(true);
f.setImmediateCommit(false);
EXPECT_FALSE(f.delayReuse(4));
EXPECT_FALSE(f.delayReuse({ 5, 6, 7}));
@@ -287,7 +287,7 @@ TEST_F("require that reuse can be batched", Fixture)
TEST_F("require that single element array is optimized", Fixture)
{
f._store._freeListActive = true;
- f.setHasIndexedFields(true);
+ f.setHasIndexedOrAttributeFields(true);
f.setImmediateCommit(false);
EXPECT_FALSE(f.delayReuse({ 4}));
EXPECT_TRUE(f._store.assertWork(0, 0, 0));
@@ -306,7 +306,7 @@ TEST_F("require that single element array is optimized", Fixture)
TEST_F("require that lids are reused faster with no indexed fields", Fixture)
{
f._store._freeListActive = true;
- f.setHasIndexedFields(false);
+ f.setHasIndexedOrAttributeFields(false);
EXPECT_FALSE(f.delayReuse(4));
EXPECT_TRUE(f._store.assertWork(1, 0, 1));
EXPECT_TRUE(assertThreadObserver(2, 0, f._writeService));
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/ilidreusedelayer.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/ilidreusedelayer.h
index 3fabfbe133c..598744978da 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/ilidreusedelayer.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/ilidreusedelayer.h
@@ -34,7 +34,7 @@ public:
virtual bool delayReuse(const std::vector<uint32_t> &lids) = 0;
virtual void setImmediateCommit(bool immediateCommit) = 0;
virtual bool getImmediateCommit() const = 0;
- virtual void setHasIndexedFields(bool hasIndexedFields) = 0;
+ virtual void setHasIndexedOrAttributeFields(bool hasIndexedFields) = 0;
virtual std::vector<uint32_t> getReuseLids() = 0;
};
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_reuse_delayer_config.cpp b/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_reuse_delayer_config.cpp
index c38b040cb91..84c579ba4e6 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_reuse_delayer_config.cpp
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_reuse_delayer_config.cpp
@@ -13,7 +13,7 @@ namespace documentmetastore
LidReuseDelayerConfig::LidReuseDelayerConfig()
: _visibilityDelay(0),
- _hasIndexedFields(false)
+ _hasIndexedOrAttributeFields(false)
{
}
@@ -21,7 +21,8 @@ LidReuseDelayerConfig::LidReuseDelayerConfig(const DocumentDBConfig &
configSnapshot)
: _visibilityDelay(configSnapshot.getMaintenanceConfigSP()->
getVisibilityDelay()),
- _hasIndexedFields(configSnapshot.getSchemaSP()->getNumIndexFields() > 0)
+ _hasIndexedOrAttributeFields(configSnapshot.getSchemaSP()->getNumIndexFields() > 0 ||
+ configSnapshot.getSchemaSP()->getNumAttributeFields() > 0)
{
}
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_reuse_delayer_config.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_reuse_delayer_config.h
index 7a5920dbf5f..18d2f55541c 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_reuse_delayer_config.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/lid_reuse_delayer_config.h
@@ -17,12 +17,12 @@ class LidReuseDelayerConfig
{
private:
fastos::TimeStamp _visibilityDelay;
- bool _hasIndexedFields;
+ bool _hasIndexedOrAttributeFields;
public:
LidReuseDelayerConfig();
explicit LidReuseDelayerConfig(const DocumentDBConfig &configSnapshot);
fastos::TimeStamp visibilityDelay() const { return _visibilityDelay; }
- bool hasIndexedFields() const { return _hasIndexedFields; }
+ bool hasIndexedOrAttributeFields() const { return _hasIndexedOrAttributeFields; }
};
} // namespace proton::documentmetastore
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/lidreusedelayer.cpp b/searchcore/src/vespa/searchcore/proton/documentmetastore/lidreusedelayer.cpp
index f5fac53fb6c..02dcdc2fb03 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/lidreusedelayer.cpp
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/lidreusedelayer.cpp
@@ -23,7 +23,7 @@ LidReuseDelayer::LidReuseDelayer(IThreadingService &writeService,
: _writeService(writeService),
_documentMetaStore(documentMetaStore),
_immediateCommit(true),
- _hasIndexedFields(false),
+ _hasIndexedOrAttributeFields(false),
_pendingLids()
{
}
@@ -44,7 +44,7 @@ LidReuseDelayer::delayReuse(uint32_t lid)
_pendingLids.push_back(lid);
return false;
}
- if (!_hasIndexedFields) {
+ if (!_hasIndexedOrAttributeFields) {
_documentMetaStore.removeComplete(lid);
return false;
}
@@ -62,7 +62,7 @@ LidReuseDelayer::delayReuse(const std::vector<uint32_t> &lids)
_pendingLids.insert(_pendingLids.end(), lids.cbegin(), lids.cend());
return false;
}
- if (!_hasIndexedFields) {
+ if (!_hasIndexedOrAttributeFields) {
_documentMetaStore.removeBatchComplete(lids);
return false;
}
@@ -86,10 +86,10 @@ LidReuseDelayer::getImmediateCommit() const
void
-LidReuseDelayer::setHasIndexedFields(bool hasIndexedFields)
+LidReuseDelayer::setHasIndexedOrAttributeFields(bool hasIndexedOrAttributeFields)
{
assert(_pendingLids.empty());
- _hasIndexedFields = hasIndexedFields;
+ _hasIndexedOrAttributeFields = hasIndexedOrAttributeFields;
}
diff --git a/searchcore/src/vespa/searchcore/proton/documentmetastore/lidreusedelayer.h b/searchcore/src/vespa/searchcore/proton/documentmetastore/lidreusedelayer.h
index 3c05735ea0c..0d21970ccf4 100644
--- a/searchcore/src/vespa/searchcore/proton/documentmetastore/lidreusedelayer.h
+++ b/searchcore/src/vespa/searchcore/proton/documentmetastore/lidreusedelayer.h
@@ -40,7 +40,7 @@ class LidReuseDelayer : public ILidReuseDelayer
searchcorespi::index::IThreadingService &_writeService;
IStore &_documentMetaStore;
bool _immediateCommit;
- bool _hasIndexedFields;
+ bool _hasIndexedOrAttributeFields;
std::vector<uint32_t> _pendingLids; // lids waiting for commit
public:
@@ -51,7 +51,7 @@ public:
virtual bool delayReuse(const std::vector<uint32_t> &lids) override;
virtual void setImmediateCommit(bool immediateCommit) override;
virtual bool getImmediateCommit() const override;
- virtual void setHasIndexedFields(bool hasIndexedFields) override;
+ virtual void setHasIndexedOrAttributeFields(bool hasIndexedOrAttributeFields) override;
virtual std::vector<uint32_t> getReuseLids() override;
};
diff --git a/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp b/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp
index 62c01124248..f866b36db21 100644
--- a/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp
@@ -359,7 +359,7 @@ SearchableDocSubDB::updateLidReuseDelayer(const LidReuseDelayerConfig &config)
* time, since DocumentDB::applyConfig() calls forceCommit() on the
* feed view before applying the new config to the sub dbs.
*/
- _lidReuseDelayer->setHasIndexedFields(config.hasIndexedFields());
+ _lidReuseDelayer->setHasIndexedOrAttributeFields(config.hasIndexedOrAttributeFields());
}