cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sylvain Wallez <>
Subject Re: Why is FlowInterpreter SingleThreaded?
Date Mon, 20 Oct 2003 16:42:51 GMT
Torsten Curdt wrote:

>> After looking carefully, the interpreter must be SingleThreaded, even 
>> if thread safe...
>> This is because although an intepreter can handle concurrent 
>> requests, each sitemap must have a different instance, since the 
>> interpreter holds the scripts defined in a <map:flow> statement.
>> So if the interpreter is made ThreadSafe, a unique instance will 
>> exist for the whole system, and will mix all script definitions and 
>> script global variables. Making it SingleThreaded ensures each 
>> sitemap will have its own instance. It seems hacky, but I don't see 
>> what other means we have to achieve this...
> without looking at the code: couldn't we pass the script definition on 
> each call? 

This means that the interpreter must "externalize" its state (compiled 
scripts and global scope) in an object stored in the treeprocessor for a 
sitemap (in the FlowNode).

Or another solution is to change Interpreter into InterpreterFactory: 
the state mentioned above would then be the interpreter itself.


Sylvain Wallez                                  Anyware Technologies 
{ XML, Java, Cocoon, OpenSource }*{ Training, Consulting, Projects }
Orixo, the opensource XML business alliance  -

View raw message