Hi Sergey, the order of modifiers is wrong. It should be "protected transient volatile". See http://cr.openjdk.java.net/~alundblad/styleguide/index-v6.html#toc-modifiers for details.
Best regards, Andrej Golovnin On Fri, Oct 27, 2017 at 1:18 AM, Sergey Bylokhov <sergey.bylok...@oracle.com> wrote: > Hello, > Please review the fix for jdk10. > > The EventListenerList class was implemented to be thread safe. To achieve > the correct state of the object: > - two mutators(add/remove) were marked as synchronized. > - the internal array is updated via copy-on-write, the internal array is > never modified after it was set. > > It was assumed that the getXXX methods will get the value which was already > set by the mutator or the previous value if mutator is in-progress but was > not update the array. The problem is that the getXXX is not necessary read > the value which was set, because of lack of happens-before between > add/remove and getXXX. In the fix the array was marked as volatile to solve > the problem. > > The CSR will be created after the technical review (the field is protected > in public class) > > Bug: https://bugs.openjdk.java.net/browse/JDK-5031664 > Webrev can be found at: http://cr.openjdk.java.net/~serb/5031664/webrev.00 > > > -- > Best regards, Sergey.