This only works reliably with the
objecter_retry_writes_after_first_reply setting, so make it part of
the test setup.
Signed-off-by: Josh Durgin <jdurgin@redhat.com>
This is needed to turn on persisting write errors, since older OSDs
won't be able to handle them.
Other features for kraken could potentially use this as well.
Signed-off-by: Josh Durgin <jdurgin@redhat.com>
This prevents reordering guarded writes or deletes.
Without this, the following sequence:
delete foo -> -ENOENT
write foo -> success
(client connection fails)
resend delete foo -> success, object deleted
resend write foo -> success - dup op, so no write performed
results in the object not existing, instead of containing data. After
this change, both delete and write are detected as dups and the
original ordering is preserved.
Fixes: http://tracker.ceph.com/issues/14468
Signed-off-by: Josh Durgin <jdurgin@redhat.com>
This is required to prevent re-ordering of guarded writes or deletes
in the presence of network failures and resends.
Use the existing submit_log_entries() method to initiate a repop that
only updates the pg log.
Keep the write error semantics close to the existing implementation -
if we have a buffer, return it, but do not persist the buffer for now.
Refs: http://tracker.ceph.com/issues/14468
Signed-off-by: Josh Durgin <jdurgin@redhat.com>
Dup detection only needs them indexed by version, and keeping them out
of the object index prevents error entries from contributing to the
missing set during recovery.
Signed-off-by: Josh Durgin <jdurgin@redhat.com>
This will store write error codes for use in dup op detection.
A few places use checks assuming is_update() or is_delete() are
opposites - fix those to ignore or consider errors, as appropriate.
Refs: http://tracker.ceph.com/issues/14468
Signed-off-by: Josh Durgin <jdurgin@redhat.com>
RGWDataSyncShardCR will only allocate an error_repo if it's doing
incremental sync, so RGWDataSyncSingleEntryCR needs to guard against a
null error_repo
also, RGWDataSyncShardCR::stop_spawned_services() was dropping the last
reference to the error_repo before calling drain_all(), which meant that
RGWDataSyncSingleEntryCR could still be holding a pointer. now uses a
boost::intrusive_ptr in RGWDataSyncSingleEntryCR to account for its
reference
Fixes: http://tracker.ceph.com/issues/16603
Signed-off-by: Casey Bodley <cbodley@redhat.com>
this fixes the build on armf.
on 32bit platforms, cstdint is very likely to
typedef long long int int64_t;
this results in compilation error like
`common/strtol.cc:190:75: error: duplicate explicit instantiation of 'T
strict_si_cast(const char, std::string) [with T = long long int;
std::string = std::basic_string]'
[-fpermissive]
template int64_t strict_si_cast(const char *str, std::string *err);
^`
we can address this by instantiate the primitive type of `long long`
instead of `in64_t`.
Fixes: http://tracker.ceph.com/issues/16398
Signed-off-by: Kefu Chai <kchai@redhat.com>
librados examples: link and include from current source tree by default.
Reviewed-by: Josh Durgin <jdurgin@redhat.com>
Reviewed-by: Kefu Chai <kchai@redhat.com>
Some day we might want make this interface more applicable by handling
the abnormal cases more gracefully...
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
The literal description of compression algorithm can vary from
various compression types and thus increases the complexity of
en/decoding, which as a result can cause chaos. Also it can be
more efficient by translating it into a fixed-length type.
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
otherwise they will go to the source tree, and "git ls-files" will list
them as untracked files, which annoy gitbuilder-ceph-tarball*-cmake
gitbuilders. like
+ echo 'error: Added files:'
error: Added files:
+ cat .git/added-files
src/pybind/rados/rados.egg-info/PKG-INFO
...
Signed-off-by: Kefu Chai <kchai@redhat.com>
Similar to mstart and mstop, mrgw also needs to find the correct build
dir as we pass in the pidfile and asokfile which otherwise falls back to
src/run dir.
Signed-off-by: Abhishek Lekshmanan <abhishek@suse.com>