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);
 
 


Reply via email to