Ralph Goers wrote:

OK. I'm wondering if the real problem is simply that the getDocument method is completely synchronized?
As far as pools go, I feel like a complete idiot.  See my comments below.

Vadim Gritsenko wrote:

Ralph Goers wrote:

Thanks Vadim. I'm posting this back to the Cocoon list as it seems what you are telling me is that the problem is either with the XMLFileModule or with running out of components in the pool on the pipeline being invoked.

What I am not clear on is what you are trying to tell me in the last paragraph. Are you saying that the deadlock can be avoided by configuring the components being used in the target pipeline differently?



I've not looked into pool source code yesterday to double check all points myself. I'm suggesting you to check:

  * What type of pool is really used


Where is that specified? I know you can specify what type of pipeline you want but where is the type of pool configured?


It is not a blocking pool, although the DataSourceComponent uses a blocking pool. If you run out of connections, it will block.
Everything else acts like a factory when over the limit.


* Why it is blocking (I guessed it is blocking due to resource exhaustion)


My guess is that the requests are simply coming in faster than XMLFileModule is taking to release the lock.

That is a possibility--if the method being called is static or belongs to a ThreadSafe component.

  * If it's hard limiting pool - why it's not soft limiting pool

Again - is that configured somewhere?

Unless you specifically set up a pool in your own component, it is soft limited.