state.obj.key.set_instance(gen_rand_instance_name());
}
-std::unique_ptr<MPSerializer> POSIXObject::get_serializer(const DoutPrefixProvider *dpp, const std::string& lock_name)
+std::unique_ptr<MPSerializer> POSIXObject::get_serializer(const DoutPrefixProvider *dpp, optional_yield y, const std::string& lock_name)
{
return std::make_unique<MPPOSIXSerializer>(dpp, driver, this, lock_name);
}
optional_yield y) override;
virtual bool is_expired() override;
virtual void gen_rand_obj_instance_name() override;
- virtual std::unique_ptr<MPSerializer> get_serializer(const DoutPrefixProvider *dpp,
+ virtual std::unique_ptr<MPSerializer> get_serializer(const DoutPrefixProvider *dpp, optional_yield y,
const std::string& lock_name) override;
virtual int transition(Bucket* bucket,
const rgw_placement_rule& placement_rule,
return 0;
}
-std::unique_ptr<MPSerializer> RadosObject::get_serializer(const DoutPrefixProvider *dpp, const std::string& lock_name)
+std::unique_ptr<MPSerializer> RadosObject::get_serializer(const DoutPrefixProvider *dpp, optional_yield y, const std::string& lock_name)
{
return std::make_unique<MPRadosSerializer>(dpp, store, this, lock_name);
}
virtual std::unique_ptr<Object> clone() override {
return std::unique_ptr<Object>(new RadosObject(*this));
}
- virtual std::unique_ptr<MPSerializer> get_serializer(const DoutPrefixProvider *dpp,
+ virtual std::unique_ptr<MPSerializer> get_serializer(const DoutPrefixProvider *dpp, optional_yield y,
const std::string& lock_name) override;
virtual int transition(Bucket* bucket,
const rgw_placement_rule& placement_rule,
s->cct->_conf.get_val<int64_t>("rgw_mp_lock_max_time");
const ceph::timespan dur = std::chrono::seconds(max_lock_secs_mp);
- serializer = meta_obj->get_serializer(this, "RGWCompleteMultipart");
+ serializer = meta_obj->get_serializer(this, y, "RGWCompleteMultipart");
op_ret = serializer->try_lock(this, dur, y);
if (op_ret < 0) {
ldpp_dout(this, 0) << "failed to acquire lock" << dendl;
int max_lock_secs_mp =
s->cct->_conf.get_val<int64_t>("rgw_mp_lock_max_time");
const ceph::timespan dur = std::chrono::seconds(max_lock_secs_mp);
- auto serializer = meta_obj->get_serializer(this, "RGWCompleteMultipart");
+ auto serializer = meta_obj->get_serializer(this, y, "RGWCompleteMultipart");
op_ret = serializer->try_lock(this, dur, y);
if (op_ret < 0) {
if (op_ret == -ENOENT) {
/** Create a randomized instance ID for this object */
virtual void gen_rand_obj_instance_name() = 0;
/** Get a multipart serializer for this object */
- virtual std::unique_ptr<MPSerializer> get_serializer(const DoutPrefixProvider *dpp,
+ virtual std::unique_ptr<MPSerializer> get_serializer(const DoutPrefixProvider *dpp, optional_yield y,
const std::string& lock_name) = 0;
/** Move the data of an object to new placement storage */
virtual int transition(Bucket* bucket,
}
std::unique_ptr<MPSerializer> DBObject::get_serializer(const DoutPrefixProvider *dpp,
+ optional_yield y,
const std::string& lock_name)
{
return std::make_unique<MPDBSerializer>(dpp, store, this, lock_name);
return std::unique_ptr<Object>(new DBObject(*this));
}
virtual std::unique_ptr<MPSerializer> get_serializer(const DoutPrefixProvider *dpp,
+ optional_yield y,
const std::string& lock_name) override;
virtual int transition(Bucket* bucket,
const rgw_placement_rule& placement_rule,
return next->gen_rand_obj_instance_name();
}
-std::unique_ptr<MPSerializer> FilterObject::get_serializer(const DoutPrefixProvider *dpp,
+std::unique_ptr<MPSerializer> FilterObject::get_serializer(const DoutPrefixProvider *dpp, optional_yield y,
const std::string& lock_name)
{
- std::unique_ptr<MPSerializer> s = next->get_serializer(dpp, lock_name);
+ std::unique_ptr<MPSerializer> s = next->get_serializer(dpp, y, lock_name);
return std::make_unique<FilterMPSerializer>(std::move(s));
}
optional_yield y) override;
virtual bool is_expired() override;
virtual void gen_rand_obj_instance_name() override;
- virtual std::unique_ptr<MPSerializer> get_serializer(const DoutPrefixProvider *dpp,
+ virtual std::unique_ptr<MPSerializer> get_serializer(const DoutPrefixProvider *dpp, optional_yield y,
const std::string& lock_name) override;
virtual int transition(Bucket* bucket,
const rgw_placement_rule& placement_rule,