1 Reply Latest reply on Dec 12, 2012 7:44 AM by jesper.pedersen

    Jackrabbit shows 'Destroying connection that could not successfully matched' warnings and runs out of connections

    mabako

      Hey,

       

      I've recently written a small application which's storing things in the Content Repository provided by JackRabbit. Since I ran into the bug described in JCR-3425, I'm using a recent 2.6-SNAPSHOT release built directly from source, deployed as *.rar. The whole thing runs on JBoss AS 7.1.1.

       

      My code is the following, with exception handling stripped:

       

       

      Repository repo = (Repository) new InitialContext().lookup("java:/project/jcr");
      Session session = repo.login(new SimpleCredentials(user, "*".toCharArray()));
      
      Node dir = session.getRootNode();
      doSomethingWithTheInputStream(dir.getNode(...).getNode(Property.JCR_CONTENT).getProperty(Property.JCR_DATA).getBinary().getStream());
      
      session.logout();
      

       

      Upon calling session.logout, the following message appears in my log file whatsoever:

       

      09:10:00,701 WARN  [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool] (http--127.0.0.1-8000-14) IJ000612: Destroying connection that could not be successfully matched: org.jboss.jca.core.connectionmanager.listener.TxConnectionListener@6710ee[state=NORMAL managed connection=org.apache.jackrabbit.jca.JCAManagedConnection@13ccdd8 connection handles=0 lastUse=1355299797231 trackByTx=false pool=org.jboss.jca.core.connectionmanager.pool.strategy.OnePool@1b24dbd pool internal context=SemaphoreArrayListManagedConnectionPool@6afb99[pool=jackrabbit-jca-pool] xaResource=XAResourceWrapperImpl@ee436b[xaResource=session-anonym-148 pad=false overrideRmValue=false productName=Jackrabbit productVersion=2.6-SNAPSHOT jndiName=java:/themis/jcr] txSync=null
      

       

      And eventually, the following (may or may not have to do with how many connections I open) problem occurs.

       

      09:11:37,141 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/project].[Faces Servlet]] (http--127.0.0.1-8000-14) Servlet.service() for servlet Faces Servlet threw exception: javax.resource.ResourceException: IJ000655: No managed connections available within configured blocking timeout (30000 [ms])
                at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.getConnection(SemaphoreArrayListManagedConnectionPool.java:377)
                at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getSimpleConnection(AbstractPool.java:397)
                at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getConnection(AbstractPool.java:365)
                at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:329)
                at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.getManagedConnection(TxConnectionManagerImpl.java:368)
                at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:464)
                at org.apache.jackrabbit.jca.JCARepositoryHandle.login(JCARepositoryHandle.java:75)
                at org.apache.jackrabbit.commons.AbstractRepository.login(AbstractRepository.java:123)
      

       

      Is there any way to avoid aforementioned warnings/exception?

       

      The Jackrabbit resource adapter is configured as follows:

       

       

               <subsystem xmlns="urn:jboss:domain:jca:1.1">
                  <archive-validation enabled="false" fail-on-error="true" fail-on-warn="false"/>
                  <bean-validation enabled="true"/>
                  <default-workmanager>
                      <short-running-threads>
                          <core-threads count="50"/>
                          <queue-length count="50"/>
                          <max-threads count="50"/>
                          <keepalive-time time="10" unit="seconds"/>
                      </short-running-threads>
                      <long-running-threads>
                          <core-threads count="50"/>
                          <queue-length count="50"/>
                          <max-threads count="50"/>
                          <keepalive-time time="10" unit="seconds"/>
                      </long-running-threads>
                  </default-workmanager>
                  <cached-connection-manager debug="false" error="false"/>
              </subsystem>
      
                <subsystem xmlns="urn:jboss:domain:resource-adapters:1.0">
                  <resource-adapters>
                      <resource-adapter>
                          <archive>
                              jackrabbit-jca-2.6-SNAPSHOT.rar
                          </archive>
                          <transaction-support>XATransaction</transaction-support>
                          <connection-definitions>
                              <connection-definition class-name="org.apache.jackrabbit.jca.JCAManagedConnectionFactory" jndi-name="java:/project/jcr" enabled="true" use-java-context="true" pool-name="jackrabbit-jca-pool" use-ccm="true">
                                  <config-property name="ConfigFile">
                                      ${jboss.server.config.dir}${/}jackrabbit.xml
                                  </config-property>
                                  <config-property name="BindSessionToTransaction">
                                      false
                                  </config-property>
                                  <config-property name="HomeDir">
                                      ${jboss.server.data.dir}${/}jackrabbit${/}
                                  </config-property>
                              </connection-definition>
                          </connection-definitions>
                      </resource-adapter>
                  </resource-adapters>
              </subsystem>