diff --git a/akka/pom.xml b/akka/pom.xml index 45cb5873eff..d184f4d429d 100644 --- a/akka/pom.xml +++ b/akka/pom.xml @@ -11,13 +11,13 @@ org.opendaylight.odlparent odlparent-lite - 13.1.3 + 13.1.5 org.opendaylight.controller akka-aggregator - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT pom diff --git a/akka/repackaged-akka-jar/pom.xml b/akka/repackaged-akka-jar/pom.xml index 2e5b7167127..0285ea8309e 100644 --- a/akka/repackaged-akka-jar/pom.xml +++ b/akka/repackaged-akka-jar/pom.xml @@ -13,14 +13,14 @@ org.opendaylight.odlparent odlparent - 13.1.3 + 13.1.5 org.opendaylight.controller repackaged-akka-jar jar - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ${project.artifactId} diff --git a/akka/repackaged-akka/pom.xml b/akka/repackaged-akka/pom.xml index 9527b2f48c2..dfd607dfd7c 100644 --- a/akka/repackaged-akka/pom.xml +++ b/akka/repackaged-akka/pom.xml @@ -13,7 +13,7 @@ org.opendaylight.controller bundle-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../../bundle-parent diff --git a/artifacts/pom.xml b/artifacts/pom.xml index 2d10494194c..6d2c41da8db 100644 --- a/artifacts/pom.xml +++ b/artifacts/pom.xml @@ -14,13 +14,13 @@ org.opendaylight.odlparent odlparent-lite - 13.1.3 + 13.1.5 org.opendaylight.controller controller-artifacts - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT pom diff --git a/atomix-storage/pom.xml b/atomix-storage/pom.xml index c71e3dc5a75..ee279e99708 100644 --- a/atomix-storage/pom.xml +++ b/atomix-storage/pom.xml @@ -20,7 +20,7 @@ org.opendaylight.controller bundle-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../bundle-parent diff --git a/atomix-storage/src/main/java/io/atomix/storage/journal/JournalSegment.java b/atomix-storage/src/main/java/io/atomix/storage/journal/JournalSegment.java index b842d95e249..49b6ea82c2e 100644 --- a/atomix-storage/src/main/java/io/atomix/storage/journal/JournalSegment.java +++ b/atomix-storage/src/main/java/io/atomix/storage/journal/JournalSegment.java @@ -51,14 +51,16 @@ sealed interface State { * Journal segment is active, i.e. there is a associated with it. */ @NonNullByDefault - record Active(FileAccess access, JournalSegmentWriter writer) implements State { + private record Active(FileAccess access, FileWriter fileWriter, JournalSegmentWriter writer) implements State { Active { requireNonNull(access); + requireNonNull(fileWriter); requireNonNull(writer); } Inactive deactivate() { final var inactive = new Inactive(writer.currentPosition()); + fileWriter.release(); access.close(); return inactive; } @@ -68,11 +70,12 @@ Inactive deactivate() { * Journal segment is inactive, i.e. there is no writer associated with it. */ @NonNullByDefault - record Inactive(int position) implements State { + private record Inactive(int position) implements State { Active activate(final JournalSegment segment) throws IOException { final var access = segment.file.newAccess(segment.storageLevel, segment.maxEntrySize); - return new Active(access, new JournalSegmentWriter(access.newFileWriter(), segment, segment.journalIndex, - this)); + final var fileWriter = access.newFileWriter(); + return new Active(access, fileWriter, + new JournalSegmentWriter(fileWriter, segment, segment.journalIndex, position)); } } @@ -101,7 +104,11 @@ Active activate(final JournalSegment segment) throws IOException { try (var tmpAccess = file.newAccess(storageLevel, maxEntrySize)) { final var fileReader = tmpAccess.newFileReader(); - state = new Inactive(indexEntries(fileReader, this, maxEntrySize, journalIndex, Long.MAX_VALUE, null)); + try { + state = new Inactive(indexEntries(fileReader, this, maxEntrySize, journalIndex, Long.MAX_VALUE, null)); + } finally { + fileReader.release(); + } } catch (IOException e) { throw new StorageException(e); } diff --git a/atomix-storage/src/main/java/io/atomix/storage/journal/JournalSegmentWriter.java b/atomix-storage/src/main/java/io/atomix/storage/journal/JournalSegmentWriter.java index 12b5eb7ce6f..db87c1565aa 100644 --- a/atomix-storage/src/main/java/io/atomix/storage/journal/JournalSegmentWriter.java +++ b/atomix-storage/src/main/java/io/atomix/storage/journal/JournalSegmentWriter.java @@ -18,7 +18,6 @@ import static io.atomix.storage.journal.SegmentEntry.HEADER_BYTES; import static java.util.Objects.requireNonNull; -import io.atomix.storage.journal.JournalSegment.Inactive; import io.atomix.storage.journal.StorageException.TooLarge; import io.atomix.storage.journal.index.JournalIndex; import java.io.EOFException; @@ -46,14 +45,6 @@ final class JournalSegmentWriter { this.currentPosition = currentPosition; } - JournalSegmentWriter(final FileWriter fileWriter, final JournalSegment segment, final JournalIndex journalIndex, - final Inactive segmentState) { - this.fileWriter = requireNonNull(fileWriter); - this.segment = requireNonNull(segment); - this.journalIndex = requireNonNull(journalIndex); - currentPosition = segmentState.position(); - } - int currentPosition() { return currentPosition; } diff --git a/atomix-storage/src/main/java/io/atomix/storage/journal/SegmentedByteBufJournal.java b/atomix-storage/src/main/java/io/atomix/storage/journal/SegmentedByteBufJournal.java index ad4b1801e10..2ad26ab312d 100644 --- a/atomix-storage/src/main/java/io/atomix/storage/journal/SegmentedByteBufJournal.java +++ b/atomix-storage/src/main/java/io/atomix/storage/journal/SegmentedByteBufJournal.java @@ -51,7 +51,7 @@ public final class SegmentedByteBufJournal implements RaftJournal { private final @NonNull StorageLevel storageLevel; private final @NonNull File directory; private final @NonNull String name; - private final @NonNull EntryWriter writer; + private final @NonNull SegmentedByteBufWriter writer; private final int maxSegmentSize; private final int maxEntrySize; @Deprecated(forRemoval = true) @@ -422,6 +422,7 @@ public void compact(final long index) { public void close() { if (currentSegment != null) { currentSegment = null; + writer.close(); segments.values().forEach(JournalSegment::close); segments.clear(); } diff --git a/atomix-storage/src/main/java/io/atomix/storage/journal/SegmentedByteBufWriter.java b/atomix-storage/src/main/java/io/atomix/storage/journal/SegmentedByteBufWriter.java index 464a75e4b77..f6bb1cc48f6 100644 --- a/atomix-storage/src/main/java/io/atomix/storage/journal/SegmentedByteBufWriter.java +++ b/atomix-storage/src/main/java/io/atomix/storage/journal/SegmentedByteBufWriter.java @@ -106,4 +106,9 @@ public void reset(final long index) { public void flush() { currentWriter.flush(); } + + void close() { + currentSegment.releaseWriter(); + currentSegment = null; + } } diff --git a/benchmark/api/pom.xml b/benchmark/api/pom.xml index fd24099dab1..79087dfd901 100644 --- a/benchmark/api/pom.xml +++ b/benchmark/api/pom.xml @@ -11,7 +11,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.controller mdsal-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../../opendaylight/md-sal/parent diff --git a/benchmark/dsbenchmark/pom.xml b/benchmark/dsbenchmark/pom.xml index e1cd7b67915..f8cfbb1acdf 100644 --- a/benchmark/dsbenchmark/pom.xml +++ b/benchmark/dsbenchmark/pom.xml @@ -12,7 +12,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.controller mdsal-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../../opendaylight/md-sal/parent diff --git a/benchmark/ntfbenchmark/pom.xml b/benchmark/ntfbenchmark/pom.xml index afc5b4a9fec..d9e01382fb2 100644 --- a/benchmark/ntfbenchmark/pom.xml +++ b/benchmark/ntfbenchmark/pom.xml @@ -12,7 +12,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.controller mdsal-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../../opendaylight/md-sal/parent diff --git a/benchmark/pom.xml b/benchmark/pom.xml index 6ca5e4780d8..5803de92ccb 100644 --- a/benchmark/pom.xml +++ b/benchmark/pom.xml @@ -10,13 +10,13 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.odlparent odlparent-lite - 13.1.3 + 13.1.5 org.opendaylight.controller benchmark-aggregator - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT pom diff --git a/benchmark/rpcbenchmark/pom.xml b/benchmark/rpcbenchmark/pom.xml index a577584c5e8..5dba4919681 100644 --- a/benchmark/rpcbenchmark/pom.xml +++ b/benchmark/rpcbenchmark/pom.xml @@ -12,7 +12,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.controller mdsal-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../../opendaylight/md-sal/parent diff --git a/benchmark/segjournal-benchmark/pom.xml b/benchmark/segjournal-benchmark/pom.xml index 4f240c8f819..f76ed131c02 100644 --- a/benchmark/segjournal-benchmark/pom.xml +++ b/benchmark/segjournal-benchmark/pom.xml @@ -13,7 +13,7 @@ org.opendaylight.controller mdsal-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../../opendaylight/md-sal/parent diff --git a/bundle-parent/pom.xml b/bundle-parent/pom.xml index 790d6c895cd..b4fe2be20a4 100644 --- a/bundle-parent/pom.xml +++ b/bundle-parent/pom.xml @@ -11,13 +11,13 @@ org.opendaylight.mdsal bundle-parent - 13.0.4 + 13.0.7 org.opendaylight.controller bundle-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT pom @@ -25,7 +25,7 @@ org.opendaylight.controller controller-artifacts - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT pom import diff --git a/docs/pom.xml b/docs/pom.xml index 15edf9e1aee..e86ef9c5b61 100644 --- a/docs/pom.xml +++ b/docs/pom.xml @@ -12,14 +12,14 @@ org.opendaylight.odlparent odlparent - 13.1.3 + 13.1.5 org.opendaylight.controller controller-docs jar - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ${project.artifactId} Controller documentation @@ -211,9 +211,9 @@ https://netty.io/4.1/api/ https://commons.apache.org/proper/commons-lang/javadocs/api-release/ - https://www.javadoc.io/doc/org.opendaylight.odlparent/odlparent-docs/13.1.3/ - https://www.javadoc.io/doc/org.opendaylight.yangtools/yangtools-docs/13.0.6/ - https://www.javadoc.io/doc/org.opendaylight.mdsal/mdsal-docs/13.0.4/ + https://www.javadoc.io/doc/org.opendaylight.odlparent/odlparent-docs/13.1.5/ + https://www.javadoc.io/doc/org.opendaylight.yangtools/yangtools-docs/13.0.8/ + https://www.javadoc.io/doc/org.opendaylight.mdsal/mdsal-docs/13.0.7/ diff --git a/features/features-controller-experimental/pom.xml b/features/features-controller-experimental/pom.xml index 4a475cb2b79..167521097cf 100644 --- a/features/features-controller-experimental/pom.xml +++ b/features/features-controller-experimental/pom.xml @@ -11,13 +11,13 @@ org.opendaylight.odlparent feature-repo-parent - 13.1.3 + 13.1.5 org.opendaylight.controller features-controller-experimental - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT feature OpenDaylight :: Controller :: Experimental Features Controller Experimental Features diff --git a/features/features-controller-testing/pom.xml b/features/features-controller-testing/pom.xml index 351268a9707..f658ae6e5b8 100644 --- a/features/features-controller-testing/pom.xml +++ b/features/features-controller-testing/pom.xml @@ -11,13 +11,13 @@ org.opendaylight.odlparent feature-repo-parent - 13.1.3 + 13.1.5 org.opendaylight.controller features-controller-testing - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT feature OpenDaylight :: Controller :: Features to support CSIT testing Controller CSIT Features diff --git a/features/features-controller/pom.xml b/features/features-controller/pom.xml index 2e03c432649..8cd4912d3c9 100644 --- a/features/features-controller/pom.xml +++ b/features/features-controller/pom.xml @@ -11,13 +11,13 @@ org.opendaylight.odlparent feature-repo-parent - 13.1.3 + 13.1.5 org.opendaylight.controller features-controller - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT feature OpenDaylight :: Controller :: Features Controller Production Features diff --git a/features/odl-clustering-test-app/pom.xml b/features/odl-clustering-test-app/pom.xml index 373f600b4e0..adab772d276 100644 --- a/features/odl-clustering-test-app/pom.xml +++ b/features/odl-clustering-test-app/pom.xml @@ -11,7 +11,7 @@ org.opendaylight.controller single-feature-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../single-feature-parent diff --git a/features/odl-controller-akka/pom.xml b/features/odl-controller-akka/pom.xml index cf9dd242a86..98564260a18 100644 --- a/features/odl-controller-akka/pom.xml +++ b/features/odl-controller-akka/pom.xml @@ -14,7 +14,7 @@ org.opendaylight.controller single-feature-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../single-feature-parent diff --git a/features/odl-controller-blueprint/pom.xml b/features/odl-controller-blueprint/pom.xml index 65771862e10..349df2a33b9 100644 --- a/features/odl-controller-blueprint/pom.xml +++ b/features/odl-controller-blueprint/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.controller single-feature-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../single-feature-parent diff --git a/features/odl-controller-broker-local/pom.xml b/features/odl-controller-broker-local/pom.xml index 0dc99c0f37b..b9c6f86de74 100644 --- a/features/odl-controller-broker-local/pom.xml +++ b/features/odl-controller-broker-local/pom.xml @@ -11,7 +11,7 @@ org.opendaylight.controller single-feature-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../single-feature-parent diff --git a/features/odl-controller-mdsal-common/pom.xml b/features/odl-controller-mdsal-common/pom.xml index def5dd1c5c9..fbfbbcad228 100644 --- a/features/odl-controller-mdsal-common/pom.xml +++ b/features/odl-controller-mdsal-common/pom.xml @@ -11,7 +11,7 @@ org.opendaylight.controller single-feature-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../single-feature-parent diff --git a/features/odl-controller-scala/pom.xml b/features/odl-controller-scala/pom.xml index 1449b3f4cbf..dd212c8b80e 100644 --- a/features/odl-controller-scala/pom.xml +++ b/features/odl-controller-scala/pom.xml @@ -14,7 +14,7 @@ org.opendaylight.controller single-feature-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../single-feature-parent diff --git a/features/odl-jolokia/pom.xml b/features/odl-jolokia/pom.xml index c0e9b334638..357f39ca005 100644 --- a/features/odl-jolokia/pom.xml +++ b/features/odl-jolokia/pom.xml @@ -11,7 +11,7 @@ org.opendaylight.controller single-feature-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../single-feature-parent diff --git a/features/odl-mdsal-benchmark/pom.xml b/features/odl-mdsal-benchmark/pom.xml index 0aecbd7d64b..20af8c6ff72 100644 --- a/features/odl-mdsal-benchmark/pom.xml +++ b/features/odl-mdsal-benchmark/pom.xml @@ -11,7 +11,7 @@ org.opendaylight.controller single-feature-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../single-feature-parent diff --git a/features/odl-mdsal-broker/pom.xml b/features/odl-mdsal-broker/pom.xml index 95653d90487..8a86d10390e 100644 --- a/features/odl-mdsal-broker/pom.xml +++ b/features/odl-mdsal-broker/pom.xml @@ -11,7 +11,7 @@ org.opendaylight.controller single-feature-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../single-feature-parent diff --git a/features/odl-mdsal-clustering-commons/pom.xml b/features/odl-mdsal-clustering-commons/pom.xml index bf63eef2f28..24ea95a9bbc 100644 --- a/features/odl-mdsal-clustering-commons/pom.xml +++ b/features/odl-mdsal-clustering-commons/pom.xml @@ -11,7 +11,7 @@ org.opendaylight.controller single-feature-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../single-feature-parent diff --git a/features/odl-mdsal-distributed-datastore/pom.xml b/features/odl-mdsal-distributed-datastore/pom.xml index ad001315d65..2bb7d56c915 100644 --- a/features/odl-mdsal-distributed-datastore/pom.xml +++ b/features/odl-mdsal-distributed-datastore/pom.xml @@ -11,7 +11,7 @@ org.opendaylight.controller single-feature-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../single-feature-parent diff --git a/features/odl-mdsal-remoterpc-connector/pom.xml b/features/odl-mdsal-remoterpc-connector/pom.xml index 297f6ebc1d4..bfaf23ab5c0 100644 --- a/features/odl-mdsal-remoterpc-connector/pom.xml +++ b/features/odl-mdsal-remoterpc-connector/pom.xml @@ -11,7 +11,7 @@ org.opendaylight.controller single-feature-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../single-feature-parent diff --git a/features/odl-toaster/pom.xml b/features/odl-toaster/pom.xml index 7e72b6f00ed..43a96dccfff 100644 --- a/features/odl-toaster/pom.xml +++ b/features/odl-toaster/pom.xml @@ -11,7 +11,7 @@ org.opendaylight.controller single-feature-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../single-feature-parent diff --git a/features/pom.xml b/features/pom.xml index 3b34bd2abb2..7431d4e8bab 100644 --- a/features/pom.xml +++ b/features/pom.xml @@ -11,13 +11,13 @@ org.opendaylight.odlparent odlparent-lite - 13.1.3 + 13.1.5 org.opendaylight.controller features-aggregator - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT pom diff --git a/features/single-feature-parent/pom.xml b/features/single-feature-parent/pom.xml index a3683384efd..11f13491fef 100644 --- a/features/single-feature-parent/pom.xml +++ b/features/single-feature-parent/pom.xml @@ -11,13 +11,13 @@ org.opendaylight.odlparent single-feature-parent - 13.1.3 + 13.1.5 org.opendaylight.controller single-feature-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT pom @@ -25,7 +25,7 @@ org.opendaylight.controller bundle-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT pom import diff --git a/jolokia/pom.xml b/jolokia/pom.xml index b23bce3dc31..bfc12669b21 100644 --- a/jolokia/pom.xml +++ b/jolokia/pom.xml @@ -11,13 +11,13 @@ org.opendaylight.odlparent odlparent - 13.1.3 + 13.1.5 org.opendaylight.controller odl-jolokia-osgi - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT jar diff --git a/karaf/pom.xml b/karaf/pom.xml index 23fd3f878cd..78756d2ace2 100644 --- a/karaf/pom.xml +++ b/karaf/pom.xml @@ -11,13 +11,13 @@ org.opendaylight.odlparent karaf4-parent - 13.1.3 + 13.1.5 org.opendaylight.controller controller-test-karaf - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT pom diff --git a/opendaylight/blueprint/pom.xml b/opendaylight/blueprint/pom.xml index dde3b2f54da..4c4eac74155 100644 --- a/opendaylight/blueprint/pom.xml +++ b/opendaylight/blueprint/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent bundle-parent - 13.1.3 + 13.1.5 @@ -20,21 +20,21 @@ blueprint bundle ${project.artifactId} - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT org.opendaylight.yangtools yangtools-artifacts - 13.0.6 + 13.0.8 pom import org.opendaylight.mdsal mdsal-artifacts - 13.0.4 + 13.0.7 pom import diff --git a/opendaylight/md-sal/cds-access-api/pom.xml b/opendaylight/md-sal/cds-access-api/pom.xml index 164fed73be7..a9b98661533 100644 --- a/opendaylight/md-sal/cds-access-api/pom.xml +++ b/opendaylight/md-sal/cds-access-api/pom.xml @@ -4,7 +4,7 @@ org.opendaylight.controller mdsal-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../parent diff --git a/opendaylight/md-sal/cds-access-client/pom.xml b/opendaylight/md-sal/cds-access-client/pom.xml index 06cef0f9ce5..c2c5368d633 100644 --- a/opendaylight/md-sal/cds-access-client/pom.xml +++ b/opendaylight/md-sal/cds-access-client/pom.xml @@ -4,7 +4,7 @@ org.opendaylight.controller mdsal-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../parent diff --git a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/AbstractClientActor.java b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/AbstractClientActor.java index bed5ffc35c3..e39e8875898 100644 --- a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/AbstractClientActor.java +++ b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/AbstractClientActor.java @@ -10,6 +10,7 @@ import akka.actor.ActorRef; import akka.actor.PoisonPill; import akka.persistence.AbstractPersistentActor; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.controller.cluster.access.concepts.FrontendIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -20,15 +21,18 @@ public abstract class AbstractClientActor extends AbstractPersistentActor { private static final Logger LOG = LoggerFactory.getLogger(AbstractClientActor.class); + private final @NonNull String persistenceId; + private AbstractClientActorBehavior currentBehavior; protected AbstractClientActor(final FrontendIdentifier frontendId) { - currentBehavior = new RecoveringClientActorBehavior(this, frontendId); + persistenceId = frontendId.toPersistentId(); + currentBehavior = new RecoveringClientActorBehavior(this, persistenceId, frontendId); } @Override public final String persistenceId() { - return currentBehavior.persistenceId(); + return persistenceId; } @Override @@ -43,10 +47,10 @@ public void postStop() throws Exception { private void switchBehavior(final AbstractClientActorBehavior nextBehavior) { if (!currentBehavior.equals(nextBehavior)) { if (nextBehavior == null) { - LOG.debug("{}: shutting down", persistenceId()); + LOG.debug("{}: shutting down", persistenceId); self().tell(PoisonPill.getInstance(), ActorRef.noSender()); } else { - LOG.debug("{}: switched from {} to {}", persistenceId(), currentBehavior, nextBehavior); + LOG.debug("{}: switched from {} to {}", persistenceId, currentBehavior, nextBehavior); } currentBehavior.close(); @@ -66,14 +70,14 @@ public Receive createReceiveRecover() { private void onReceiveCommand(final Object command) { if (command == null) { - LOG.debug("{}: ignoring null command", persistenceId()); + LOG.debug("{}: ignoring null command", persistenceId); return; } if (currentBehavior != null) { switchBehavior(currentBehavior.onReceiveCommand(command)); } else { - LOG.debug("{}: shutting down, ignoring command {}", persistenceId(), command); + LOG.debug("{}: shutting down, ignoring command {}", persistenceId, command); } } diff --git a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/RecoveringClientActorBehavior.java b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/RecoveringClientActorBehavior.java index 729d53dfc36..45a1c5102bf 100644 --- a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/RecoveringClientActorBehavior.java +++ b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/RecoveringClientActorBehavior.java @@ -34,7 +34,8 @@ final class RecoveringClientActorBehavior extends AbstractClientActorBehavior org.opendaylight.controller mdsal-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../parent diff --git a/opendaylight/md-sal/cds-mgmt-api/pom.xml b/opendaylight/md-sal/cds-mgmt-api/pom.xml index f21bc6a07fb..e61a8749026 100644 --- a/opendaylight/md-sal/cds-mgmt-api/pom.xml +++ b/opendaylight/md-sal/cds-mgmt-api/pom.xml @@ -4,7 +4,7 @@ org.opendaylight.controller mdsal-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../parent diff --git a/opendaylight/md-sal/eos-dom-akka/pom.xml b/opendaylight/md-sal/eos-dom-akka/pom.xml index d0a23c27fd1..784f7641efe 100644 --- a/opendaylight/md-sal/eos-dom-akka/pom.xml +++ b/opendaylight/md-sal/eos-dom-akka/pom.xml @@ -14,7 +14,7 @@ org.opendaylight.controller mdsal-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../parent diff --git a/opendaylight/md-sal/mdsal-it-base/pom.xml b/opendaylight/md-sal/mdsal-it-base/pom.xml index c304df1299b..ede2971b41e 100644 --- a/opendaylight/md-sal/mdsal-it-base/pom.xml +++ b/opendaylight/md-sal/mdsal-it-base/pom.xml @@ -12,13 +12,13 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.odlparent bundle-parent - 13.1.3 + 13.1.5 org.opendaylight.controller mdsal-it-base - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT bundle @@ -26,7 +26,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.mdsal mdsal-artifacts - 13.0.4 + 13.0.7 pom import diff --git a/opendaylight/md-sal/mdsal-it-parent/pom.xml b/opendaylight/md-sal/mdsal-it-parent/pom.xml index 033000e6ca5..a8ba7ef7e97 100644 --- a/opendaylight/md-sal/mdsal-it-parent/pom.xml +++ b/opendaylight/md-sal/mdsal-it-parent/pom.xml @@ -13,13 +13,13 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.odlparent bundle-parent - 13.1.3 + 13.1.5 org.opendaylight.controller mdsal-it-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT pom @@ -37,7 +37,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.controller controller-artifacts - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT pom import diff --git a/opendaylight/md-sal/parent/pom.xml b/opendaylight/md-sal/parent/pom.xml index 1890599deb3..0630462a3a7 100644 --- a/opendaylight/md-sal/parent/pom.xml +++ b/opendaylight/md-sal/parent/pom.xml @@ -11,13 +11,13 @@ org.opendaylight.mdsal binding-parent - 13.0.4 + 13.0.7 org.opendaylight.controller mdsal-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT pom @@ -25,7 +25,7 @@ org.opendaylight.controller bundle-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT pom import diff --git a/opendaylight/md-sal/pom.xml b/opendaylight/md-sal/pom.xml index 3ac4c32c146..37dd97c83d9 100644 --- a/opendaylight/md-sal/pom.xml +++ b/opendaylight/md-sal/pom.xml @@ -5,13 +5,13 @@ org.opendaylight.odlparent odlparent-lite - 13.1.3 + 13.1.5 org.opendaylight.controller mdsal-aggregator - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT pom diff --git a/opendaylight/md-sal/sal-akka-raft-example/pom.xml b/opendaylight/md-sal/sal-akka-raft-example/pom.xml index 83539fe42aa..7a6595f0261 100644 --- a/opendaylight/md-sal/sal-akka-raft-example/pom.xml +++ b/opendaylight/md-sal/sal-akka-raft-example/pom.xml @@ -11,7 +11,7 @@ org.opendaylight.controller mdsal-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../parent diff --git a/opendaylight/md-sal/sal-akka-raft/pom.xml b/opendaylight/md-sal/sal-akka-raft/pom.xml index 765d4323bc5..7ec9a86bd6e 100644 --- a/opendaylight/md-sal/sal-akka-raft/pom.xml +++ b/opendaylight/md-sal/sal-akka-raft/pom.xml @@ -4,7 +4,7 @@ org.opendaylight.controller mdsal-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../parent diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RecoveryIntegrationTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RecoveryIntegrationTest.java index f197ba29a0e..58e68e7e015 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RecoveryIntegrationTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RecoveryIntegrationTest.java @@ -7,6 +7,7 @@ */ package org.opendaylight.controller.cluster.raft; +import static org.awaitility.Awaitility.await; import static org.junit.Assert.assertEquals; import akka.actor.ActorRef; @@ -73,7 +74,7 @@ public void testStatePersistedBetweenSnapshotCaptureAndPersist() { MessageCollectorActor.expectMatching(leaderCollectorActor, ApplyJournalEntries.class, 1); // Now deliver the CaptureSnapshotReply to the leader. - CaptureSnapshotReply captureSnapshotReply = MessageCollectorActor.expectFirstMatching( + final CaptureSnapshotReply captureSnapshotReply = MessageCollectorActor.expectFirstMatching( leaderCollectorActor, CaptureSnapshotReply.class); leaderActor.underlyingActor().stopDropMessages(CaptureSnapshotReply.class); leaderActor.tell(captureSnapshotReply, leaderActor); @@ -230,7 +231,12 @@ public void testRecoveryDeleteEntries() { // Send new payloads final MockPayload payload4 = sendPayloadData(leaderActor, "newFour"); + await().untilAsserted(() -> assertEquals( + "leader journal last index", 4, leaderContext.getReplicatedLog().lastIndex())); + final MockPayload payload5 = sendPayloadData(leaderActor, "newFive"); + await().untilAsserted(() -> assertEquals( + "leader journal last index", 5, leaderContext.getReplicatedLog().lastIndex())); verifyRaftState(leaderActor, raftState -> { assertEquals("leader journal last index", 5, leaderContext.getReplicatedLog().lastIndex()); diff --git a/opendaylight/md-sal/sal-akka-segmented-journal/pom.xml b/opendaylight/md-sal/sal-akka-segmented-journal/pom.xml index 60a71706b44..d28a513a857 100644 --- a/opendaylight/md-sal/sal-akka-segmented-journal/pom.xml +++ b/opendaylight/md-sal/sal-akka-segmented-journal/pom.xml @@ -12,7 +12,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.controller mdsal-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../parent diff --git a/opendaylight/md-sal/sal-akka-segmented-journal/src/main/java/org/opendaylight/controller/akka/segjournal/SegmentedJournalActor.java b/opendaylight/md-sal/sal-akka-segmented-journal/src/main/java/org/opendaylight/controller/akka/segjournal/SegmentedJournalActor.java index 0b780839116..d28c2114bd4 100644 --- a/opendaylight/md-sal/sal-akka-segmented-journal/src/main/java/org/opendaylight/controller/akka/segjournal/SegmentedJournalActor.java +++ b/opendaylight/md-sal/sal-akka-segmented-journal/src/main/java/org/opendaylight/controller/akka/segjournal/SegmentedJournalActor.java @@ -510,9 +510,10 @@ private void ensureOpen() { .withName("delete") .withMaxSegmentSize(DELETE_SEGMENT_SIZE) .build(), READ_MAPPER, WRITE_MAPPER); - final var lastDeleteRecovered = deleteJournal.openReader(deleteJournal.lastIndex()) - .tryNext((index, value, length) -> value); - lastDelete = lastDeleteRecovered == null ? 0 : lastDeleteRecovered; + try (var reader = deleteJournal.openReader(deleteJournal.lastIndex())) { + final var lastDeleteRecovered = reader.tryNext((index, value, length) -> value); + lastDelete = lastDeleteRecovered == null ? 0 : lastDeleteRecovered; + } dataJournal = new DataJournalV0(persistenceId, messageSize, context().system(), storage, directory, maxEntrySize, maxSegmentSize); diff --git a/opendaylight/md-sal/sal-binding-it/pom.xml b/opendaylight/md-sal/sal-binding-it/pom.xml index 071789540c5..3eb75c00c19 100644 --- a/opendaylight/md-sal/sal-binding-it/pom.xml +++ b/opendaylight/md-sal/sal-binding-it/pom.xml @@ -4,7 +4,7 @@ org.opendaylight.controller mdsal-it-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../mdsal-it-parent sal-binding-it diff --git a/opendaylight/md-sal/sal-cluster-admin-api/pom.xml b/opendaylight/md-sal/sal-cluster-admin-api/pom.xml index 682485f5b26..3404612be5f 100644 --- a/opendaylight/md-sal/sal-cluster-admin-api/pom.xml +++ b/opendaylight/md-sal/sal-cluster-admin-api/pom.xml @@ -4,7 +4,7 @@ org.opendaylight.controller mdsal-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../parent diff --git a/opendaylight/md-sal/sal-cluster-admin-impl/pom.xml b/opendaylight/md-sal/sal-cluster-admin-impl/pom.xml index e2c7d25e7c4..9905ba6d30d 100644 --- a/opendaylight/md-sal/sal-cluster-admin-impl/pom.xml +++ b/opendaylight/md-sal/sal-cluster-admin-impl/pom.xml @@ -4,7 +4,7 @@ org.opendaylight.controller mdsal-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../parent diff --git a/opendaylight/md-sal/sal-cluster-admin-impl/src/main/java/org/opendaylight/controller/cluster/datastore/admin/OSGiClusterAdmin.java b/opendaylight/md-sal/sal-cluster-admin-impl/src/main/java/org/opendaylight/controller/cluster/datastore/admin/OSGiClusterAdmin.java index bcbf408eedb..07eb97bae6f 100644 --- a/opendaylight/md-sal/sal-cluster-admin-impl/src/main/java/org/opendaylight/controller/cluster/datastore/admin/OSGiClusterAdmin.java +++ b/opendaylight/md-sal/sal-cluster-admin-impl/src/main/java/org/opendaylight/controller/cluster/datastore/admin/OSGiClusterAdmin.java @@ -29,7 +29,6 @@ public OSGiClusterAdmin( @Reference(target = "(type=distributed-config)") final DistributedDataStoreInterface configDatastore, @Reference(target = "(type=distributed-operational)") final DistributedDataStoreInterface operDatastore, @Reference final RpcProviderService rpcProviderService, - @Reference final DataCenterControl dataCenterControls, @Reference final DataCenterControl dataCenterControl) { reg = new ClusterAdminRpcService(configDatastore, operDatastore, dataCenterControl) .registerWith(rpcProviderService); diff --git a/opendaylight/md-sal/sal-cluster-admin-karaf-cli/pom.xml b/opendaylight/md-sal/sal-cluster-admin-karaf-cli/pom.xml index 5cc05dbe01f..3e537518890 100644 --- a/opendaylight/md-sal/sal-cluster-admin-karaf-cli/pom.xml +++ b/opendaylight/md-sal/sal-cluster-admin-karaf-cli/pom.xml @@ -5,7 +5,7 @@ mdsal-parent org.opendaylight.controller - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../parent/pom.xml 4.0.0 diff --git a/opendaylight/md-sal/sal-clustering-commons/pom.xml b/opendaylight/md-sal/sal-clustering-commons/pom.xml index e8993caf329..4ad4e309c93 100644 --- a/opendaylight/md-sal/sal-clustering-commons/pom.xml +++ b/opendaylight/md-sal/sal-clustering-commons/pom.xml @@ -4,7 +4,7 @@ org.opendaylight.controller mdsal-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../parent diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/ExplicitAsk.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/ExplicitAsk.java index e241d880c97..8add1b7c732 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/ExplicitAsk.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/ExplicitAsk.java @@ -33,7 +33,7 @@ private ExplicitAsk() { } public static Function1 toScala(final Function function) { - return new AbstractFunction1() { + return new AbstractFunction1<>() { @Override public T apply(final ActorRef askSender) { return function.apply(askSender); diff --git a/opendaylight/md-sal/sal-clustering-config/pom.xml b/opendaylight/md-sal/sal-clustering-config/pom.xml index ba1ee77762b..c450af34623 100644 --- a/opendaylight/md-sal/sal-clustering-config/pom.xml +++ b/opendaylight/md-sal/sal-clustering-config/pom.xml @@ -12,13 +12,13 @@ org.opendaylight.odlparent odlparent-lite - 13.1.3 + 13.1.5 org.opendaylight.controller sal-clustering-config - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT jar Configuration files for md-sal clustering diff --git a/opendaylight/md-sal/sal-common-util/pom.xml b/opendaylight/md-sal/sal-common-util/pom.xml index 6ab3968a6e1..62f98ca091d 100644 --- a/opendaylight/md-sal/sal-common-util/pom.xml +++ b/opendaylight/md-sal/sal-common-util/pom.xml @@ -4,7 +4,7 @@ org.opendaylight.controller mdsal-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../parent diff --git a/opendaylight/md-sal/sal-distributed-datastore/pom.xml b/opendaylight/md-sal/sal-distributed-datastore/pom.xml index 07b379cdf20..20183bcab56 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/pom.xml +++ b/opendaylight/md-sal/sal-distributed-datastore/pom.xml @@ -4,7 +4,7 @@ org.opendaylight.controller mdsal-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../parent diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/ConcurrentDOMDataBroker.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/ConcurrentDOMDataBroker.java index d6da8487e0f..64bb53cbce9 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/ConcurrentDOMDataBroker.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/ConcurrentDOMDataBroker.java @@ -14,6 +14,7 @@ import static org.opendaylight.mdsal.dom.spi.TransactionCommitFailedExceptionMapper.PRE_COMMIT_MAPPER; import com.google.common.annotations.Beta; +import com.google.common.base.MoreObjects; import com.google.common.util.concurrent.AbstractFuture; import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.FutureCallback; @@ -275,6 +276,11 @@ public void run() { delegate.run(); } } + + @Override + public String toString() { + return MoreObjects.toStringHelper(this).add("delegate", delegate).toString(); + } } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractDataStoreClientActor.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractDataStoreClientActor.java index 507f065d49c..e3668dc26e3 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractDataStoreClientActor.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractDataStoreClientActor.java @@ -11,23 +11,20 @@ import static java.util.Objects.requireNonNull; import akka.actor.ActorRef; -import akka.util.Timeout; +import akka.pattern.Patterns; import com.google.common.base.Throwables; +import java.time.Duration; +import java.util.concurrent.CompletionStage; import java.util.concurrent.TimeUnit; import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.NonNullByDefault; import org.opendaylight.controller.cluster.access.client.AbstractClientActor; import org.opendaylight.controller.cluster.access.client.ClientActorConfig; import org.opendaylight.controller.cluster.access.client.ClientActorContext; import org.opendaylight.controller.cluster.access.concepts.FrontendIdentifier; -import org.opendaylight.controller.cluster.common.actor.ExplicitAsk; import org.opendaylight.controller.cluster.datastore.utils.ActorUtils; -import scala.Function1; -import scala.concurrent.Await; -import scala.concurrent.duration.Duration; public abstract class AbstractDataStoreClientActor extends AbstractClientActor { - private static final Function1 GET_CLIENT_FACTORY = ExplicitAsk.toScala(GetClientRequest::new); - private final ActorUtils actorUtils; AbstractDataStoreClientActor(final FrontendIdentifier frontendId, final ActorUtils actorUtils) { @@ -45,18 +42,23 @@ protected final AbstractDataStoreClientBehavior initialBehavior(final ClientActo return verifyNotNull(initialBehavior(context, actorUtils)); } - @SuppressWarnings("checkstyle:hiddenField") abstract AbstractDataStoreClientBehavior initialBehavior(ClientActorContext context, ActorUtils actorUtils); @SuppressWarnings("checkstyle:IllegalCatch") public static DataStoreClient getDistributedDataStoreClient(final @NonNull ActorRef actor, final long timeout, final TimeUnit unit) { + final var future = requestDistributedDataStoreClient(actor, Duration.of(timeout, unit.toChronoUnit())); try { - return (DataStoreClient) Await.result(ExplicitAsk.ask(actor, GET_CLIENT_FACTORY, - Timeout.apply(timeout, unit)), Duration.Inf()); + return future.toCompletableFuture().get(); } catch (Exception e) { Throwables.throwIfUnchecked(e); throw new IllegalStateException(e); } } + + @NonNullByDefault + public static CompletionStage requestDistributedDataStoreClient(final ActorRef actor, + final Duration timeout) { + return Patterns.askWithReplyTo(actor, GetClientRequest::new, timeout).thenApply(DataStoreClient.class::cast); + } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractShardBackendResolver.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractShardBackendResolver.java index 5a436a53d3b..5b81aab37e7 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractShardBackendResolver.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractShardBackendResolver.java @@ -10,14 +10,13 @@ import static com.google.common.base.Preconditions.checkArgument; import static java.util.Objects.requireNonNull; -import akka.actor.ActorRef; -import akka.util.Timeout; +import akka.pattern.Patterns; import com.google.common.primitives.UnsignedLong; +import java.time.Duration; import java.util.Set; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.concurrent.atomic.AtomicLong; import java.util.function.Consumer; @@ -31,7 +30,6 @@ import org.opendaylight.controller.cluster.access.commands.NotLeaderException; import org.opendaylight.controller.cluster.access.concepts.ClientIdentifier; import org.opendaylight.controller.cluster.access.concepts.RequestFailure; -import org.opendaylight.controller.cluster.common.actor.ExplicitAsk; import org.opendaylight.controller.cluster.datastore.exceptions.NoShardLeaderException; import org.opendaylight.controller.cluster.datastore.exceptions.NotInitializedException; import org.opendaylight.controller.cluster.datastore.exceptions.PrimaryNotFoundException; @@ -40,7 +38,6 @@ import org.opendaylight.yangtools.concepts.Registration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import scala.Function1; import scala.compat.java8.FutureConverters; /** @@ -87,18 +84,17 @@ private synchronized void onStageResolved(final ShardBackendInfo info, final Thr * Connect request timeout. If the shard does not respond within this interval, we retry the lookup and connection. */ // TODO: maybe make this configurable somehow? - private static final Timeout CONNECT_TIMEOUT = Timeout.apply(5, TimeUnit.SECONDS); + private static final Duration CONNECT_TIMEOUT = Duration.ofSeconds(5); private final AtomicLong nextSessionId = new AtomicLong(); - private final Function1 connectFunction; + private final ClientIdentifier clientId; private final ActorUtils actorUtils; private final Set> staleBackendInfoCallbacks = ConcurrentHashMap.newKeySet(); // FIXME: we really need just ActorContext.findPrimaryShardAsync() AbstractShardBackendResolver(final ClientIdentifier clientId, final ActorUtils actorUtils) { this.actorUtils = requireNonNull(actorUtils); - connectFunction = ExplicitAsk.toScala(t -> new ConnectClientRequest(clientId, t, ABIVersion.POTASSIUM, - ABIVersion.current())); + this.clientId = requireNonNull(clientId); } @Override @@ -157,7 +153,8 @@ private void connectShard(final String shardName, final long cookie, final Prima final CompletableFuture future) { LOG.debug("Shard {} resolved to {}, attempting to connect", shardName, info); - FutureConverters.toJava(ExplicitAsk.ask(info.getPrimaryShardActor(), connectFunction, CONNECT_TIMEOUT)) + Patterns.askWithReplyTo(info.getPrimaryShardActor(), + t -> new ConnectClientRequest(clientId, t, ABIVersion.POTASSIUM, ABIVersion.current()), CONNECT_TIMEOUT) .whenComplete((response, failure) -> onConnectResponse(shardName, cookie, future, response, failure)); } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractTransactionCommitCohort.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractTransactionCommitCohort.java index 77de1e45d82..b10fbbe39ca 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractTransactionCommitCohort.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractTransactionCommitCohort.java @@ -14,17 +14,13 @@ import com.google.common.util.concurrent.ListenableFuture; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; import org.opendaylight.mdsal.dom.spi.store.DOMStoreThreePhaseCommitCohort; -import org.opendaylight.yangtools.yang.common.Empty; /** * Base class for internal {@link DOMStoreThreePhaseCommitCohort} implementation. It contains utility constants for * wide reuse. - * - * @author Robert Varga */ abstract class AbstractTransactionCommitCohort implements DOMStoreThreePhaseCommitCohort { static final ListenableFuture TRUE_FUTURE = Futures.immediateFuture(Boolean.TRUE); - static final ListenableFuture EMPTY_FUTURE = Futures.immediateFuture(Empty.value()); private final AbstractClientHistory parent; private final TransactionIdentifier txId; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/DirectTransactionCommitCohort.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/DirectTransactionCommitCohort.java index 5b5ff5864a3..41f929e63c3 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/DirectTransactionCommitCohort.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/DirectTransactionCommitCohort.java @@ -17,8 +17,6 @@ /** * An {@link AbstractTransactionCommitCohort} implementation for transactions which contain a single proxy. Since there * is only one proxy, - * - * @author Robert Varga */ final class DirectTransactionCommitCohort extends AbstractTransactionCommitCohort { private final AbstractProxyTransaction proxy; @@ -36,13 +34,13 @@ public ListenableFuture canCommit() { @Override public ListenableFuture preCommit() { - return EMPTY_FUTURE; + return Empty.immediateFuture(); } @Override public ListenableFuture abort() { complete(); - return EMPTY_FUTURE; + return Empty.immediateFuture(); } @Override diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/EmptyTransactionCommitCohort.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/EmptyTransactionCommitCohort.java index 5b11d8679e3..70ea129d8b8 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/EmptyTransactionCommitCohort.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/EmptyTransactionCommitCohort.java @@ -33,13 +33,13 @@ public ListenableFuture canCommit() { @Override public ListenableFuture preCommit() { - return EMPTY_FUTURE; + return Empty.immediateFuture(); } @Override public ListenableFuture abort() { complete(); - return EMPTY_FUTURE; + return Empty.immediateFuture(); } @Override diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DefaultShardDataTreeChangeListenerPublisher.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DefaultShardDataTreeChangeListenerPublisher.java index d7d90474f33..7f8475cfac7 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DefaultShardDataTreeChangeListenerPublisher.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DefaultShardDataTreeChangeListenerPublisher.java @@ -46,9 +46,11 @@ public void publishChanges(final DataTreeCandidate candidate) { @Override protected void notifyListener(final Reg registration, final List changes) { - final var listener = registration.listener(); - LOG.debug("{}: notifyListener: listener: {}", logContext, listener); - listener.onDataTreeChanged(changes); + if (registration.notClosed()) { + final var listener = registration.listener(); + LOG.debug("{}: notifyListener: listener: {}", logContext, listener); + listener.onDataTreeChanged(changes); + } } @Override diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/persisted/DataTreeCandidateInputOutput.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/persisted/DataTreeCandidateInputOutput.java index a5a76e06af8..3e19f2bf27e 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/persisted/DataTreeCandidateInputOutput.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/persisted/DataTreeCandidateInputOutput.java @@ -19,6 +19,7 @@ import java.util.List; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.concepts.Immutable; +import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.stream.ReusableStreamReceiver; import org.opendaylight.yangtools.yang.data.codec.binfmt.NormalizedNodeDataInput; import org.opendaylight.yangtools.yang.data.codec.binfmt.NormalizedNodeDataOutput; @@ -55,7 +56,7 @@ public record DataTreeCandidateWithVersion( private static final byte DISAPPEARED = 5; private DataTreeCandidateInputOutput() { - throw new UnsupportedOperationException(); + // Hidden on purpose } private static DataTreeCandidateNode readModifiedNode(final ModificationType type, final NormalizedNodeDataInput in, @@ -97,7 +98,7 @@ private static DataTreeCandidateNode readNode(final NormalizedNodeDataInput in, case SUBTREE_MODIFIED -> readModifiedNode(ModificationType.SUBTREE_MODIFIED, in, receiver); case UNMODIFIED -> null; case WRITE -> DataTreeCandidateNodes.written(in.readNormalizedNode(receiver)); - default -> throw new IllegalArgumentException("Unhandled node type " + type); + default -> throw new IOException("Unhandled node type " + type); }; } @@ -117,7 +118,7 @@ public static DataTreeCandidateWithVersion readDataTreeCandidate(final DataInput readChildren(reader, receiver)); case WRITE -> DataTreeCandidateNodes.written(reader.readNormalizedNode(receiver)); case UNMODIFIED -> AbstractDataTreeCandidateNode.createUnmodified(); - default -> throw new IllegalArgumentException("Unhandled node type " + type); + default -> throw new IOException("Unhandled node type " + type); }; return new DataTreeCandidateWithVersion(DataTreeCandidates.newDataTreeCandidate(rootPath, rootNode), reader.getVersion()); @@ -155,10 +156,10 @@ private static void writeNode(final NormalizedNodeDataOutput out, final DataTree } case WRITE -> { out.writeByte(WRITE); - out.writeNormalizedNode(node.getDataAfter()); + out.writeNormalizedNode(requireDataAfter(node)); } case UNMODIFIED -> out.writeByte(UNMODIFIED); - default -> throwUnhandledNodeType(node); + default -> throw unhandledNodeType(node); } } @@ -186,9 +187,9 @@ public static void writeDataTreeCandidate(final DataOutput out, final PayloadVer case UNMODIFIED -> writer.writeByte(UNMODIFIED); case WRITE -> { writer.writeByte(WRITE); - writer.writeNormalizedNode(node.getDataAfter()); + writer.writeNormalizedNode(requireDataAfter(node)); } - default -> throwUnhandledNodeType(node); + default -> throw unhandledNodeType(node); } } } @@ -198,7 +199,16 @@ public static void writeDataTreeCandidate(final DataOutput out, final DataTreeCa writeDataTreeCandidate(out, PayloadVersion.current(), candidate); } - private static void throwUnhandledNodeType(final DataTreeCandidateNode node) { - throw new IllegalArgumentException("Unhandled node type " + node.modificationType()); + private static @NonNull NormalizedNode requireDataAfter(final DataTreeCandidateNode node) throws IOException { + final var after = node.dataAfter(); + if (after != null) { + return after; + } + throw new IOException( + "Candidate for %s (%s) does not have after-image".formatted(node.name(), node.modificationType())); + } + + private static IOException unhandledNodeType(final DataTreeCandidateNode node) { + return new IOException("Unhandled node type " + node.modificationType()); } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataTreeCohortActorTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataTreeCohortActorTest.java index 7a3e2683921..c0dc0ce96e9 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataTreeCohortActorTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataTreeCohortActorTest.java @@ -21,11 +21,10 @@ import akka.util.Timeout; import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.Futures; -import com.google.common.util.concurrent.ListeningExecutorService; -import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.Uninterruptibles; import java.util.ArrayList; import java.util.Collection; +import java.util.concurrent.Executor; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import org.junit.After; @@ -111,14 +110,14 @@ public void testMultipleThreePhaseCommits() throws Exception { @Test public void testAsyncCohort() throws Exception { - ListeningExecutorService executor = MoreExecutors.listeningDecorator(Executors.newSingleThreadExecutor()); + final var executor = Executors.newSingleThreadExecutor(); doReturn(executeWithDelay(executor, mockPostCanCommit)) .when(mockCohort).canCommit(any(Object.class), any(EffectiveModelContext.class), anyCollection()); - doReturn(executor.submit(() -> mockPostPreCommit)).when(mockPostCanCommit).preCommit(); + doReturn(Futures.submit(() -> mockPostPreCommit, executor)).when(mockPostCanCommit).preCommit(); - doReturn(executor.submit(() -> null)).when(mockPostPreCommit).commit(); + doReturn(Futures.submit(() -> null, executor)).when(mockPostPreCommit).commit(); ActorRef cohortActor = newCohortActor("testAsyncCohort"); @@ -187,11 +186,11 @@ public void testAbortAfterPreCommit() throws Exception { verify(mockPostPreCommit).abort(); } - private static FluentFuture executeWithDelay(final ListeningExecutorService executor, final T result) { - return FluentFuture.from(executor.submit(() -> { + private static FluentFuture executeWithDelay(final Executor executor, final T result) { + return FluentFutures.submit(() -> { Uninterruptibles.sleepUninterruptibly(500, TimeUnit.MILLISECONDS); return result; - })); + }, executor); } private ActorRef newCohortActor(final String name) { diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ThreePhaseCommitCohortProxy.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ThreePhaseCommitCohortProxy.java index 071925fe55f..ea4ea34f031 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ThreePhaseCommitCohortProxy.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ThreePhaseCommitCohortProxy.java @@ -22,7 +22,6 @@ import java.util.List; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Supplier; -import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; import org.opendaylight.controller.cluster.datastore.messages.AbortTransaction; import org.opendaylight.controller.cluster.datastore.messages.AbortTransactionReply; @@ -44,8 +43,6 @@ @Deprecated(since = "9.0.0", forRemoval = true) final class ThreePhaseCommitCohortProxy implements DOMStoreThreePhaseCommitCohort { private static final Logger LOG = LoggerFactory.getLogger(ThreePhaseCommitCohortProxy.class); - private static final @NonNull ListenableFuture IMMEDIATE_EMPTY_SUCCESS = - Futures.immediateFuture(Empty.value()); private static final MessageSupplier COMMIT_MESSAGE_SUPPLIER = new MessageSupplier() { @Override @@ -257,7 +254,7 @@ private Future> invokeCohorts(final MessageSupplier messageSupp @Override public ListenableFuture preCommit() { // We don't need to do anything here - preCommit is done atomically with the commit phase by the shard. - return IMMEDIATE_EMPTY_SUCCESS; + return Empty.immediateFuture(); } @Override diff --git a/opendaylight/md-sal/sal-dummy-distributed-datastore/pom.xml b/opendaylight/md-sal/sal-dummy-distributed-datastore/pom.xml index a55d2a60081..101b51a0809 100644 --- a/opendaylight/md-sal/sal-dummy-distributed-datastore/pom.xml +++ b/opendaylight/md-sal/sal-dummy-distributed-datastore/pom.xml @@ -4,7 +4,7 @@ org.opendaylight.controller mdsal-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../parent diff --git a/opendaylight/md-sal/sal-remoterpc-connector/pom.xml b/opendaylight/md-sal/sal-remoterpc-connector/pom.xml index 58273f5a224..cb226882c24 100644 --- a/opendaylight/md-sal/sal-remoterpc-connector/pom.xml +++ b/opendaylight/md-sal/sal-remoterpc-connector/pom.xml @@ -4,7 +4,7 @@ org.opendaylight.controller mdsal-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../parent diff --git a/opendaylight/md-sal/sal-test-model/pom.xml b/opendaylight/md-sal/sal-test-model/pom.xml index e0e28de1d53..a4de63d2e42 100644 --- a/opendaylight/md-sal/sal-test-model/pom.xml +++ b/opendaylight/md-sal/sal-test-model/pom.xml @@ -6,7 +6,7 @@ org.opendaylight.controller mdsal-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../parent diff --git a/opendaylight/md-sal/samples/clustering-test-app/configuration/pom.xml b/opendaylight/md-sal/samples/clustering-test-app/configuration/pom.xml index 05436c3890b..b53b2973608 100644 --- a/opendaylight/md-sal/samples/clustering-test-app/configuration/pom.xml +++ b/opendaylight/md-sal/samples/clustering-test-app/configuration/pom.xml @@ -11,13 +11,13 @@ org.opendaylight.odlparent odlparent-lite - 13.1.3 + 13.1.5 org.opendaylight.controller.samples clustering-it-config - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT jar diff --git a/opendaylight/md-sal/samples/clustering-test-app/karaf-cli/pom.xml b/opendaylight/md-sal/samples/clustering-test-app/karaf-cli/pom.xml index 49fde6a253e..35c3301fa49 100644 --- a/opendaylight/md-sal/samples/clustering-test-app/karaf-cli/pom.xml +++ b/opendaylight/md-sal/samples/clustering-test-app/karaf-cli/pom.xml @@ -12,7 +12,7 @@ mdsal-parent org.opendaylight.controller - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../../../parent/pom.xml 4.0.0 diff --git a/opendaylight/md-sal/samples/clustering-test-app/model/pom.xml b/opendaylight/md-sal/samples/clustering-test-app/model/pom.xml index ba4a8449258..3259b13d3e4 100644 --- a/opendaylight/md-sal/samples/clustering-test-app/model/pom.xml +++ b/opendaylight/md-sal/samples/clustering-test-app/model/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller mdsal-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../../../parent diff --git a/opendaylight/md-sal/samples/clustering-test-app/pom.xml b/opendaylight/md-sal/samples/clustering-test-app/pom.xml index 0a4ba44d370..c7e93347231 100644 --- a/opendaylight/md-sal/samples/clustering-test-app/pom.xml +++ b/opendaylight/md-sal/samples/clustering-test-app/pom.xml @@ -4,13 +4,13 @@ org.opendaylight.odlparent odlparent-lite - 13.1.3 + 13.1.5 org.opendaylight.controller.samples clustering-test-app - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT pom diff --git a/opendaylight/md-sal/samples/clustering-test-app/provider/pom.xml b/opendaylight/md-sal/samples/clustering-test-app/provider/pom.xml index 660cddf1f14..7777c3cf4a4 100644 --- a/opendaylight/md-sal/samples/clustering-test-app/provider/pom.xml +++ b/opendaylight/md-sal/samples/clustering-test-app/provider/pom.xml @@ -4,7 +4,7 @@ org.opendaylight.controller mdsal-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../../../parent diff --git a/opendaylight/md-sal/samples/pom.xml b/opendaylight/md-sal/samples/pom.xml index 1c696664b0c..303ae255efa 100644 --- a/opendaylight/md-sal/samples/pom.xml +++ b/opendaylight/md-sal/samples/pom.xml @@ -4,13 +4,13 @@ org.opendaylight.odlparent odlparent-lite - 13.1.3 + 13.1.5 org.opendaylight.controller.samples samples-aggregator - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT pom diff --git a/opendaylight/md-sal/samples/toaster-consumer/pom.xml b/opendaylight/md-sal/samples/toaster-consumer/pom.xml index 41eebef5541..16af7e02ebc 100644 --- a/opendaylight/md-sal/samples/toaster-consumer/pom.xml +++ b/opendaylight/md-sal/samples/toaster-consumer/pom.xml @@ -4,7 +4,7 @@ org.opendaylight.controller mdsal-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../../parent diff --git a/opendaylight/md-sal/samples/toaster-it/pom.xml b/opendaylight/md-sal/samples/toaster-it/pom.xml index 3fd393f8e0a..6d77455a96f 100644 --- a/opendaylight/md-sal/samples/toaster-it/pom.xml +++ b/opendaylight/md-sal/samples/toaster-it/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller mdsal-it-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../../mdsal-it-parent sample-toaster-it diff --git a/opendaylight/md-sal/samples/toaster-provider/pom.xml b/opendaylight/md-sal/samples/toaster-provider/pom.xml index 294309f300e..2f9e77a8c29 100644 --- a/opendaylight/md-sal/samples/toaster-provider/pom.xml +++ b/opendaylight/md-sal/samples/toaster-provider/pom.xml @@ -4,7 +4,7 @@ org.opendaylight.controller mdsal-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../../parent diff --git a/opendaylight/md-sal/samples/toaster/pom.xml b/opendaylight/md-sal/samples/toaster/pom.xml index fca5366a9a0..be80cb0dd94 100644 --- a/opendaylight/md-sal/samples/toaster/pom.xml +++ b/opendaylight/md-sal/samples/toaster/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.controller mdsal-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../../parent diff --git a/pom.xml b/pom.xml index 89c52782bbc..e3a17e2730a 100644 --- a/pom.xml +++ b/pom.xml @@ -4,13 +4,13 @@ org.opendaylight.odlparent odlparent-lite - 13.1.3 + 13.1.5 org.opendaylight.controller releasepom - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT pom controller diff --git a/raft-journal/pom.xml b/raft-journal/pom.xml index 73e52cb9d77..4eb8675a5d3 100644 --- a/raft-journal/pom.xml +++ b/raft-journal/pom.xml @@ -20,7 +20,7 @@ org.opendaylight.controller bundle-parent - 9.0.4-SNAPSHOT + 9.0.7-SNAPSHOT ../bundle-parent diff --git a/raft-journal/src/main/java/module-info.java b/raft-journal/src/main/java/module-info.java index 5cbf7253027..90c3cdc83ee 100644 --- a/raft-journal/src/main/java/module-info.java +++ b/raft-journal/src/main/java/module-info.java @@ -17,6 +17,9 @@ exports org.opendaylight.controller.raft.journal; requires transitive io.netty.buffer; + // TODO: ByteBuf implements ReferenceCounted and therefore netty-buffer + // should contain this + requires transitive io.netty.common; // Annotations requires static transitive org.eclipse.jdt.annotation;