Log Message: |
Fix issue #4390, "parallel nested checkout not possible with wc-ng".
Change the meaning of the enforce_empty_wq flag in svn_wc__db_t such
that the flag is checked only when the DB is locked for writing,
rather than when the DB is merely opened. This allows nested checkouts
to proceed in parallel to enclosing checkouts, and should also fix some
other issues for multi-process clients (according to Bert).
Suggested by: rhuijben
* subversion/libsvn_wc/wc_db.c
(svn_wc__db_init, svn_wc__db_upgrade_begin): Update callers of
svn_wc__db_pdh_create_wcroot().
(svn_wc__db_wclock_obtain): Verify that no work items are queued up
if db->enforce_empty_wq is set.
* subversion/libsvn_wc/wc_db_private.h
(svn_wc__db_t): Adjust documentation of enforce_empty_wq.
(svn_wc__db_pdh_create_wcroot): Remove enforce_empty_wq parameter.
(svn_wc__db_verify_no_work): Declare.
* subversion/libsvn_wc/wc_db_wcroot.c
(verify_no_work): Rename to ...
(svn_wc__db_verify_no_work): ... this and make this function re-usable
within libsvn_wc.
(svn_wc__db_pdh_create_wcroot): Remove enforce_empty_wq parameter, and
ignore that flag for the purpose of checking for empty work queue items.
As before, this function still checks the work queue during upgrades.
(svn_wc__db_wcroot_parse_local_abspath: Update caller of
svn_wc__db_pdh_create_wcroot().
* subversion/tests/cmdline/wc_tests.py
(checkout_within_locked_wc): Adjust expected output and remove XFail marker.
|