[ https://issues.apache.org/jira/browse/NETBEANS-1834?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Rangi Keen reassigned NETBEANS-1834: ------------------------------------ Assignee: Rangi Keen > Possible race condition in ExplorerActionsImpl > ---------------------------------------------- > > Key: NETBEANS-1834 > URL: https://issues.apache.org/jira/browse/NETBEANS-1834 > Project: NetBeans > Issue Type: Bug > Components: platform - Explorer > Affects Versions: 8.2 > Reporter: Rangi Keen > Assignee: Rangi Keen > Priority: Minor > Attachments: ExplorerActionsImpl.Race.patch > > > {{ExplorerActionsImpl}} uses a background thread to determine the enabled > state of its actions. The background thread calls > {{ExplorerActionsImpl.BaseAction.toEnabled(boolean)}} to set the target state > from the background thread and then queues up a call on the {{EventQueue}} to > be run on the EDT that calls {{ExplorerActionsImpl.BaseAction.syncEnable()}} > which calls {{setEnabled}} if {{toEnable}} is non-null. > However, since the check for {{toEnable != null}}, the use of {{toEnable}} in > the call to {{setEnabled}}, and the set of {{toEnable = null}} are all on > separate lines there is the possibility that another call to > {{toEnabled(boolean)}} will set {{toEnable}} after the call to {{setEnabled}} > but before it is reset to null. The end result is that if the new value of > {{toEnable}} was different from the one being acted upon, the action may end > up in the wrong state. > One solution (in [^ExplorerActionsImpl.Race.patch]) is to use an > {{AtomicInteger}} to get the value of {{toEnable}} and set it to null (or > {{NO_CHANGE}}) atomically, thus avoiding the race condition. > I don't have a reproducible case in the NetBeans IDE, but we encountered this > in our custom application using the NetBeans platform. The attached patch > solved the issue in our case. -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org For additional commands, e-mail: commits-h...@netbeans.apache.org For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists