|
From: Ashley W. <ash...@db...> - 2007-09-10 09:38:51
|
Hi,
I'm a quickfix newbie assigned to look at some outofmemoryerrors when we
leave a quick fix application running for a length of time. I left our app
running over the weekend and when I got back this morning I did a
ctrl-break in the console, getting several minutes worth of the following
trace:
"AnonymousIoService-749-756" daemon prio=6 tid=0x2875be88 nid=0x2d74 in
Object.wait() [0x35f0f000..0x35f0fd98]
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:474)
at
org.apache.mina.util.BlockingQueue.waitForNewItem(BlockingQueue.java:55)
- locked <0x0991a200> (a org.apache.mina.util.BlockingQueue)
at
org.apache.mina.filter.ThreadPoolFilter$Worker.fetchBuffer(ThreadPoolFilter.java:435)
- locked <0x0991a200> (a org.apache.mina.util.BlockingQueue)
at
org.apache.mina.filter.ThreadPoolFilter$Worker.run(ThreadPoolFilter.java:410)
Additionally the log files report over a thousand of the the following
snippet:
2007-08-04 22:09:56,662 INFO (QFJ Timer) [quickfixj.event] EVENT
[FIX.4.2:ABFODEV10_DEV10ABFO->SFEPRICE] <Initiated logon re
quest>
2007-08-04 22:09:56,662 INFO (QF/J Session dispatcher:
FIX.4.2:ABFODEV10_DEV10ABFO->SFEPRICE) [quickfixj.event] EVENT [FIX.4
.2:ABFODEV10_DEV10ABFO->SFEPRICE] <Received logout request>
2007-08-04 22:09:56,678 INFO (QF/J Session dispatcher:
FIX.4.2:ABFODEV10_DEV10ABFO->SFEPRICE) [quickfixj.event] EVENT [FIX.4
.2:ABFODEV10_DEV10ABFO->SFEPRICE] <Sent logout response>
2007-08-04 22:09:56,678 INFO (QF/J Session dispatcher:
FIX.4.2:ABFODEV10_DEV10ABFO->SFEPRICE) [quickfixj.event] EVENT [FIX.4
.2:ABFODEV10_DEV10ABFO->SFEPRICE] <Disconnecting>
2007-08-04 22:09:56,678 INFO (QF/J Session dispatcher:
FIX.4.2:ABFODEV10_DEV10ABFO->SFEPRICE) [com.db.exlink.fix.price.serve
r.FixPriceServer] LOGOUT [FIX.4.2:ABFODEV10_DEV10ABFO->SFEPRICE]
I did download the quickfix sourcecode, but was unable to find any
references to the ThreadPoolFilter class. Is it possible we aren't closing
or otherwise releasing some quickfix resource?
Just a little more information, here is some source code of how the
application is being created:
ThreadedSocketInitiator initiator = new
ThreadedSocketInitiator(
application, messageStoreFactory, settings,
logFactory, messageFactory);
initiator.start();
BufferedReader cmdLine = new BufferedReader(new
InputStreamReader(System.in));
while(true) {
String cmd = cmdLine.readLine();
if(cmd != null && cmd.equalsIgnoreCase("exit")) {
break;
}
}
Many thanks
- Ashley
---
This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and delete this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden.
Please refer to http://www.db.com/en/content/eu_disclosures.htm for additional EU corporate and regulatory disclosures. |