On Mon, Jun 04, 2012 at 08:46:17AM -0000, stef...@apache.org wrote:
> Author: stefan2
> Date: Mon Jun  4 08:46:16 2012
> New Revision: 1345872
> 
> URL: http://svn.apache.org/viewvc?rev=1345872&view=rev
> Log:
> Explain how SHM limitations force us to store the revprop generation in disk
> and why that code is safe. Docstring improvement only.
> 
> * subversion/libsvn_fs_fs/fs_fs.c
>   (revprop caching): add technical background info
> 
> Suggested by: gstein
> 
> 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=1345872&r1=1345871&r2=1345872&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c (original)
> +++ subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c Mon Jun  4 08:46:16 2012
> @@ -2810,6 +2810,9 @@ svn_fs_fs__rev_get_root(svn_fs_id_t **ro
>  
>  /* Revprop caching management.
>   *
> + * Mechanism:
> + * ----------
> + * 
>   * Revprop caching needs to be activated and will be deactivated for the
>   * respective FS instance if the necessary infrastructure could not be
>   * initialized.  In deactivated mode, there is almost no runtime overhead
> @@ -2835,6 +2838,27 @@ svn_fs_fs__rev_get_root(svn_fs_id_t **ro
>   *
>   * The overhead for the second and following accesses to revprops is
>   * almost zero on most systems.
> + *
> + *
> + * Tech aspects:
> + * -------------
> + *
> + * A problem is that we need to provide a globally available file name to
> + * back the SHM implementation on OSes that need it.  We can only assume
> + * write access to some file within the respective repositories.  Because
> + * a given server process may access thousands of repositories during its
> + * lifetime, keeping the SHM data alive for all of them is also not an
> + * option.
> + *
> + * So, we store the new revprop generation on disk as part of each
> + * setrevprop call, i.e. this write will be serialized and the write order
> + * be guaranteed by the repository write lock.
> + *
> + * The only racy situation occurs when the data is being read again by two
> + * processes concurrently but in that situation,  the first process to
> + * finish that procedure is guaranteed to be the only one that initializes
> + * the SHM data.  Since even writers will first go through that
> + * initialization phase, they will never operate on stale data.
>   */
>  
>  /* Read revprop generation as stored on disk for repository FS. The result
> 

Stefan, this reminds me that I've been meaning to ask you a question:

Could you please check whether what I did for 'svnadmin hotcopy' and the
revprop cache is ok? See r1335543. Thanks!

Reply via email to