You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by Oliver Zeigermann <ol...@zeigermann.de> on 2004/09/24 12:08:09 UTC
Locking and concurrency revisited for 2.2
Folks!
In the current 2.1 release branch there is a global lock enabled by
default that allows at most one writing request at a time. This is to
make explicit the implicit global lock that would have to be set when
locking the history folder that contains all versioned data.
I see no way to get rid of this global lock without a general redesign
of versioning. However, if auto-versioning is turned off and the store
used does not support versioning in the first place - e.g. like the file
store proposed by Alon - there should be a more suitable locking.
Unfortunately, the exclusive transient locks I introduced with 2.1 are
not sufficient for this purpose. For 2.2 I would like to remove them
completely and have read/write locks set and managed by the WebDAV
layer. Each method would then have to set the oppropriate locks in an
atomic block before anything else gets done. It is important to do the
locking in a block before anything else in order to avoid the risk of
deadlocks. As an example a GET request on /slide/files/olli.doc would
set read locks on /silde, /silde/files, and /slide/files/olli.doc. A PUT
on /slide/files/olli.doc would have to wait until the GET is ended and a
DELETE on /silde/files would have to wait as well. This is the same as
with the global write lock currently available. However if there is a
PUT to /slide/files/myfiles/olli.doc this would cause read locks to
/silde, /silde/files and write locks to /silde/files/myfiles and
/slide/files/myfiles/olli.doc which would allow for more concurrent read
requests. E.g. a parallel PUT to /slide/files/yourfiles/olli.doc would
be possible.
When Slide is accessed over the Slide API this locking would not be
enabled as well when there are externally controlled transactions
spanning more than one request.
Such a locking would and addition to stores that do locking of their
own, but would be even more helpful with stores that do not have locking
at all like the file store mentioned above.
OK, that's it for now. What do you people think about this? If you agree
I will implement it. Would be another step to a mature Slide system.
And, yes, sorry for this length post, I have observed my posts get
lengthy when I do not know for sure what I am talking about. So, be
careful ;)
Oliver
---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org
Re: Locking and concurrency revisited for 2.2
Posted by James Mason <ma...@apache.org>.
Oliver,
This approach sounds really logical to me :).
-James
Oliver Zeigermann wrote:
> Folks!
>
> In the current 2.1 release branch there is a global lock enabled by
> default that allows at most one writing request at a time. This is to
> make explicit the implicit global lock that would have to be set when
> locking the history folder that contains all versioned data.
>
> I see no way to get rid of this global lock without a general redesign
> of versioning. However, if auto-versioning is turned off and the store
> used does not support versioning in the first place - e.g. like the file
> store proposed by Alon - there should be a more suitable locking.
>
> Unfortunately, the exclusive transient locks I introduced with 2.1 are
> not sufficient for this purpose. For 2.2 I would like to remove them
> completely and have read/write locks set and managed by the WebDAV
> layer. Each method would then have to set the oppropriate locks in an
> atomic block before anything else gets done. It is important to do the
> locking in a block before anything else in order to avoid the risk of
> deadlocks. As an example a GET request on /slide/files/olli.doc would
> set read locks on /silde, /silde/files, and /slide/files/olli.doc. A PUT
> on /slide/files/olli.doc would have to wait until the GET is ended and a
> DELETE on /silde/files would have to wait as well. This is the same as
> with the global write lock currently available. However if there is a
> PUT to /slide/files/myfiles/olli.doc this would cause read locks to
> /silde, /silde/files and write locks to /silde/files/myfiles and
> /slide/files/myfiles/olli.doc which would allow for more concurrent read
> requests. E.g. a parallel PUT to /slide/files/yourfiles/olli.doc would
> be possible.
>
> When Slide is accessed over the Slide API this locking would not be
> enabled as well when there are externally controlled transactions
> spanning more than one request.
>
> Such a locking would and addition to stores that do locking of their
> own, but would be even more helpful with stores that do not have locking
> at all like the file store mentioned above.
>
> OK, that's it for now. What do you people think about this? If you agree
> I will implement it. Would be another step to a mature Slide system.
>
> And, yes, sorry for this length post, I have observed my posts get
> lengthy when I do not know for sure what I am talking about. So, be
> careful ;)
>
> Oliver
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: slide-dev-help@jakarta.apache.org
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org