diff options
author | Tor Egge <Tor.Egge@yahoo-inc.com> | 2017-01-04 13:27:40 +0000 |
---|---|---|
committer | Tor Egge <Tor.Egge@yahoo-inc.com> | 2017-01-04 13:27:40 +0000 |
commit | 68acec412cc00cdbf4fcf9192d98cbe7b7fff16f (patch) | |
tree | 8b1175e4f8f9221efcedc4f3690ff8a483ee62a3 /searchcore/src | |
parent | 533fe298affe57d6f0d16f883ead34bb63836474 (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')
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()); } |