Merge #12422: util: Make LockDirectory thread-safe, consistent
Summary:
1d4cbd2 test: Add unit test for LockDirectory (Wladimir J. van der Laan)
fc888bf util: Fix multiple use of LockDirectory (Wladimir J. van der Laan)
Pull request description:
Wrap the `boost::interprocess::file_lock` in a `std::unique_ptr` inside the map that keeps track of per-directory locks. This fixes a build issue with the clang 4.0.0+boost-1.58.0p8 version combo on OpenBSD 6.2, and should have no effect otherwise. Also add a unit test, make the function thread-safe, and fix Linux versus Windows behavior inconsistency. Meant to fix #12413.
Tree-SHA512: 1a94c714c932524a51212c46e8951c129337d57b00fd3da5a347c6bcf6a947706cd440f39df935591b2079995136917f71ca7435fb356f6e8a128c509a62ec32
Backport of Core PR 12422
https://github.com/bitcoin/bitcoin/pull/12422/files
Completes T607
Depends on D2808
Test Plan: make check
Reviewers: deadalnix, Fabien, #bitcoin_abc
Reviewed By: deadalnix, #bitcoin_abc
Differential Revision: https://reviews.bitcoinabc.org/D2809