[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: svn commit: r1381808 - in /subversion/trunk/subversion/libsvn_fs_fs: fs_fs.c fs_fs.h

From: Daniel Shahaf <danielsh_at_elego.de>
Date: Fri, 7 Sep 2012 20:36:32 +0100

I think this fix is wrong. svn_fs_fs__read_noderev() should return the
parsed noderev as is --- if it's a revision file and the noderev
contains an is-fresh-txn-root field, then it needs to reflect that.

stefan2_at_apache.org wrote on Thu, Sep 06, 2012 at 23:52:17 -0000:
> Author: stefan2
> Date: Thu Sep 6 23:52:16 2012
> New Revision: 1381808
>
> URL: http://svn.apache.org/viewvc?rev=1381808&view=rev
> Log:
> Address issue #4031 by ignoring the is-fresh-txn-root flag when
> we read from committed revisions.
>
> Note: This does not fix the root cause but fixed svnadmin verify
> for existing repositories that contain empty revisions.
>
> * subversion/libsvn_fs_fs/fs_fs.h
> (svn_fs_fs__read_noderev): add allow_for_txn_roots parameter
> * subversion/libsvn_fs_fs/fs_fs.c
> (svn_fs_fs__read_noderev): adapt implementation
> (get_node_revision_body): adapt caller
>
> Modified:
> subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c
> subversion/trunk/subversion/libsvn_fs_fs/fs_fs.h
>
> Modified: subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c
> URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c?rev=1381808&r1=1381807&r2=1381808&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c (original)
> +++ subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c Thu Sep 6 23:52:16 2012
> @@ -2284,6 +2284,7 @@ get_node_revision_body(node_revision_t *
> SVN_ERR(svn_fs_fs__read_noderev(noderev_p,
> svn_stream_from_aprfile2(revision_file, FALSE,
> pool),
> + svn_fs_fs__id_txn_id(id) != NULL,
> pool));
>
> /* The noderev is not in cache, yet. Add it, if caching has been enabled. */
> @@ -2293,6 +2294,7 @@ get_node_revision_body(node_revision_t *
> svn_error_t *
> svn_fs_fs__read_noderev(node_revision_t **noderev_p,
> svn_stream_t *stream,
> + svn_boolean_t allow_for_txn_roots,
> apr_pool_t *pool)
> {
> apr_hash_t *headers;
> @@ -2423,7 +2425,9 @@ svn_fs_fs__read_noderev(node_revision_t
> }
>
> /* Get whether this is a fresh txn root. */
> - value = apr_hash_get(headers, HEADER_FRESHTXNRT, APR_HASH_KEY_STRING);
> + value = allow_for_txn_roots
> + ? apr_hash_get(headers, HEADER_FRESHTXNRT, APR_HASH_KEY_STRING)
> + : NULL;
> noderev->is_fresh_txn_root = (value != NULL);
>
> /* Get the mergeinfo count. */
>
> Modified: subversion/trunk/subversion/libsvn_fs_fs/fs_fs.h
> URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/fs_fs.h?rev=1381808&r1=1381807&r2=1381808&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/libsvn_fs_fs/fs_fs.h (original)
> +++ subversion/trunk/subversion/libsvn_fs_fs/fs_fs.h Thu Sep 6 23:52:16 2012
> @@ -94,11 +94,13 @@ svn_fs_fs__write_noderev(svn_stream_t *o
> apr_pool_t *pool);
>
> /* Read a node-revision from STREAM. Set *NODEREV to the new structure,
> - allocated in POOL. */
> + allocated in POOL. If ALLOW_FOR_TXN_ROOTS is FALSE, the is-fresh-txn-root
> + flag will be ignored. */
> /* ### Currently used only by fs_fs.c */
> svn_error_t *
> svn_fs_fs__read_noderev(node_revision_t **noderev,
> svn_stream_t *stream,
> + svn_boolean_t allow_for_txn_roots,
> apr_pool_t *pool);
>
>
>
>
Received on 2012-09-07 21:37:11 CEST

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.