diff options
author | Tor Egge <Tor.Egge@yahoo-inc.com> | 2017-05-03 10:58:49 +0000 |
---|---|---|
committer | Tor Egge <Tor.Egge@yahoo-inc.com> | 2017-05-03 12:24:15 +0000 |
commit | ba01c1cacf6789a9e9cfbce6393131e4736d9711 (patch) | |
tree | b917f6994dfe464317be88f3ca315896409fcf66 /searchcore | |
parent | 87e1d0b949cf910871f283ee93565b96f23b21b0 (diff) |
Replace task id with executor id and component id in sequenced task executor.
Add method to map component id to executor id.
Map to executor id early in gid to lid change listener, to allow the
notification tasks to be safely scheduled.
Diffstat (limited to 'searchcore')
-rw-r--r-- | searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_listener.cpp | 9 | ||||
-rw-r--r-- | searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_listener.h | 1 |
2 files changed, 6 insertions, 4 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_listener.cpp b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_listener.cpp index 271399fbdb5..bc4f57441ea 100644 --- a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_listener.cpp +++ b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_listener.cpp @@ -12,6 +12,7 @@ GidToLidChangeListener::GidToLidChangeListener(search::ISequencedTaskExecutor &a const vespalib::string &name, const vespalib::string &docTypeName) : _attributeFieldWriter(attributeFieldWriter), + _executorId(_attributeFieldWriter.getExecutorId(attr->getName())), _attr(std::move(attr)), _refCount(refCount), _name(name), @@ -29,8 +30,8 @@ GidToLidChangeListener::notifyGidToLidChange(document::GlobalId gid, uint32_t li { std::promise<bool> promise; std::future<bool> future = promise.get_future(); - _attributeFieldWriter.execute(_attr->getName(), - [this, &promise, gid, lid]() { _attr->notifyGidToLidChange(gid, lid); promise.set_value(true); }); + _attributeFieldWriter.executeLambda(_executorId, + [this, &promise, gid, lid]() { _attr->notifyGidToLidChange(gid, lid); promise.set_value(true); }); (void) future.get(); } @@ -39,8 +40,8 @@ GidToLidChangeListener::notifyRegistered() { std::promise<bool> promise; std::future<bool> future = promise.get_future(); - _attributeFieldWriter.execute(_attr->getName(), - [this, &promise]() { _attr->populateReferencedLids(); promise.set_value(true); }); + _attributeFieldWriter.executeLambda(_executorId, + [this, &promise]() { _attr->populateReferencedLids(); promise.set_value(true); }); (void) future.get(); } diff --git a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_listener.h b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_listener.h index a96c9678600..6d5ccb4b36f 100644 --- a/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_listener.h +++ b/searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_listener.h @@ -17,6 +17,7 @@ namespace proton { class GidToLidChangeListener : public IGidToLidChangeListener { search::ISequencedTaskExecutor &_attributeFieldWriter; + uint32_t _executorId; std::shared_ptr<search::attribute::ReferenceAttribute> _attr; MonitoredRefCount &_refCount; vespalib::string _name; |