8176155: SubmissionPublisher closeExceptionally() may override close()
authordl
Tue, 07 Mar 2017 10:06:39 -0800
changeset 44099 bc1a91ee90f0
parent 44047 4d25a0bb7426
child 44104 9438f2fa5dd9
8176155: SubmissionPublisher closeExceptionally() may override close() Reviewed-by: martin, psandoz
jdk/src/java.base/share/classes/java/util/concurrent/SubmissionPublisher.java
--- a/jdk/src/java.base/share/classes/java/util/concurrent/SubmissionPublisher.java	Tue Mar 07 22:55:36 2017 +0800
+++ b/jdk/src/java.base/share/classes/java/util/concurrent/SubmissionPublisher.java	Tue Mar 07 10:06:39 2017 -0800
@@ -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;