[ 
https://issues.apache.org/jira/browse/DIRMINA-632?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Barrie Treloar updated DIRMINA-632:
-----------------------------------

    Attachment: mina-2.0-handle-write-exceptions.txt

Workaround is to use WriteFutureExceptionNotifier which is attached to the 
session prior to writing, and binding the WriteFuture into the notifier after 
the write() and before the awaitUninterruptibly().

There should be a more elegant solution than this.

I think it should be in core perhaps in AbstractPollingIoProcessor.flushNow() 
as per mina-2.0-handle-write-exceptions.txt


> WriteFuture.awaitUninterruptibly() or .join() hangs if write() throws 
> Exceptions
> --------------------------------------------------------------------------------
>
>                 Key: DIRMINA-632
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-632
>             Project: MINA
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.0.10, 1.1.7, 2.0.0-M3
>            Reporter: Barrie Treloar
>         Attachments: mina-2.0-handle-write-exceptions.txt, 
> mina-2.0-memory_monitor-withExceptionNotifier.txt, mina-2.0-memory_monitor.txt
>
>
> This is best shown with UDP since TCP will cause a close session to occur.
> If channel.write() throws an exception, e.g. the host becomes unreachable 
> because of network connection is removed, then 
> WriteFuture.awaitUninterruptibly() will hang - as it will never have 
> setWritten(false) or setException() called.
> I have modified the MemoryMonitor example to show this happening.
> You must manually pull your network cable (or disable your Network Adapter) 
> while the client is running to see this happen.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to