boost::optional<RGWPutObj_Buffer> buffering;
CompressorRef& plugin;
RGWPutObjProcessor_Atomic *processor;
- RGWOpStateSingleOp *opstate;
void (*progress_cb)(off_t, void *);
void *progress_data;
bufferlist extra_data_bl;
CompressorRef& plugin,
boost::optional<RGWPutObj_Compress>& compressor,
RGWPutObjProcessor_Atomic *p,
- RGWOpStateSingleOp *_ops,
void (*_progress_cb)(off_t, void *),
void *_progress_data) :
cct(cct),
compressor(compressor),
plugin(plugin),
processor(p),
- opstate(_ops),
progress_cb(_progress_cb),
progress_data(_progress_data),
extra_data_left(0),
data_len += bl.length();
bool again = false;
- bool need_opstate = true;
-
do {
void *handle = NULL;
rgw_raw_obj obj;
ofs += size;
- if (need_opstate && opstate) {
- /* need to update opstate repository with new state. This is ratelimited, so we're not
- * really doing it every time
- */
- ret = opstate->renew_state();
- if (ret < 0) {
- ldout(cct, 0) << "ERROR: RGWRadosPutObj::handle_data(): failed to renew op state ret=" << ret << dendl;
- int r = filter->throttle_data(handle, obj, size, false);
- if (r < 0) {
- ldout(cct, 0) << "ERROR: RGWRadosPutObj::handle_data(): processor->throttle_data() returned " << r << dendl;
- }
- /* could not renew state! might have been marked as cancelled */
- return ret;
- }
- need_opstate = false;
- }
-
ret = filter->throttle_data(handle, obj, size, false);
if (ret < 0)
return ret;
string obj_name = dest_obj.bucket.name + "/" + dest_obj.get_oid();
- RGWOpStateSingleOp *opstate = NULL;
-
- if (record_op_state) {
- opstate = new RGWOpStateSingleOp(this, client_id, op_id, obj_name);
-
- ret = opstate->set_state(RGWOpState::OPSTATE_IN_PROGRESS);
- if (ret < 0) {
- ldout(cct, 0) << "ERROR: failed to set opstate ret=" << ret << dendl;
- delete opstate;
- return ret;
- }
- }
-
boost::optional<RGWPutObj_Compress> compressor;
CompressorRef plugin;
}
}
- RGWRadosPutObj cb(cct, plugin, compressor, &processor, opstate, progress_cb, progress_data);
+ RGWRadosPutObj cb(cct, plugin, compressor, &processor, progress_cb, progress_data);
string etag;
real_time set_mtime;
goto set_err_state;
}
- if (opstate) {
- ret = opstate->set_state(RGWOpState::OPSTATE_COMPLETE);
- if (ret < 0) {
- ldout(cct, 0) << "ERROR: failed to set opstate ret=" << ret << dendl;
- }
- delete opstate;
- }
-
return 0;
set_err_state:
if (copy_if_newer && ret == -ERR_NOT_MODIFIED) {
ret = 0;
}
}
- if (opstate) {
- RGWOpState::OpState state;
- if (ret < 0) {
- state = RGWOpState::OPSTATE_ERROR;
- } else {
- state = RGWOpState::OPSTATE_COMPLETE;
- }
- int r = opstate->set_state(state);
- if (r < 0) {
- ldout(cct, 0) << "ERROR: failed to set opstate r=" << ret << dendl;
- }
- delete opstate;
- }
return ret;
}