[jboss-jira] [JBoss JIRA] Updated: (JGRP-507) CloserThread's attempt to interrupt TimeScheduler on closure could be end up being ignored
Galder Zamarreno (JIRA)
jira-events at lists.jboss.org
Fri May 11 08:08:52 EDT 2007
[ http://jira.jboss.com/jira/browse/JGRP-507?page=all ]
Galder Zamarreno updated JGRP-507:
----------------------------------
http://jira.jboss.com/jira/browse/JGRP-486 fixed it.
> CloserThread's attempt to interrupt TimeScheduler on closure could be end up being ignored
> ------------------------------------------------------------------------------------------
>
> Key: JGRP-507
> URL: http://jira.jboss.com/jira/browse/JGRP-507
> Project: JGroups
> Issue Type: Bug
> Affects Versions: 2.3, 2.3 SP1
> Reporter: Galder Zamarreno
> Assigned To: Bela Ban
>
> A race condition in JGroups could cause a channel that should be closed (for example, after being shunned)
> to never be closed.
> In order to stop TimeScheduler thread, CloserThread set's TimeScheduler's thread status
> as interrupted. If the interruption occurs while TimeScheduler is waiting, then no problems.
> But, in TimeScheduler._run(), actual running of a task via task.run(); happens outside
> synchronized(queue) block which means that CloserThread could set the TimeSchedule thread's
> status as interrupted while the task is running, for example, sending an FD are-you-alive message.
> If down the protocol that's carrying out the task, all down threads are set to false, and TimeScheduler
> thread is interrupted while the task is running, the interruption could be caught while sending a message to network:
> TP (UDP and TCP/TCP_NIO's parent):
> TP.down(Event evt)
> ....
> try {
> if(use_outgoing_packet_handler)
> outgoing_queue.put(msg);
> else
> send(msg, dest, multicast);
> }
> catch(QueueClosedException closed_ex) {
> }
> catch(InterruptedException interruptedEx) {
> }
> catch(Throwable e) {
> if(log.isErrorEnabled()) log.error("failed sending message", e);
> }
> Catching InterruptedException and doing nothing will clear the Thread's interrupted status. If
> the interruption from CloserThread is caught here, TimeScheduler thread will never finished,
> leaving the channel blocked and never rejoining the cluster.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list