Merge
authorjwilhelm
Tue, 07 Mar 2017 19:23:21 +0100
changeset 44104 9438f2fa5dd9
parent 44103 f6f0d2231cc6 (current diff)
parent 44099 bc1a91ee90f0 (diff)
child 44105 6ff4cfe526be
Merge
--- a/jdk/src/java.base/share/classes/java/util/concurrent/SubmissionPublisher.java	Tue Mar 07 19:14:10 2017 +0100
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/SubmissionPublisher.java	Tue Mar 07 19:23:21 2017 +0100
@@ -588,6 +588,7 @@
         if (!closed) {
             BufferedSubscription<T> b;
             synchronized (this) {
+                // no need to re-check closed here
                 b = clients;
                 clients = null;
                 closed = true;
@@ -619,9 +620,11 @@
             BufferedSubscription<T> b;
             synchronized (this) {
                 b = clients;
-                clients = null;
-                closed = true;
-                closedException = error;
+                if (!closed) {  // don't clobber racing close
+                    clients = null;
+                    closedException = error;
+                    closed = true;
+                }
             }
             while (b != null) {
                 BufferedSubscription<T> next = b.next;