Stefan Fuhrmann wrote on Tue, Aug 26, 2014 at 17:04:27 +0200:
> Here the guarantees and limitations of the new implementation:
> 

I haven't had a chance to look at the code (sorry), but two quick
questions based on this summary:

> * No lost updates in revprop file contents even if the
>   SVN caches should be stale.
> * A connection (svn_fs_t) will always see at least all
>   changes up to and including its own last revprop change.
> * A new connection will always see all changes made
>   up to the point the connection got created.
> 
> * On Windows and Unixoids, readers will always see
>   the latest data if they are on the same machine as the
>   writing process.
> * Depending on OS read cache configuration and if the
>   repository is shared between machines, open connections
>   *might* no see revprop updates or might see them delayed
>   (the open revprop generation file handle may see a stale
>   OS file buffer).

Is starvation possible?  i.e., is it possible for the delay to be
indefinite (assume the reader fs_t does no write operations)?  I assume
the delay would be finite and bounded by a constant if the shared disk's
local file handles have this property.?

Is linearizability guaranteed?  i.e., if the repository is load-balanced
across four servers, and I do 'svn ps alpha 1; svn ps beta 2; svn ps
gamma 3; svn pl', is it possible for the last process to see beta
without seeing alpha?  (e.g., if each svn process gets load balanced to
a different server.)

Would the last scenario work correctly if the second command had been
an atomic revprop change of property "alpha" with original_value="1"?
(See ORIGINAL_VALUE parameter of svn_client_revprop_set2().)

> * Revprop caching may be inefficient if the repository is
>   shared between machines; again depending on OS config.

Cheers,

Daniel

Reply via email to