Checkout
stsp
committed
on 09 Jul 13
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
t… Show more
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.

Show less