ode-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tammo van Lessen <tvanles...@gmail.com>
Subject Re: Problem with database connections within an Extension activity
Date Tue, 01 Jun 2010 08:19:27 GMT
Hi Milinda,

On 01.06.2010 06:01, Milinda Pathirage wrote:
> Hi Tammo,
> 
> Here is what happened in our tests. We are using embedded DB H2 and JPA in
> this scenario.
> 
> When there are about ten or more instances which waits for a human task, we
> can't create anymore instances until several waiting instance get completed.
> And when simple scheduler tries to get a DB connection from pool,
> it'll throw a exception saying no DB connections available in the pool. Also
> if we try to access the management API, we'll get timeout errors. When we
> tried with external MySQL DB, we can create more instances than with the
> embedded DB. But after some time, MySQL scenario will also fail due to DB
> connection unavailability.
> 
> I think that the extension activity blocks the whole transaction until it's
> execution is finished and JPA is holding DB connection at the time where
> extension is doing its work. According to
> the extension activity implementation, I don't see any advantage(may be I am
> wrong) in AbstractAsyncExtensionOperation, because it has the same
> implementation as Sync operation except user get the chance to invoke
> complete method.

Yeah, that's exactly the point. AbstractAsyncExtensionOperation is
intended to be the AbstractLongRunningExtensionOperation, but you need
to spawn an independent thread that does the long-running processing and
then directly return the run-method (directly after the long-running
thread is started and before it has finished). This ensures that the
navigator can continue. Once the thread is done, it can notify ODE that
the extension activity has completed or faulted via the channel ID and
the complete method.

HTH,
  Tammo
-- 
Tammo van Lessen - http://www.taval.de

Mime
View raw message