Details
Description
There is a bug in the proxool library. The default parameter defined in the documentation are not set. Therefore parameter like MaximumConnectionCount are not set. JdbcUtil from QuickFixJ sets this parameter. But the parameter SimultaneousBuildThrottle is not set and therfore 0. This leads to SQLExcption under high load. I changed JdbcUtil.getDataSource() with the line
ds.setSimultaneousBuildThrottle(10);
after the line
ds.setMaximumConnectionCount(10);
Now I do not get SQLException anymore.
Log-Snipplet:
00:59:52,795 [QFJ Message Processor] DEBUG fix.MessageConverter - Field(s) = SenderSubID SenderLocationID TargetSubID TargetLocationID OnBehalfOfCompID Delive
rToCompID SecureDataLen SecureData PossDupFlag PossResend OrigSendingTime XmlDataLen XmlData MessageEncoding LastMsgSeqNumProcessed OnBehalfOfSendingTime are
missing but not mandatory
00:59:52,795 [QFJ Message Processor] INFO fix.MessageConverter - <?xml version="1.0" encoding="ISO-8859-1"?>
<FIXML><FIXMLMessage><Header><BeginString>FIX.4.2</BeginString><MsgType>2</MsgType><Sender><CompID>WESTLB3</CompID></Sender><Target><CompID>REDIRPT3</CompID><
/Target><MsgSeqNum>4</MsgSeqNum><SendingTime>Tue Jun 17 00:59:52 MEST 2008</SendingTime></Header><AdministrativeMessage><Heartbeat/></AdministrativeMessage><A
dministrativeMessage><ResendRequest><BeginSeqNo>2</BeginSeqNo><EndSeqNo>0</EndSeqNo></ResendRequest></AdministrativeMessage></FIXMLMessage></FIXML>
00:59:52,795 [QFJ Message Processor] INFO msg.outgoing - FIX.4.2:WESTLB3->REDIRPT3: 8=FIX.4.2^A9=67^A35=2^A34=4^A49=WESTLB3^A52=20080616-22:59:52.794^A56=RED
IRPT3^A7=2^A16=0^A10=189^A
00:59:52,797 [Thread-6] INFO quickfixj.event - FIX.4.2:WESTLB3->REDIRPT3: Processing QUEUED message: 3
00:59:52,797 [Thread-6] INFO fix.ReaderApplication - fromAdmin: FIX.4.2:WESTLB3->REDIRPT3
00:59:52,797 [Thread-6] DEBUG fix.ReaderApplication - expected sender number = 4
00:59:52,797 [Thread-6] DEBUG fix.ReaderApplication - expected target number = 3
00:59:52,798 [Thread-6] DEBUG fix.MessageConverter - Field(s) = SenderSubID SenderLocationID TargetSubID TargetLocationID OnBehalfOfCompID DeliverToCompID Sec
ureDataLen SecureData PossDupFlag PossResend OrigSendingTime XmlDataLen XmlData MessageEncoding LastMsgSeqNumProcessed OnBehalfOfSendingTime are missing but n
ot mandatory
00:59:52,798 [Thread-6] INFO fix.MessageConverter - <?xml version="1.0" encoding="ISO-8859-1"?>
<FIXML><FIXMLMessage><Header><BeginString>FIX.4.2</BeginString><MsgType>0</MsgType><Sender><CompID>REDIRPT3</CompID></Sender><Target><CompID>WESTLB3</CompID><
/Target><MsgSeqNum>3</MsgSeqNum><SendingTime>Tue Jun 17 00:59:52 MEST 2008</SendingTime></Header><AdministrativeMessage><Heartbeat><TestReqID>TEST</TestReqID>
</Heartbeat></AdministrativeMessage></FIXMLMessage></FIXML>
00:59:52,802 [Thread-6] INFO quickfixj.event - FIX.4.2:WESTLB3->REDIRPT3: error processing message
java.io.IOException: We are already in the process of making 1 connections and the number of simultaneous builds has been throttled to 0
at quickfix.JdbcStore.storeSequenceNumbers(JdbcStore.java:291)
at quickfix.JdbcStore.setNextTargetMsgSeqNum(JdbcStore.java:274)
at quickfix.JdbcStore.incrNextTargetMsgSeqNum(JdbcStore.java:161)
at quickfix.SessionState.incrNextTargetMsgSeqNum(SessionState.java:347)
at quickfix.Session.nextHeartBeat(Session.java:1134)
at quickfix.Session.next(Session.java:698)
at quickfix.Session.next(Session.java:1515)
at quickfix.Session.nextQueued(Session.java:1505)
at quickfix.Session.nextQueued(Session.java:1489)
at quickfix.Session.nextHeartBeat(Session.java:1135)
at quickfix.Session.next(Session.java:698)
at quickfix.mina.SingleThreadedEventHandlingStrategy$SessionMessageEvent.processMessage(SingleThreadedEventHandlingStrategy.java:106)
at quickfix.mina.SingleThreadedEventHandlingStrategy.block(SingleThreadedEventHandlingStrategy.java:70)
at quickfix.SocketInitiator.block(SocketInitiator.java:60)
at com.westlb.fix.Reader.run(Reader.java:105)
Caused by: java.sql.SQLException: We are already in the process of making 1 connections and the number of simultaneous builds has been throttled to 0
at org.logicalcobwebs.proxool.Prototyper.checkSimultaneousBuildThrottle(Prototyper.java:260)
at org.logicalcobwebs.proxool.ConnectionPool.getConnection(ConnectionPool.java:170)
at org.logicalcobwebs.proxool.ProxoolDataSource.getConnection(ProxoolDataSource.java:97)
at quickfix.JdbcStore.storeSequenceNumbers(JdbcStore.java:281)
... 14 more
00:59:52,817 [QFJ Message Processor] DEBUG proxool.quickfixj-1 - 007351 (01/02/00) - Connection #4 created on demand = ACTIVE
00:59:52,819 [QFJ Message Processor] INFO quickfixj.event - FIX.4.2:WESTLB3->REDIRPT3: Sent ResendRequest FROM: 2 TO: 0
00:59:53,362 [SocketConnectorIoProcessor-0.0] DEBUG message.FIXMessageDecoder - detected header: pos=0,lim=81,rem=81,offset=0,state=1
00:59:53,362 [SocketConnectorIoProcessor-0.0] DEBUG message.FIXMessageDecoder - body length = 59: pos=0,lim=81,rem=81,offset=15,state=3
00:59:53,362 [SocketConnectorIoProcessor-0.0] DEBUG message.FIXMessageDecoder - message body found: pos=0,lim=81,rem=81,offset=74,state=4
00:59:53,363 [SocketConnectorIoProcessor-0.0] DEBUG message.FIXMessageDecoder - found checksum: pos=0,lim=81,rem=81,offset=74,state=4
00:59:53,363 [SocketConnectorIoProcessor-0.0] DEBUG message.FIXMessageDecoder - parsed message: pos=81,lim=81,rem=0,offset=81,state=4 8=FIX.4.2^A9=59^A35=4^A4
9=REDIRPT3^A56=WESTLB3^A34=4^A52=20080616-22:59:53^A36=4^A10=078^A
00:59:53,363 [SocketConnectorIoProcessor-0.0] INFO msg.incoming - FIX.4.2:WESTLB3->REDIRPT3: 8=FIX.4.2^A9=59^A35=4^A49=REDIRPT3^A56=WESTLB3^A34=4^A52=2008061
6-22:59:53^A36=4^A10=078^A
00:59:53,363 [Thread-6] INFO fix.ReaderApplication - fromAdmin: FIX.4.2:WESTLB3->REDIRPT3