From: SourceForge.net <no...@so...> - 2012-05-15 13:11:31
|
Bugs item #3526923, was opened at 2012-05-15 06:11 Message generated for change (Tracker Item Submitted) made by jarekczek You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100588&aid=3526923&group_id=588 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Jarek Czekalski (jarekczek) Assigned to: Nobody/Anonymous (nobody) Summary: EditBus.send needs additional synchronization Initial Comment: Today when EditBus.send is interrupted with Thread.interrupt() it returns to the sender before completing message processing by handlers. That's a bug. A known bug as commented by Kazutoshi in NOTE for this method. A log comment from Kazutoshi: The problem was found during investigation of SF.net plugin bug #2941375. However this bug may be easy to fix, only additional synchronization is needed. Main thread should not invokeAndWait(sender), but should wrap the sender in a few lines block, that would signal its ending with one of java synchronization means. This bug affects Console plugin as usual :) which sends messages indirectly through ErrorList. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100588&aid=3526923&group_id=588 |
From: SourceForge.net <no...@so...> - 2012-05-15 13:21:15
|
Bugs item #3526923, was opened at 2012-05-15 06:11 Message generated for change (Comment added) made by jarekczek You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100588&aid=3526923&group_id=588 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Jarek Czekalski (jarekczek) Assigned to: Nobody/Anonymous (nobody) Summary: EditBus.send needs additional synchronization Initial Comment: Today when EditBus.send is interrupted with Thread.interrupt() it returns to the sender before completing message processing by handlers. That's a bug. A known bug as commented by Kazutoshi in NOTE for this method. A log comment from Kazutoshi: The problem was found during investigation of SF.net plugin bug #2941375. However this bug may be easy to fix, only additional synchronization is needed. Main thread should not invokeAndWait(sender), but should wrap the sender in a few lines block, that would signal its ending with one of java synchronization means. This bug affects Console plugin as usual :) which sends messages indirectly through ErrorList. ---------------------------------------------------------------------- >Comment By: Jarek Czekalski (jarekczek) Date: 2012-05-15 06:21 Message: The best general solution would be to have a method in ThreadUtilities, something like runAndBlockSilently() described here: http://blog.palantir.com/2008/02/21/invokeandnotwaiting/ ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100588&aid=3526923&group_id=588 |
From: SourceForge.net <no...@so...> - 2012-05-15 17:33:51
|
Bugs item #3526923, was opened at 2012-05-15 06:11 Message generated for change (Comment added) made by jarekczek You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100588&aid=3526923&group_id=588 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Jarek Czekalski (jarekczek) Assigned to: Nobody/Anonymous (nobody) Summary: EditBus.send needs additional synchronization Initial Comment: Today when EditBus.send is interrupted with Thread.interrupt() it returns to the sender before completing message processing by handlers. That's a bug. A known bug as commented by Kazutoshi in NOTE for this method. A log comment from Kazutoshi: The problem was found during investigation of SF.net plugin bug #2941375. However this bug may be easy to fix, only additional synchronization is needed. Main thread should not invokeAndWait(sender), but should wrap the sender in a few lines block, that would signal its ending with one of java synchronization means. This bug affects Console plugin as usual :) which sends messages indirectly through ErrorList. ---------------------------------------------------------------------- >Comment By: Jarek Czekalski (jarekczek) Date: 2012-05-15 10:33 Message: Before the solution, here is a macro that exploits the bug. It could be easily adapted for other interruption related issues. The macro starts 2 threads: th1 - sends the message on editbus th2 - interrupts th1 After removal of line "th1.interrupt();" a desired behaviour is observable. That is handling of the message should finish before th1 returns from EditBus.send: 7:31:46 PM [AWT-EventQueue-0] [error] AWT-EventQueue-0: macro done 7:31:46 PM [Thread-42] [error] Thread-42: th1 will send 7:31:46 PM [AWT-EventQueue-0] [error] AWT-EventQueue-0: handling starts 7:31:46 PM [AWT-EventQueue-0] [error] AWT-EventQueue-0: handling ends 7:31:46 PM [Thread-42] [error] Thread-42: th1 after send Another unwanted side effect is that InterruptedException is displayed, what should be avoided. ---------------------------------------------------------------------- Comment By: Jarek Czekalski (jarekczek) Date: 2012-05-15 06:21 Message: The best general solution would be to have a method in ThreadUtilities, something like runAndBlockSilently() described here: http://blog.palantir.com/2008/02/21/invokeandnotwaiting/ ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100588&aid=3526923&group_id=588 |
From: SourceForge.net <no...@so...> - 2012-05-27 14:38:53
|
Bugs item #3526923, was opened at 2012-05-15 06:11 Message generated for change (Comment added) made by jarekczek You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100588&aid=3526923&group_id=588 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None >Status: Closed >Resolution: Fixed Priority: 5 Private: No Submitted By: Jarek Czekalski (jarekczek) >Assigned to: Jarek Czekalski (jarekczek) Summary: EditBus.send needs additional synchronization Initial Comment: Today when EditBus.send is interrupted with Thread.interrupt() it returns to the sender before completing message processing by handlers. That's a bug. A known bug as commented by Kazutoshi in NOTE for this method. A log comment from Kazutoshi: The problem was found during investigation of SF.net plugin bug #2941375. However this bug may be easy to fix, only additional synchronization is needed. Main thread should not invokeAndWait(sender), but should wrap the sender in a few lines block, that would signal its ending with one of java synchronization means. This bug affects Console plugin as usual :) which sends messages indirectly through ErrorList. ---------------------------------------------------------------------- >Comment By: Jarek Czekalski (jarekczek) Date: 2012-05-27 07:38 Message: Fixed in r21724, with ThreadUtilities.runInDispatchThreadNow introduced in r21722. ---------------------------------------------------------------------- Comment By: Jarek Czekalski (jarekczek) Date: 2012-05-15 10:33 Message: Before the solution, here is a macro that exploits the bug. It could be easily adapted for other interruption related issues. The macro starts 2 threads: th1 - sends the message on editbus th2 - interrupts th1 After removal of line "th1.interrupt();" a desired behaviour is observable. That is handling of the message should finish before th1 returns from EditBus.send: 7:31:46 PM [AWT-EventQueue-0] [error] AWT-EventQueue-0: macro done 7:31:46 PM [Thread-42] [error] Thread-42: th1 will send 7:31:46 PM [AWT-EventQueue-0] [error] AWT-EventQueue-0: handling starts 7:31:46 PM [AWT-EventQueue-0] [error] AWT-EventQueue-0: handling ends 7:31:46 PM [Thread-42] [error] Thread-42: th1 after send Another unwanted side effect is that InterruptedException is displayed, what should be avoided. ---------------------------------------------------------------------- Comment By: Jarek Czekalski (jarekczek) Date: 2012-05-15 06:21 Message: The best general solution would be to have a method in ThreadUtilities, something like runAndBlockSilently() described here: http://blog.palantir.com/2008/02/21/invokeandnotwaiting/ ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100588&aid=3526923&group_id=588 |