summaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@yahoo-inc.com>2017-05-03 10:58:49 +0000
committerTor Egge <Tor.Egge@yahoo-inc.com>2017-05-03 12:24:15 +0000
commitba01c1cacf6789a9e9cfbce6393131e4736d9711 (patch)
treeb917f6994dfe464317be88f3ca315896409fcf66 /searchcore
parent87e1d0b949cf910871f283ee93565b96f23b21b0 (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.cpp9
-rw-r--r--searchcore/src/vespa/searchcore/proton/reference/gid_to_lid_change_listener.h1
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;