Subject jms and connections problem
Author jivkoto
Hi to all of you,
(it;s me again) I am working with Firebird 1.5.2, Jaybird 1.5.5 Jboss
3.2.6. I am wondering if there are any problems with jms storing in
firebird. I will be thankful if someone take a look and give a hand on
this:
I am sending many jms messages on two queues, let say A and B. after a
while my jboss freezes.
Result: many of the messages has reached there destination. But from a
moment all are stored in JMS_MESSAGES. There is record in JMS_MESSAGES
for one of the queue (B) with CTXID column set, so there is a record
in JMS_TRANSACTION as set in CTXID. In some cases (not in all) there
is a record in RDB$Transactions with RDBM$Transaction_STATE = 1 (which
should be COMMITED). But after i restart jboss there is exception
telling me that "record from transaction XXX is stuck in limbo" (XXX
is the transaction from the system table).

Here is my firebird-xs-ds.xml file
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<mbean code="org.firebirdsql.management.FBManager"
name="jboss.jca:service=FirebirdManager">
<attribute name="FileName">C:\Documents and
Settings\zhivko\WORKFLOWDB</attribute>
<attribute name="UserName">sysdba</attribute>
<attribute name="Password">masterkey</attribute>
<attribute name="CreateOnStart">true</attribute>
<attribute name="DropOnStop">false</attribute>
</mbean>

<xa-datasource>
<jndi-name>WORKFLOWDB</jndi-name>
<track-connection-by-tx>true</track-connection-by-tx>
<isSameRM-override-value>false</isSameRM-override-value>

<xa-datasource-class>org.firebirdsql.pool.FBConnectionPoolDataSource</xa-datasource-class>
<xa-datasource-property
name="Database">localhost/3050:WORKFLOWDB</xa-datasource-property>
<xa-datasource-property
name="UserName">SYSDBA</xa-datasource-property>
<xa-datasource-property
name="Password">masterkey</xa-datasource-property>
<!--user-name>SYSDBA</user-name>
<password>masterkey</password-->
<!--transaction isolation-->
<config-property
name="TransactionIsolationName">TRANSACTION_READ_COMMITTED</config-property>

<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
<!--pooling parameters-->
<min-pool-size>10</min-pool-size>
<max-pool-size>500</max-pool-size>

<blocking-timeout-millis>300000</blocking-timeout-millis>
<idle-timeout-minutes>15</idle-timeout-minutes>

<!-- Debugging -->
<track-statements>true</track-statements>
<!-- HA -->
<check-valid-connection-sql>SELECT * FROM tClient
</check-valid-connection-sql>
<new-connection-sql>SELECT * FROM tClient </new-connection-sql>
<!--
<valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.*</valid-connection-checker-class-name>
-->
</xa-datasource>
</datasources>

I tried with isolation level = TRANSACTION_READ_UNCOMMITTED but it was
the same

Another problem is the connection pooling. As you see i have
configured min-pool-size=10 and idle-timeout-minutes = 15. After i
start my application server (jboss) there are some exceptions that
the connection is not in correct state. But as you see i did set
new-connection-sql and check-valid-connection-sql attributes that are
responsible to create and check if connection are still valid (not
timeouted)

16:01:16,140 WARN [JBossManagedConnectionPool] Unable to fill pool
org.jboss.resource.JBossResourceException: Could not create
connection; - nested
throwable: (java.lang.IllegalStateException: Cannot execute desired
operation b
ecause pooled connection has invalid state.)
at
org.jboss.resource.adapter.jdbc.xa.XAManagedConnectionFactory.createM
anagedConnection(Unknown Source)
at
org.jboss.resource.connectionmanager.InternalManagedConnectionPool.cr
eateConnectionEventListener(Unknown Source)
at
org.jboss.resource.connectionmanager.InternalManagedConnectionPool.fi
llToMin(Unknown Source)
at org.jboss.resource.connectionmanager.PoolFiller.run(Unknown
Source)
at java.lang.Thread.run(Thread.java:534)
Caused by: java.lang.IllegalStateException: Cannot execute desired
operation bec
ause pooled connection has invalid state.
at
org.firebirdsql.pool.PingablePooledConnection.checkValidity(PingableP
ooledConnection.java:169)
at
org.firebirdsql.pool.PingablePooledConnection.internalClose(PingableP
ooledConnection.java:253)
at
org.firebirdsql.pool.PingablePooledConnection.deallocate(PingablePool
edConnection.java:270)
at
org.firebirdsql.pool.PooledConnectionQueue.destroyConnection(PooledCo
nnectionQueue.java:218)
at
org.firebirdsql.pool.AbstractConnectionPool.getPooledConnection(Abstr
actConnectionPool.java:232)
at
org.firebirdsql.pool.FBConnectionPoolDataSource.getPooledConnection(F
BConnectionPoolDataSource.java:352)
at
org.firebirdsql.pool.FBConnectionPoolDataSource.getPooledConnection(F
BConnectionPoolDataSource.java:371)
at
org.firebirdsql.pool.FBConnectionPoolDataSource.getXAConnection(FBCon
nectionPoolDataSource.java:402)
... 5 more

If anyone has any idea please help.