Am Aug 9, 2007 um 20:09 schrieb Richard Frovarp:

Andreas Hartmann wrote:
Hi Lenya devs,

as you may have noticed, I did a quite large commit to the revision
control infrastructure. The reason for this is that the former
implementation was not thread safe. This caused various
synchronization errors (ConcurrentModificationException etc.) when
running load tests with multiple threads.

A short overview of my changes:

* Refactored XML handling in SourceNodeRCML. Instead of reading/ writing the XML document for each operation, the list of entries is now loaded
one and only converted to XML when the RCML is written.

* SourceNodeRCMLs are now singletons per source URI, i.e. for each
source URI only one RCML object is created. This allows to synchronize
access to the RCML methods, avoiding concurrent modifications.

* Check-Out is now per session and not per user, i.e. you won't run
into trouble if you have two browser windows open.


The changes may seem fundamental because of the large commit, but in
fact most changes are refactoring and the addition of synchronization
facilities. The RCML interface has changed a bit, but since it is not
supposed to be called by client code, but rather from the repository
node implementations, this shouldn't cause any incompatibilities.

-- Andreas




There is a problem with these changes. You can't open a checked out page, unless you have the correct session. With no way to release the lock, any page that is locked and not properly unlocked by the user will remain locked. Before you could always get the user to login, hit edit, then cancel to release the lock. Now there is now way at all to do this.

A possible fix (also to avoid having to tell a user to login and «pseudo-checkout-again» a page) could be to add a check when a document is accessed if the user that checked out the locked document is still logged in; if not the lock can probably safely be released.

Jürgen


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to