Prevent a CME during actor instantiation 65/80665/3
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 4 Mar 2019 12:02:36 +0000 (13:02 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 4 Mar 2019 12:05:57 +0000 (13:05 +0100)
This issue was missed in review: createHandler() should not be
touching handlers, as it is already called from computeIfAbsent()
and hence would result in a CME with JDK11:
https://bugs.openjdk.java.net/browse/JDK-8206399

JIRA: CONTROLLER-1884
Change-Id: I8d4940b8bec2cf727d97d68796f1c9cdaaaf89d3
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
opendaylight/md-sal/sal-akka-segmented-journal/src/main/java/org/opendaylight/controller/akka/segjournal/SegmentedFileJournal.java

index a0bffa2..1dfcf4a 100644 (file)
@@ -10,7 +10,6 @@ package org.opendaylight.controller.akka.segjournal;
 import static akka.actor.ActorRef.noSender;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkState;
-import static com.google.common.base.Verify.verify;
 
 import akka.actor.ActorRef;
 import akka.dispatch.Futures;
@@ -125,9 +124,6 @@ public class SegmentedFileJournal extends AsyncWriteJournal {
         final ActorRef handler = context().actorOf(SegmentedJournalActor.props(persistenceId, directory, storage,
             maxEntrySize, maxSegmentSize));
         LOG.debug("Directory {} handled by {}", directory, handler);
-
-        final ActorRef prev = handlers.putIfAbsent(persistenceId, handler);
-        verify(prev == null, "Duplicate handler for %s, already handled by %s", persistenceId, prev);
         return handler;
     }
 

©2013 OpenDaylight, A Linux Foundation Collaborative Project. All Rights Reserved.
OpenDaylight is a registered trademark of The OpenDaylight Project, Inc.
Linux Foundation and OpenDaylight are registered trademarks of the Linux Foundation.
Linux is a registered trademark of Linus Torvalds.