]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
Merge pull request #61092 from shashalu/fix-data-corruption-ETIMEDOUT-squid
authorYuri Weinstein <yweinste@redhat.com>
Tue, 25 Mar 2025 17:36:26 +0000 (10:36 -0700)
committerGitHub <noreply@github.com>
Tue, 25 Mar 2025 17:36:26 +0000 (10:36 -0700)
squid: rgw: fix data corruption when rados op return ETIMEDOUT

Reviewed-by: Casey Bodley <cbodley@redhat.com>
1  2 
src/rgw/driver/rados/rgw_putobj_processor.cc
src/rgw/driver/rados/rgw_rados.cc

index 5716ad3113e5943ce492826fb5fe9c71e30fc09a,d185fd76f620d93660d4c81d9b8a4cac07eda76b..a7e98f13e52b6492c20c95ae067bb48b6646ac2c
@@@ -587,11 -583,14 +587,16 @@@ int MultipartObjectProcessor::complete(
      op = librados::ObjectWriteOperation{};
      op.assert_exists(); // detect races with abort
      op.omap_set(m);
 +    cls_version_inc(op);
      r = rgw_rados_operate(rctx.dpp, meta_obj_ref.ioctx, meta_obj_ref.obj.oid, &op, rctx.y);
    }
 +
    if (r < 0) {
+     if (r == -ETIMEDOUT) {
+       // The meta_obj_ref write may eventually succeed, clear the set of objects for deletion. if it
+       // doesn't ever succeed, we'll orphan any tail objects as if we'd crashed before that write
+       writer.clear_written();
+     }
      return r == -ENOENT ? -ERR_NO_SUCH_UPLOAD : r;
    }
  
Simple merge