You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ph...@apache.org on 2012/08/23 13:08:55 UTC

svn commit: r1376436 - /subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c

Author: philip
Date: Thu Aug 23 11:08:54 2012
New Revision: 1376436

URL: http://svn.apache.org/viewvc?rev=1376436&view=rev
Log:
Fix issue 4220, revprop packing post-commit breaks commit.

* subversion/libsvn_fs_fs/fs_fs.c
  (get_revision_proplist): Fall through to packed if possible.

Modified:
    subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c

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=1376436&r1=1376435&r2=1376436&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c Thu Aug 23 11:08:54 2012
@@ -3681,8 +3681,18 @@ get_revision_proplist(apr_hash_t **propl
    * non-packed shard.  If that fails, we will fall through to packed
    * shard reads. */
   if (!is_packed_revprop(fs, rev))
-    SVN_ERR(read_non_packed_revprop(proplist_p, fs, rev, generation,
-                                    pool));
+    {
+      svn_error_t *err = read_non_packed_revprop(proplist_p, fs, rev,
+                                                 generation, pool);
+      if (err)
+        {
+          if (!APR_STATUS_IS_ENOENT(err->apr_err)
+              || ffd->format < SVN_FS_FS__MIN_PACKED_REVPROP_FORMAT)
+            return svn_error_trace(err);
+
+          svn_error_clear(err);
+        }
+    }
 
   /* if revprop packing is available and we have not read the revprops, yet,
    * try reading them from a packed shard.  If that fails, REV is most



Re: svn commit: r1376436 - /subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c

Posted by Philip Martin <ph...@wandisco.com>.
"Bert Huijben" <be...@qqmail.nl> writes:

>> -    SVN_ERR(read_non_packed_revprop(proplist_p, fs, rev, generation,
>> -                                    pool));
>> +    {
>> +      svn_error_t *err = read_non_packed_revprop(proplist_p, fs, rev,
>> +                                                 generation, pool);
>> +      if (err)
>> +        {
>> +          if (!APR_STATUS_IS_ENOENT(err->apr_err)
>> +              || ffd->format < SVN_FS_FS__MIN_PACKED_REVPROP_FORMAT)
>> +            return svn_error_trace(err);
>> +
>> +          svn_error_clear(err);
>
> Are the output arguments of read_no_packed_revprop guaranteed (or unused) after this error clear + fall through?

*proplist_p is explicitly set to NULL before the call.

-- 
Certified & Supported Apache Subversion Downloads:
http://www.wandisco.com/subversion/download

RE: svn commit: r1376436 - /subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c

Posted by Bert Huijben <be...@qqmail.nl>.

> -----Original Message-----
> From: philip@apache.org [mailto:philip@apache.org]
> Sent: donderdag 23 augustus 2012 13:09
> To: commits@subversion.apache.org
> Subject: svn commit: r1376436 -
> /subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c
> 
> Author: philip
> Date: Thu Aug 23 11:08:54 2012
> New Revision: 1376436
> 
> URL: http://svn.apache.org/viewvc?rev=1376436&view=rev
> Log:
> Fix issue 4220, revprop packing post-commit breaks commit.
> 
> * subversion/libsvn_fs_fs/fs_fs.c
>   (get_revision_proplist): Fall through to packed if possible.
> 
> Modified:
>     subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c
> 
> 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=1376436&r1=1376435&r2=1376436&view=diff
> ==========================================================
> ====================
> --- subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c (original)
> +++ subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c Thu Aug 23 11:08:54
> 2012
> @@ -3681,8 +3681,18 @@ get_revision_proplist(apr_hash_t **propl
>     * non-packed shard.  If that fails, we will fall through to packed
>     * shard reads. */
>    if (!is_packed_revprop(fs, rev))
> -    SVN_ERR(read_non_packed_revprop(proplist_p, fs, rev, generation,
> -                                    pool));
> +    {
> +      svn_error_t *err = read_non_packed_revprop(proplist_p, fs, rev,
> +                                                 generation, pool);
> +      if (err)
> +        {
> +          if (!APR_STATUS_IS_ENOENT(err->apr_err)
> +              || ffd->format < SVN_FS_FS__MIN_PACKED_REVPROP_FORMAT)
> +            return svn_error_trace(err);
> +
> +          svn_error_clear(err);

Are the output arguments of read_no_packed_revprop guaranteed (or unused) after this error clear + fall through?

	Bert

> +        }
> +    }
> 
>    /* if revprop packing is available and we have not read the revprops, yet,
>     * try reading them from a packed shard.  If that fails, REV is most
>