Comment 2 for bug 1936508

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to swift (master)

Reviewed: https://review.opendev.org/c/openstack/swift/+/800974
Committed: https://opendev.org/openstack/swift/commit/bbaed18e9b681ce9cf26ffa6a5d5292f5cb219b7
Submitter: "Zuul (22348)"
Branch: master

commit bbaed18e9b681ce9cf26ffa6a5d5292f5cb219b7
Author: Alistair Coles <email address hidden>
Date: Thu Jul 15 18:08:01 2021 +0100

    diskfile: don't remove recently written non-durables

    DiskFileManager will remove any stale files during
    cleanup_ondisk_files(): these include tombstones and nondurable EC
    data fragments whose timestamps are older than reclaim_age. It can
    usually be safely assumed that a non-durable data fragment older than
    reclaim_age is not going to become durable. However, if an agent PUTs
    objects with specified older X-Timestamps (for example the reconciler
    or container-sync) then there is a window of time during which the
    object server has written an old non-durable data file but has not yet
    committed it to make it durable.

    Previously, if another process (for example the reconstructor) called
    cleanup_ondisk_files during this window then the non-durable data file
    would be removed. The subsequent attempt to commit the data file would
    then result in a traceback due to there no longer being a data file to
    rename, and of course the data file is lost.

    This patch modifies cleanup_ondisk_files to not remove old, otherwise
    stale, non-durable data files that were only written to disk in the
    preceding 'commit_window' seconds. 'commit_window' is configurable for
    the object server and defaults to 60.0 seconds.

    Closes-Bug: #1936508
    Related-Change: I0d519ebaaade35249fb7b17bd5f419ffdaa616c0
    Change-Id: I5f3318a44af64b77a63713e6ff8d0fd3b6144f13