Поток застрял во время вызова ImapIdleChannelAdapter.doStop - PullRequest
0 голосов
/ 24 марта 2020

Я использую весеннюю интеграцию imap-idle-channel-adapter для получения электронной почты, однако кажется, что поток застрял во время получения электронной почты, когда мы пытались остановить адаптер, мы обнаружили, что существует проблема с застрявшей нитью.

Не могли бы вы посоветовать, как решить проблему? мы установили тайм-аут, кажется, он не работает.

это так странно, почему тайм-аут также не работает

<util:properties id="exchangeJavaMailProperties">
    <prop key="mail.imaps.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
    <prop key="mail.imap.starttls.enable">false</prop>
    <prop key="mail.imaps.socketFactory.fallback">false</prop>
    <prop key="mail.store.protocol">imaps</prop>
    <prop key="mail.imaps.auth.plain.disable">true</prop>
    <prop key="mail.debug">true</prop>
    <prop key="mail.imaps.timeout">300000</prop>
    <prop key="mail.imap.timeout">300000</prop> 
    <prop key="mail.imap.connectiontimeout">300000</prop>
    <prop key="mail.imaps.connectiontimeout">300000</prop>
</util:properties>


"task-scheduler-7" #942 prio=5 os_prio=0 tid=0x00000000029a9000 nid=0x51a runnable [0x00007f8a97835000]

               java.lang.Thread.State: RUNNABLE

                at java.net.SocketInputStream.socketRead0(Native Method)

                at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)

                at java.net.SocketInputStream.read(SocketInputStream.java:171)

                at java.net.SocketInputStream.read(SocketInputStream.java:141)

                at com.sun.mail.util.TraceInputStream.read(TraceInputStream.java:124)

                at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)

                at java.io.BufferedInputStream.read(BufferedInputStream.java:265)

                - locked <0x0000000086280c00> (a java.io.BufferedInputStream)

                at com.sun.mail.iap.ResponseInputStream.readResponse(ResponseInputStream.java:103)

                at com.sun.mail.iap.Response.<init>(Response.java:114)

                at com.sun.mail.imap.protocol.IMAPResponse.<init>(IMAPResponse.java:60)

                at com.sun.mail.imap.protocol.IMAPProtocol.readResponse(IMAPProtocol.java:390)

                at com.sun.mail.iap.Protocol.command(Protocol.java:354)

                - locked <0x0000000086280c38> (a com.sun.mail.imap.protocol.IMAPProtocol)

                at com.sun.mail.imap.protocol.IMAPProtocol.fetch(IMAPProtocol.java:2113)

                at com.sun.mail.imap.protocol.IMAPProtocol.fetch(IMAPProtocol.java:2105)

                at com.sun.mail.imap.protocol.IMAPProtocol.fetchSectionBody(IMAPProtocol.java:1818)

                at com.sun.mail.imap.protocol.IMAPProtocol.fetchBody(IMAPProtocol.java:1801)

                at com.sun.mail.imap.protocol.IMAPProtocol.peekBody(IMAPProtocol.java:1774)

                at com.sun.mail.imap.IMAPInputStream.fill(IMAPInputStream.java:154)

                - locked <0x0000000086280cb8> (a java.lang.Object)

                at com.sun.mail.imap.IMAPInputStream.read(IMAPInputStream.java:218)

                - locked <0x0000000086280cc8> (a com.sun.mail.imap.IMAPInputStream)

                at com.sun.mail.imap.IMAPInputStream.read(IMAPInputStream.java:244)

                at com.sun.mail.imap.IMAPMessage.writeTo(IMAPMessage.java:849)

                at javax.mail.internet.MimeMessage.<init>(MimeMessage.java:245)

                at org.springframework.integration.mail.AbstractMailReceiver$IntegrationMimeMessage.<init>(AbstractMailReceiver.java:557)

                at org.springframework.integration.mail.AbstractMailReceiver$IntegrationMimeMessage.<init>(AbstractMailReceiver.java:552)

                at org.springframework.integration.mail.AbstractMailReceiver.postProcessFilteredMessages(AbstractMailReceiver.java:415)

                at org.springframework.integration.mail.AbstractMailReceiver.receive(AbstractMailReceiver.java:342)

                - locked <0x0000000086284e98> (a java.lang.Object)

                at org.springframework.integration.mail.ImapIdleChannelAdapter$IdleTask.run(ImapIdleChannelAdapter.java:273)

                at org.springframework.integration.mail.ImapIdleChannelAdapter$ReceivingTask.run(ImapIdleChannelAdapter.java:241)

                at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)

                at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:81)

                at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)

                at java.util.concurrent.FutureTask.run(FutureTask.java:266)

                at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)

                at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)

                at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

                at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

                at java.lang.Thread.run(Thread.java:748)
"[STUCK] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'" #31 daemon prio=1 os_prio=0 tid=0x00007f8ac021a000 nid=0x183 waiting for monitor entry [0x00007f8aea5d2000]

               java.lang.Thread.State: BLOCKED (on object monitor)

                at org.springframework.integration.mail.AbstractMailReceiver.destroy(AbstractMailReceiver.java:519)

                - waiting to lock <0x0000000086284e98> (a java.lang.Object)

                at org.springframework.integration.mail.ImapIdleChannelAdapter.doStop(ImapIdleChannelAdapter.java:170)

1 Ответ

0 голосов
/ 24 марта 2020

Я думаю, что решение этой проблемы здесь: https://github.com/spring-projects/spring-integration/commit/6d0757a08a75828eea408e68a9284cebb6e602fd.

Итак, вам нужно подумать об обновлении вашего проекта до последней Spring Integration: https://spring.io/projects/spring-integration#learn

Даже если исправление было не совсем для упомянутой мертвой блокировки, похоже, что отмена эхо-запроса должна помочь предотвратить ожидание завершения задачи sh.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...