A varient of this patch was committed in r39740.
On Sep 30, 2009, at 5:08 PM, Hyrum K. Wright wrote:
> Greg, et. al.,
> The attached patch is an attempt to move the .svn/lock files into a
> separate table in .svn/wc.db. The reason to do this is so that we can
> use the sdb to manage the locked status of a directory, particularly
> as we start using svn_wc__entry_modify2(), which currently does *not*
> do a write check on the access baton. Eventually, I plan to add a
> member to pdh->wcroot which moves the in-memory state from the access
> baton to wc_db.
>
> Whether or not we'll need these locks in the long term is still an
> open question (I hope we don't), but we still need them for the time
> being, particularly as we move from access batons. Even if this table
> eventually goes away, I think it better for wc_db to be managing this
> state than the access baton, hence this patch.
>
> This patch passes all tests locally for me. I'm not committing it
> just yet because I want to make sure the approach is valid, and that
> I've correctly plugged into the upgrade code in bumping the format to
> f14.
>
> Comments appreciated.
>
> -Hyrum
>
> [[[
> Bump the wc_db format to 14, moving the physical locks files into an
> sqlite table.
>
> * subversion/tests/libsvn_wc/db-test.c
> (data_loading_sql): Add the format 14 sql.
> (test_upgrading_to_f13): Rename to...
> (test_upgrading_to_f14): ...this, since we have to upgrade through
> f13 to
> get to f14, we don't lose any test coverage here.
> (test_funcs): Update test name.
>
> * subversion/tests/cmdline/upgrade_tests.py
> (get_current_format): Update with the now-current f14.
>
> * subversion/tests/cmdline/svntest/actions.py
> (lock_admin_dir): Apply the lock into the sdb, rather than dropping
> a lock
> file.
>
> * subversion/libsvn_wc/wc.h
> (SVN_WC__VERSION): Bump to 14.
> (SVN_WC__PHYSICAL_LOCK_FILE): New.
>
> * subversion/libsvn_wc/lock.c
> (create_lock): Remove.
> (adm_access_alloc): Call the wc_db lock functions, rather than
> dealing
> a physical lock.
> (close_single, svn_wc__adm_write_check): Same.
> (svn_wc_locked): Create a context, and use it to call into wc_db to
> inquire about locked status.
>
> * subversion/libsvn_wc/wc-queries.sql
> (STMT_INSERT_WC_LOCK, STMT_SELECT_WC_LOCK, STMT_DELETE_WC_LOCK):
> New.
>
> * subversion/libsvn_wc/wc-metadata.sql:
> Introduce new format 14 stuff, and keep the old format 14 stuff as
> well.
>
> * subversion/libsvn_wc/wc_db.c
> (upgrade_sql): Add the format 14 upgrade sql.
> (svn_wc__db_wclock_set, svn_wc__db_wclocked,
> svn_wc__db_wclock_remove): New.
>
> * subversion/libsvn_wc/wc_db.h
> (svn_wc__db_wclock_set, svn_wc__db_wclocked,
> svn_wc__db_wclock_remove): New.
>
> * subversion/libsvn_wc/upgrade.c
> (create_physical_lock): New.
> (upgrade_to_wcng): Instead of using access batons to steal the
> write lock,
> just do it outselves.
> (migrate_locks): Move existing locks into the wc.db.
> (bump15_baton): Renamed from this...
> (bump14_baton): ...to this.
> (bump_database_to_15): Renamed from this...
> (bump_database_to_14): ...to this.
> (bump_to_15): Renamed from this...
> (bump_to_14): ...to this.
> (svn_wc__upgrade_sdb): Add a section for bumping to the new format
> 14.
>
> ]]]
>
> ------------------------------------------------------
> http://subversion.tigris.org/ds/viewMessage.do?
> dsForumId=462&dsMessageId=2402286<lock_files.patch>
------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2402629
Received on 2009-10-01 19:42:18 CEST