L.S.,
After some time of well-behaved operations, the FTP poller stalls...
Below, you find a set of thread dumps. If I interpret this data
correctly, the poller threads are waiting on a network operation to
complete, causing the connection pool to become empty --threads waiting
on GenericObjectPool.borrowObject()--. How do I avoid this? Is there a
way to set a time-out somewhere? Or is this a bug and should I raise an
issue for this --and attach a patch afterwards ;) -- ?
Regards,
Gert
1 thread performing timed wait (which is good)
-----------------------------------------------
Name: pool-component.servicemix-ftp-thread-1
State: TIMED_WAITING on
[EMAIL PROTECTED]
Total blocked: 0 Total waited: 429.516
Stack trace:
java.lang.Object.wait(Native Method)
java.lang.Object.wait(Object.java:432)
edu.emory.mathcs.backport.java.util.concurrent.TimeUnit.timedWait(
TimeUnit.java:301)
edu.emory.mathcs.backport.java.util.concurrent.locks.CondVar.await(
CondVar.java:103)
edu.emory.mathcs.backport.java.util.concurrent.ArrayBlockingQueue.poll(
ArrayBlockingQueue.java:345)
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.accept(
DeliveryChannelImpl.java:252)
org.apache.servicemix.common.AsyncBaseLifeCycle.pollDeliveryChannel(
AsyncBaseLifeCycle.java:266)
org.apache.servicemix.common.AsyncBaseLifeCycle$1.run(
AsyncBaseLifeCycle.java:252)
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask
(ThreadPoolExecutor.java:665)
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run
(ThreadPoolExecutor.java:690)
java.lang.Thread.run(Thread.java:595)
8 threads that are waiting on some kind of network operation
-------------------------------------------------------------
Name: pool-component.servicemix-ftp-thread-9
State: RUNNABLE
Total blocked: 742.403 Total waited: 35.249
Stack trace:
java.net.PlainSocketImpl.socketAccept(Native Method)
java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
java.net.ServerSocket.implAccept(ServerSocket.java:450)
java.net.ServerSocket.accept(ServerSocket.java:421)
org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java
:502)
org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java
:2390)
org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java
:2364)
org.apache.commons.net.ftp.FTPClient.listFiles(FTPClient.java:2141)
org.apache.servicemix.ftp.FtpPollerEndpoint.pollFileOrDirectory(
FtpPollerEndpoint.java:211)
org.apache.servicemix.ftp.FtpPollerEndpoint.pollFileOrDirectory(
FtpPollerEndpoint.java:203)
org.apache.servicemix.ftp.FtpPollerEndpoint.poll(FtpPollerEndpoint.java
:78)
org.apache.servicemix.common.endpoints.PollingEndpoint$PollSchedulerTask$1.run
(PollingEndpoint.java:155)
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask
(ThreadPoolExecutor.java:665)
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run
(ThreadPoolExecutor.java:690)
java.lang.Thread.run(Thread.java:595)
23 threads that are waiting to get a connection from the pool
-------------------------------------------------------------
Name: pool-component.servicemix-ftp-thread-32
State: WAITING on [EMAIL PROTECTED]
Total blocked: 301 Total waited: 17
Stack trace:
java.lang.Object.wait(Native Method)
java.lang.Object.wait(Object.java:474)
org.apache.commons.pool.impl.GenericObjectPool.borrowObject(
GenericObjectPool.java:748)
org.apache.servicemix.ftp.SocketClientPoolSupport.borrowClient(
SocketClientPoolSupport.java:61)
org.apache.servicemix.ftp.FtpPollerEndpoint.borrowClient(
FtpPollerEndpoint.java:323)
org.apache.servicemix.ftp.FtpPollerEndpoint.pollFileOrDirectory(
FtpPollerEndpoint.java:200)
org.apache.servicemix.ftp.FtpPollerEndpoint.poll(FtpPollerEndpoint.java
:78)
org.apache.servicemix.common.endpoints.PollingEndpoint$PollSchedulerTask$1.run
(PollingEndpoint.java:155)
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask
(ThreadPoolExecutor.java:665)
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run
(ThreadPoolExecutor.java:690)
java.lang.Thread.run(Thread.java:595)