mina-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Julien Vermillard (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (DIRMINA-830) Unconditional wait() in Read- and WriteWorker of SerialSessionImpl
Date Thu, 28 Apr 2011 07:38:03 GMT

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

Julien Vermillard resolved DIRMINA-830.
---------------------------------------

    Resolution: Fixed

> Unconditional wait() in Read- and WriteWorker of SerialSessionImpl
> ------------------------------------------------------------------
>
>                 Key: DIRMINA-830
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-830
>             Project: MINA
>          Issue Type: Bug
>          Components: Transport
>    Affects Versions: 2.0.0, 2.0.1, 2.0.2
>         Environment: win32 x86
>            Reporter: Christian Schwarz
>            Assignee: Julien Vermillard
>              Labels: rs232, rxtx, serial
>             Fix For: 2.0.4
>
>         Attachments: patch.diff
>
>
> The inner worker classes of SerialSessionImpl violates the guarded block contract for
Object#wait(). Under certain conditions it is possible that a session write starved. 
> The wait loops of Read- and WriteWorker should be inside the synchronized block! We have
some starvations while writing data to or serial session. We found out that in this case the
WriteWorker-Thread waits endless for data to write. Because we write data asynchron to the
serial session, we assume that a race condition occures. One thread is inside the unguarded
WriterWorker#flushWrites() while an other invoke SerialProcessor#flush(). 
> http://download.oracle.com/javase/tutorial/essential/concurrency/guardmeth.html
> states-> Always invoke wait inside a loop that tests for the condition being waited
for. Don't assume that the interrupt was for the particular condition you were waiting for,
or that the condition is still true.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message