What are you using to handle the transactions when you invoke the
Jackrabbit JCA connector? The reason I'm asking is that the flag
"bindSessionToTransaction=true" might maybe be an indication that you have
transactions that for some reason never are committed.

/Pontus

On Tue, Jan 2, 2018 at 8:18 PM, Manuel López Blasi <
[email protected]> wrote:

> Monitoring Glassfish shows all connections are taken up ( and not freed ):
>
> NumConnUsed     32count         Jan 2, 2018 10:48:22 AM         Jan 2,
> 2018 3:58:20 PM Marca de Agua Máxima: 32 count
> Marca de Agua Mínima: 0 count
>         Provides connection usage statistics. The total number of
> connections that are currently being used, as well as information about the
> maximum number of connections that were used (the high water mark).
>
>
>
> All 32 connections are taken  already.
>
>
>
>
>
> On 02/01/18 15:00, Manuel López Blasi wrote:
>
>> Hello, thanks for your response Pontus,
>> i have set a maximun of concurrent connections, 32.
>>
>> I understand that i set a maximum number o sessions/connections/transactions,
>> in my case on glassfish.
>> These is handled by the jca connector y conjunction with the glassfish
>> server/container.
>>
>> Once this maximun is reached, should i ask for another new connection,
>> the connector/connection pool would wait
>> until one of the bussy connections is freed. There is a wait timeout  for
>> this, once the time is elapsed the connection pool
>>  would return an error message, saying that no connection is available.
>> It's perfectly logical.
>>
>> In my case this is happening, i get an exception "Connections in use are
>> equal to max-pool-size value and max-wait-time has elapsed":
>>
>> Caused by: com.sun.appserv.connectors.internal.api.PoolingException: Las
>> conexiones en uso equivalen al valor de max-pool-size y el tiempo caducado
>> de max-wait-time. No se pueden asignar m?s conexiones.
>>     at com.sun.enterprise.resource.pool.ConnectionPool.getResource(
>> ConnectionPool.java:418)
>>     at com.sun.enterprise.resource.pool.PoolManagerImpl.getResource
>> FromPool(PoolManagerImpl.java:245)
>>     at com.sun.enterprise.resource.pool.PoolManagerImpl.getResource
>> (PoolManagerImpl.java:170)
>>     at com.sun.enterprise.connectors.ConnectionManagerImpl.getResou
>> rce(ConnectionManagerImpl.java:332)
>>     at com.sun.enterprise.connectors.ConnectionManagerImpl.internal
>> GetConnection(ConnectionManagerImpl.java:301)
>>     at com.|#]
>>
>> [#|2018-01-02T14:23:20.456-0300|SEVERE|glassfish3.1.2|javax.
>> enterprise.system.std.com.sun.enterprise.server.logging|_
>> ThreadID=409;_ThreadName=Thread-2;|sun.enterprise.
>> connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:190)
>>
>>     at com.sun.enterprise.connectors.ConnectionManagerImpl.allocate
>> Connection(ConnectionManagerImpl.java:165)
>>     at com.sun.enterprise.connectors.ConnectionManagerImpl.allocate
>> Connection(ConnectionManagerImpl.java:160)
>>     at org.apache.jackrabbit.jca.JCARepositoryHandle.login(JCARepos
>> itoryHandle.java:75)
>>
>>
>> The thing is, once i reach this state it remains the same, i can wait 10
>> minutes or 5 hours, when it dies, it stays that way no matter how long i
>> leave it "to recover connections".
>> The only solution is to shut down server and start it again, that way
>> everything works great again.
>>
>> One other thing that seems strange is the fact that i can work generating
>> files in number of thousands in very short time, let's say 2000 files in 3
>> minutes. That may indicate
>> that the time settings for the connection pool are okay, i mean, i have 1
>> minute of max wait time before saying there're no more free connections,
>> almost a thousand files can be fully
>> processed and saved within 1 minute.
>>
>> That's what leaves me perplexed. The other thing is that mysql connection
>> pools have the very same / carbon copy settings and they work ok, never run
>> off connections or died this way.
>>
>> I know files are way different, requires more work than db registers, I/O
>> is the most time consuming and slow op of them all. Maybe within a certain
>> amount of time the file caching gets
>> bottlenecked and that's what causes the collapse?
>>
>>
>>
>> On 29/12/17 11:17, Pontus Amberg wrote:
>>
>>> Have you verified that it isn't the number of concurrent
>>> sessions/transactions that is causing the problem? If that is the problem
>>> you would probably only encounter it when you have approximately 33 or
>>> more
>>> file operations executing at the same time.
>>>
>>> /Pontus
>>>
>>> On Tue, Dec 26, 2017 at 11:28 PM, Manuel López Blasi <
>>> [email protected]> wrote:
>>>
>>> Hello,
>>>>
>>>> i've been adding almost successfully Jackrabbit Repository to our
>>>> project,
>>>> basically for file storing purposes. Everything works great, with some
>>>> exceptions,
>>>> one which is critical, once in a while, following no apparent pattern an
>>>> exception is thrown
>>>> saying the pool is out of connections, this one:
>>>>
>>>> Caused by: com.sun.appserv.connectors.internal.api.PoolingException:
>>>> Las conexiones en uso equivalen al valor de max-pool-size y el tiempo
>>>> caducado de max-wait-time. No se pueden asignar m?s conexiones.
>>>> (Quantity of connections in use are same as defined max-pool-size and
>>>> max-wait-time already elapsed. Can't assign any more connections.)
>>>>      at com.sun.enterprise.resource.pool.ConnectionPool.getResource(
>>>> ConnectionPool.java:418)
>>>>      at com.sun.enterprise.resource.pool.PoolManagerImpl.getResource
>>>> FromPool(PoolManagerImpl.java:245)
>>>>      at com.sun.enterprise.resource.pool.PoolManagerImpl.getResource
>>>> (PoolManagerImpl.java:170)
>>>>      at com.sun.enterprise.connectors.ConnectionManagerImpl.getResou
>>>> rce(ConnectionManagerImpl.java:332)
>>>>      at com.sun.enterprise.connectors.ConnectionManagerImpl.internal
>>>> GetConnection(ConnectionManagerImpl.java:301)
>>>>      at com.sun.enterprise.connectors.ConnectionManagerImpl.allocate
>>>> Connection(ConnectionManagerImpl.java:190)
>>>>      at com.sun.enterprise.connectors.ConnectionManagerImpl.allocate
>>>> Connection(ConnectionManagerImpl.java:165)
>>>>      at com.sun.enterprise.connectors.ConnectionManagerImpl.allocate
>>>> Connection(ConnectionManagerImpl.java:160)
>>>>      at org.apache.jackrabbit.jca.JCARepositoryHandle.login(JCARepos
>>>> itoryHandle.java:75)
>>>>      ... 120 more
>>>>
>>>> Our setup/context is the following:
>>>>
>>>> VM: java 7 (1.7.0_101)
>>>> container: Glassfish 3.1.2.2
>>>> main framework for webapp: struts 2
>>>> DB (mysql) persistence manager: Hibernate 4.2.19.Final
>>>>
>>>> Jackrabbit stuff/versions:
>>>> jackrabbit-core 2.14.4
>>>> jcr 2.0
>>>> OCM: jackrabbit-ocm 2.0.0
>>>> Connector: jackrabbit-jca-2.14.4 (This one is deployed as a connector in
>>>> glassfish, associated with a connection pool )
>>>>
>>>> The configuration for JCA connector is the following:
>>>>
>>>> Connection definition: javax.jcr.Repository
>>>>
>>>> Initial and minimum pool size: 8 Connections
>>>> Maximum pool size: 32 Connections
>>>> Switch Pool size: 2 connections
>>>> Activity Timeout 300  seconds
>>>> Max Wait Timeout: 60000  miliseconds
>>>> Transaction Support: XATransaction
>>>>
>>>> Matching Connections: Yes.
>>>>
>>>> bindSessionToTransaction: True
>>>>
>>>> It seems to be caused randomnly, as we're able to produce and store a
>>>> couple thousand of files within minutes with no crashes
>>>> (every file is stored within a transaction and with a single Session to
>>>> the repository). Should the pool be out of connections,
>>>> it should happen immediately i think (???).
>>>>
>>>> So, if someone has any indication/clues it would be greatly appreciated,
>>>> thanks in advance, best regards,
>>>> Manuel.
>>>>
>>>>
>>>>
>>>>
>>
>>
>

Reply via email to