Bruno CROS wrote:
when MaxIdle is set to 0, it works well, and the 5 maxActive are
sufficient.
No freeze at all.
it's a moot point whether only one connection or five connections are
used when maxIdle is 0. I think that maxIdle=0 will immediately close
returned connections.
The whenExhaustedAction block is well what i want, no error. And it works
with maxIdle set to 0.
I don't see why no connection remaining in the pool leads to a
serialization. Dead lock is a good assumption, it looks like that, but if
code only reads, i don't known at all how to produce dead lock.
A deadlock caused by the pool and and depended broker instances (one
broker wait for a result of another one or a broker leak), not a
database deadlock.
I'm
going to
look at common-pool settings, if maxIdle is common-pool setting.
yep, maxIdle is a commons-pool setting. I would recommend to check the
source code.
http://jakarta.apache.org/commons/pool/cvs-usage.html
(currently the apache svn is down due a SVN-server problem last night,
so download the sources).
regards,
Armin
regards
On 5/11/06, Armin Waibel <[EMAIL PROTECTED]> wrote:
Bruno CROS wrote:
> Hi Armin,
>
> autoCommit set to 1 does not avoid freeze. The fact is that database is
> only
> used to be read, so rollbacks ( by disconnecting) will never be long.
> autocommit is however set to 1 now. Thanks for the advice.
>
> I dont' known why it freezes when maxIdle set to -1 and why it does not
> when
> maxIdle is set to 0. But if i well guess, 0 closes usable connections,
> that's it ?! So it's not optimized.
>
You enabled whenExhaustedAction="1" this mean that the pool blocks till
a connection was returned. Max active connections is set to 5 this isn't
much for a mulithreaded application. Maybe your application cause a
deadlock, five different broker instances exhaust the pool and another
broker instance try to lookup a connection but other broker instances
still not closed.
What happens when you set whenExhaustedAction="0"?
I think if you set maxIdle=0 only one connection or none connections
will remain in the pool (maybe I'm wrong, I don't check commons-pool
sources) and all access is "serialized" by this.
regards,
Armin
> Here's my well working conn setup
>
> Regards.
>
>
> <connection-pool
> maxActive="5"
> maxIdle="0"
> minIdle="2"
> maxWait="1000"
> whenExhaustedAction="1"
>
> validationQuery="SELECT CURRENT_TIMESTAMP"
> testOnBorrow="true"
> testOnReturn="false"
> testWhileIdle="true"
> timeBetweenEvictionRunsMillis="60000"
> numTestsPerEvictionRun="2"
> minEvictableIdleTimeMillis="1800000"
> removedAbandonned="false"
> removeAbandonedTimeout="300"
> logAbandoned="true">
>
> <!-- Set fetchSize to 0 to use driver's default. -->
> <attribute attribute-name="fetchSize" attribute-value="0"/>
>
> <!-- Attributes with name prefix "jdbc." are passed directly
to
> the JDBC driver. -->
> <!-- Example setting (used by Oracle driver when Statement
> batching is enabled) -->
> <attribute attribute-name="jdbc.defaultBatchValue"
> attribute-value="5"/>
>
> <!-- Attributes determining if ConnectionFactoryDBCPImpl
> should also pool PreparedStatement. This is
> programmatically disabled
> when using platform=Oracle9i since Oracle statement
caching
> will conflict
> with DBCP ObjectPool-based PreparepdStatement caching
(ie
> setting true
> here has no effect for Oracle9i platform). -->
> <attribute attribute-name="dbcp.poolPreparedStatements"
> attribute-value="false"/>
> <attribute attribute-name="dbcp.maxOpenPreparedStatements"
> attribute-value="10"/>
> <!-- Attribute determining if the Commons DBCP connection
> wrapper will allow
> access to the underlying concrete Connection instance
from
> the JDBC-driver
> (normally this is not allowed, like in J2EE-containers
> using wrappers). -->
> <attribute attribute-name="
> dbcp.accessToUnderlyingConnectionAllowed" attribute-value="false"/>
> </connection-pool>
>
>
>
>
>
>
>
> On 5/6/06, Armin Waibel <[EMAIL PROTECTED]> wrote:
>>
>> Hi Bruno,
>>
>> Bruno CROS wrote:
>> > Hi Armin,
>> >
>> > In fact, i looked at the DB connections in the DB console. It was a
bad
>> > idea, because connection disappear !! I looked with netstat -a , and
i
>> saw
>> > several sockets/connections...
>> >
>> > Well, i was experiencing some freezes with these connections with a
>> pool
>> > setup maxActive set to -1. I didn't find any documentation on that
>> value.
>>
>> Both ConnectionFactoryPooledImpl and ConnectionFactoryDBCPImpl use
>> commons-pool to manage connections. There you can find details about
the
>> settings
>> http://jakarta.apache.org/commons/pool/apidocs/index.html
>>
>> I would recommend to set maxActive connections at most to the maximal
>> connections provided by your database server.
>>
>>
>> > What i known is that, when i put 0 (no limit), it seems there is no
>> more
>> > freeze.
>> >
>>
>> I think there is a typo in documentation. For unlimited connection
pool
>> you have to set -1.
>>
>>
http://jakarta.apache.org/commons/pool/apidocs/org/apache/commons/pool/impl/GenericObjectPool.html
>>
>> Will fix this till next release.
>>
>> In your jdbc-connection-descriptor (posted some time ago) you set
>> useAutoCommit="0". In this case you have to enable autoCommit 'false'
in
>> your jdbc-driver configuration setup, else you will run into rollback
>> hassle (if autoCommit is 'true' for connections).
>>
>> regards,
>> Armin
>>
>> > Can you ligth up me about that.
>> >
>> > Thanks.
>> >
>> > Regards.
>> >
>> >
>> >
>> > On 5/5/06, Armin Waibel <[EMAIL PROTECTED]> wrote:
>> >>
>> >> Hi Bruno,
>> >>
>> >> Bruno CROS wrote:
>> >> > Hi,
>> >> >
>> >> > I have a strange behaviour about the second database i use. It
>> seems
>> >> that
>> >> > using "broker =
>> >> > PersistenceBrokerFactory.createPersistenceBroker("rushDb");"
>> >> > always return the same broker/connection.
>> >> >
>> >> > My connection pool is setup as it have to keep 2 idle connections
>> >> > available, and it never occured. Still only one.
>> >> >
>> >> > How can i use several connection in this case?
>> >> >
>> >> > Note that this database is not not use to update datas. No
>> transaction
>> >> are
>> >> > used on it.
>> >> >
>> >>
>> >> how do you test this behavior? Please setup a test and lookup for
two
>> PB
>> >> instances at the same time:
>> >>
>> >> broker_A = PersistenceBrokerFactory.createPersistenceBroker
("rushDb");
>> >> broker_B = PersistenceBrokerFactory.createPersistenceBroker
("rushDb");
>> >>
>> >> Are A and B really the same broker instances? If you execute a
>> query on
>> >> both broker instances (don't close the broker after it) and then
>> lookup
>> >> the Connection from A and B - are the connections the same?
>> >>
>> >> regards,
>> >> Armin
>> >>
>> >> >
>> >> > Thanks.
>> >> >
>> >> >
>> >> > Here's my connection setup.
>> >> >
>> >> > <jdbc-connection-descriptor
>> >> > jcd-alias="rushDb"
>> >> > default-connection="false"
>> >> > platform="MsSQLServer"
>> >> > jdbc-level="2.0"
>> >> > driver="com.microsoft.jdbc.sqlserver.SQLServerDriver"
>> >> > protocol="JDBC"
>> >> > subprotocol="microsoft:sqlserver"
>> >> > dbalias="//xxx.x.x.x:1433"
>> >> > username="xxxx"
>> >> > password="xxxx"
>> >> > batch-mode="true"
>> >> > useAutoCommit="0"
>> >> > ignoreAutoCommitExceptions="true"
>> >> > >
>> >> >
>> >> > and pool setup :
>> >> >
>> >> > maxActive="5"
>> >> > maxIdle="-1"
>> >> > minIdle="2"
>> >> > maxWait="5000"
>> >> > whenExhaustedAction="2"
>> >> >
>> >> > validationQuery="SELECT CURRENT_TIMESTAMP"
>> >> > testOnBorrow="true"
>> >> > testOnReturn="false"
>> >> > testWhileIdle="true"
>> >> > timeBetweenEvictionRunsMillis="60000"
>> >> > numTestsPerEvictionRun="2"
>> >> > minEvictableIdleTimeMillis="1800000"
>> >> > removedAbandonned="false"
>> >> > removeAbandonedTimeout="300"
>> >> > logAbandoned="true">
>> >> >
>> >>
>> >>
---------------------------------------------------------------------
>> >> 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]
>>
>>
>
---------------------------------------------------------------------
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]