]> git-server-git.apps.pok.os.sepia.ceph.com Git - rocksdb.git/commit
Fix possible crash in failure to sync some WALs (#12789)
authorPeter Dillinger <peterd@meta.com>
Fri, 21 Jun 2024 19:56:21 +0000 (12:56 -0700)
committerFacebook GitHub Bot <facebook-github-bot@users.noreply.github.com>
Fri, 21 Jun 2024 19:56:21 +0000 (12:56 -0700)
commit3ee4d5a11a882056b341a9a1694a71371a39f664
tree13e65eace7c996f2767049184cb1a4908b18e859
parentcce51f06640dc693796d87507b89a315a2a52718
Fix possible crash in failure to sync some WALs (#12789)

Summary:
I believe this was possible with recyclable logs before recent work like https://github.com/facebook/rocksdb/issues/12734, but this cleans up a couple of possible crashes revealed by the crash test.  A WAL with a nullptr file writer (already closed) can persist in `logs_` if a later WAL fails to sync. In case of any WAL sync failures, we don't record WAL syncs to the manifest. Thus, even if a WAL is fully synced and closed, we might need to keep it on the `logs_` list so that we know to record its sync to the manifest if there should be a successful sync next time. (However, I believe that's future-looking because currently any failure in WAL sync is considered non-recoverable.)

I don't believe this was likely enough before recent changes to warrant a release note (if it was possible).

Pull Request resolved: https://github.com/facebook/rocksdb/pull/12789

Test Plan: A unit test that would reveal the crashes, now fixed

Reviewed By: cbi42

Differential Revision: D58874154

Pulled By: pdillinger

fbshipit-source-id: bc69407cd9cbcd080af9585d502d4e33dafc3d29
db/db_impl/db_impl.cc
db/db_impl/db_impl.h
db/db_wal_test.cc