}
}
-int RGWSI_Notify::distribute(const string& key, bufferlist& bl)
+int RGWSI_Notify::distribute(const string& key, bufferlist& bl,
+ optional_yield y)
{
RGWSI_RADOS::Obj notify_obj = pick_control_obj(key);
ldout(cct, 10) << "distributing notification oid=" << notify_obj.get_ref().obj
<< " bl.length()=" << bl.length() << dendl;
- return robust_notify(notify_obj, bl);
+ return robust_notify(notify_obj, bl, y);
}
-int RGWSI_Notify::robust_notify(RGWSI_RADOS::Obj& notify_obj, bufferlist& bl)
+int RGWSI_Notify::robust_notify(RGWSI_RADOS::Obj& notify_obj, bufferlist& bl,
+ optional_yield y)
{
// The reply of every machine that acks goes in here.
boost::container::flat_set<std::pair<uint64_t, uint64_t>> acks;
bufferlist rbl;
// First, try to send, without being fancy about it.
- auto r = notify_obj.notify(bl, 0, &rbl);
+ auto r = notify_obj.notify(bl, 0, &rbl, y);
// If that doesn't work, get serious.
if (r < 0) {
rbl.clear();
// Reset the timeouts, we're only concerned with new ones.
timeouts.clear();
- r = notify_obj.notify(bl, 0, &rbl);
+ r = notify_obj.notify(bl, 0, &rbl, y);
if (r < 0) {
ldout(cct, 1) << "robust_notify: retry " << tries << " failed: "
<< cpp_strerror(-r) << dendl;
void _set_enabled(bool status);
void set_enabled(bool status);
- int robust_notify(RGWSI_RADOS::Obj& notify_obj, bufferlist& bl);
+ int robust_notify(RGWSI_RADOS::Obj& notify_obj, bufferlist& bl,
+ optional_yield y);
void schedule_context(Context *c);
public:
virtual void set_enabled(bool status) = 0;
};
- int distribute(const string& key, bufferlist& bl);
+ int distribute(const string& key, bufferlist& bl, optional_yield y);
void register_watch_cb(CB *cb);
};