hi andreas!

Andreas Hartmann wrote:
Andreas Hartmann schrieb:
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.

wow. you've been busy! thanks for your work.

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.

neat.

* 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.

let me see if i'm getting this: a source URI is a uuid? or a uuid plus language? or uuid plus language plus revision? no, the last wouldn't make sense... can you elaborate?

* 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.

makes sense.

Another one:

* UnitOfWorkImpl.commit()/rollback() are now locked via the class
object. This means that only one session can be committed at a time.
Before, there have been exceptions ("... has been checked out by another
user") when running the load tests and two sessions were committed at
the same time.

a lock in the class object? that means a global lock iiuc. what happens to other sessions that want to commit? do they spin, or are they being notified, or does the user see an error and is prompted to retry? (i know, i should read the code, but it's quite a chunk, and i'm up to other things atm - still trying to get a proxy test environment up...)


thanks,

jörn


--
Jörn Nettingsmeier

"One of my most productive days was throwing away 1000 lines of code."
  - Ken Thompson.

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

Reply via email to