From a14ed47823d85d2547fbfd7e6c42649962913d34 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 13 Jan 2016 21:42:04 +0100 Subject: [PATCH] BUG-4964: Bump to akka-2.4.1 This updates the imports and adapts to API changes. Requires Java 8 to work. Also bumps netty to 3.10.5, as that is what remoting requires. Change-Id: I3a3886ac75496d07ec03ae561a6df03ecaa5ad0c Signed-off-by: Robert Varga --- features/akka/pom.xml | 135 ------------------ features/akka/src/main/features/features.xml | 49 ------- features/mdsal/pom.xml | 11 +- features/mdsal/src/main/features/features.xml | 2 +- features/pom.xml | 1 - opendaylight/commons/opendaylight/pom.xml | 75 ---------- opendaylight/md-sal/sal-akka-raft/pom.xml | 2 +- .../raft/RaftActorRecoverySupport.java | 2 +- .../cluster/raft/SnapshotManager.java | 2 +- .../cluster/raft/RaftActorTest.java | 4 +- .../cluster/raft/utils/InMemoryJournal.java | 55 ++++--- .../raft/utils/InMemorySnapshotStore.java | 53 ++++--- .../md-sal/sal-clustering-commons/pom.xml | 2 +- .../main/resources/initial/factory-akka.conf | 6 + .../md-sal/sal-distributed-datastore/pom.xml | 2 +- .../controller/cluster/datastore/Shard.java | 22 +-- .../cluster/datastore/ShardManager.java | 3 +- .../DistributedDataStoreIntegrationTest.java | 4 + .../sal-dummy-distributed-datastore/pom.xml | 2 +- .../md-sal/sal-remoterpc-connector/pom.xml | 16 +-- 20 files changed, 94 insertions(+), 354 deletions(-) delete mode 100644 features/akka/pom.xml delete mode 100644 features/akka/src/main/features/features.xml diff --git a/features/akka/pom.xml b/features/akka/pom.xml deleted file mode 100644 index b6d45018b4..0000000000 --- a/features/akka/pom.xml +++ /dev/null @@ -1,135 +0,0 @@ - - - - 4.0.0 - - org.opendaylight.odlparent - features-parent - 1.7.0-SNAPSHOT - - - features-akka - org.opendaylight.controller - 1.7.0-SNAPSHOT - pom - - features.xml - 1.3.0-SNAPSHOT - 1.7.0-SNAPSHOT - 0.9.0-SNAPSHOT - 1.7.0-SNAPSHOT - 2.16 - 2.3.14 - 2.11 - - - - - org.opendaylight.controller - commons.opendaylight - 1.7.0-SNAPSHOT - pom - import - - - - - - org.scala-lang - scala-library - - - org.scala-lang - scala-reflect - - - com.typesafe - config - - - com.typesafe.akka - akka-actor_${scala.version} - - - com.typesafe.akka - akka-slf4j_${scala.version} - - - com.typesafe.akka - akka-osgi_${scala.version} - - - org.uncommons.maths - uncommons-maths - - - jfree - jcommon - - - jfree - jfreechart - - - - - com.google.protobuf - protobuf-java - - - io.netty - netty - 3.9.9.Final - - - com.typesafe.akka - akka-remote_${scala.version} - - - com.typesafe.akka - akka-cluster_${scala.version} - - - org.iq80.leveldb - leveldb - - - org.fusesource.leveldbjni - leveldbjni-all - - - - org.opendaylight.odlparent - features-test - test - - - - org.opendaylight.controller - opendaylight-karaf-empty - ${karaf.empty.version} - test - zip - - - - - - scm:git:http://git.opendaylight.org/gerrit/controller.git - scm:git:ssh://git.opendaylight.org:29418/controller.git - HEAD - https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=summary - - diff --git a/features/akka/src/main/features/features.xml b/features/akka/src/main/features/features.xml deleted file mode 100644 index f0f004eb39..0000000000 --- a/features/akka/src/main/features/features.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - odl-akka-scala - odl-akka-system - odl-akka-clustering - odl-akka-leveldb - odl-akka-persistence - - - mvn:org.scala-lang/scala-library/{{VERSION}} - mvn:org.scala-lang/scala-reflect/{{VERSION}} - - - odl-akka-scala - mvn:com.typesafe/config/{{VERSION}} - mvn:com.typesafe.akka/akka-actor_${scala.version}/${akka.version} - mvn:com.typesafe.akka/akka-slf4j_${scala.version}/${akka.version} - mvn:com.typesafe.akka/akka-osgi_${scala.version}/${akka.version} - - - odl-akka-system - wrap:mvn:org.uncommons.maths/uncommons-maths/{{VERSION}} - mvn:com.google.protobuf/protobuf-java/{{VERSION}} - mvn:io.netty/netty/{{VERSION}} - mvn:com.typesafe.akka/akka-remote_${scala.version}/${akka.version} - mvn:com.typesafe.akka/akka-cluster_${scala.version}/${akka.version} - - - wrap:mvn:org.iq80.leveldb/leveldb/{{VERSION}} - mvn:org.fusesource.leveldbjni/leveldbjni-all/{{VERSION}} - - - odl-akka-leveldb - odl-akka-system - mvn:com.typesafe.akka/akka-persistence-experimental_${scala.version}/${akka.version} - wrap:mvn:com.google.protobuf/protobuf-java/{{VERSION}}$overwrite=merge&DynamicImport-Package=org.opendaylight.controller.protobuff.messages.*;org.opendaylight.controller.cluster.raft.protobuff.client.messages.* - - diff --git a/features/mdsal/pom.xml b/features/mdsal/pom.xml index f609923a28..5d31ea2757 100644 --- a/features/mdsal/pom.xml +++ b/features/mdsal/pom.xml @@ -21,7 +21,8 @@ 1.4.0-SNAPSHOT 0.5.0-SNAPSHOT 1.7.0-SNAPSHOT - 2.3.14 + 1.7.0-SNAPSHOT + 2.4.1 features.xml etc/opendaylight/karaf 05-clustering.xml @@ -101,9 +102,9 @@ xml - org.opendaylight.controller + org.opendaylight.odlparent features-akka - ${commons.opendaylight.version} + ${akka.features.version} features xml @@ -255,6 +256,10 @@ org.opendaylight.controller sal-distributed-datastore + + org.opendaylight.controller + sal-dom-broker-config + diff --git a/features/mdsal/src/main/features/features.xml b/features/mdsal/src/main/features/features.xml index 0bbc06b3df..0dadd3f8b5 100644 --- a/features/mdsal/src/main/features/features.xml +++ b/features/mdsal/src/main/features/features.xml @@ -13,7 +13,7 @@ mvn:org.opendaylight.controller/features-config/{{VERSION}}/xml/features mvn:org.opendaylight.controller/features-config-persister/{{VERSION}}/xml/features mvn:org.opendaylight.controller/features-config-netty/{{VERSION}}/xml/features - mvn:org.opendaylight.controller/features-akka/{{VERSION}}/xml/features + mvn:org.opendaylight.odlparent/features-akka/{{VERSION}}/xml/features odl-mdsal-broker odl-mdsal-broker-local diff --git a/features/pom.xml b/features/pom.xml index 6300546c0d..b580e8e62e 100644 --- a/features/pom.xml +++ b/features/pom.xml @@ -16,7 +16,6 @@ config-netty mdsal protocol-framework - akka extras benchmark diff --git a/opendaylight/commons/opendaylight/pom.xml b/opendaylight/commons/opendaylight/pom.xml index 23033f58ad..35b333e85b 100644 --- a/opendaylight/commons/opendaylight/pom.xml +++ b/opendaylight/commons/opendaylight/pom.xml @@ -16,7 +16,6 @@ 2.1.0-SNAPSHOT 0.9.0-SNAPSHOT - 2.3.14 0.7.0-SNAPSHOT 0.3.0-SNAPSHOT 0.8.0-SNAPSHOT @@ -91,8 +90,6 @@ 0.3.0-SNAPSHOT 1.3.0-SNAPSHOT ${karaf.version} - 0.7 - 1.8-odl 1.0.0 0.7.0-SNAPSHOT 3.0.5 @@ -105,7 +102,6 @@ 1.7.0-SNAPSHOT 2013.08.27.9-SNAPSHOT 0.3.0-SNAPSHOT - 2.5.0 0.8.0-SNAPSHOT 0.7.0-SNAPSHOT 0.7.0-SNAPSHOT @@ -119,8 +115,6 @@ 0.7.0-SNAPSHOT 0.7.0-SNAPSHOT 0.7.0-SNAPSHOT - 2.11 - 7 0.7.0-SNAPSHOT 0.7.0-SNAPSHOT dav:http://nexus.opendaylight.org/content/sites/site @@ -145,7 +139,6 @@ 0.7.0-SNAPSHOT 1.3.0-SNAPSHOT 0.7.0-SNAPSHOT - 1.2.2a 0.7.0-SNAPSHOT 0.3.0-SNAPSHOT 0.7.0-SNAPSHOT @@ -231,44 +224,6 @@ provided - - com.typesafe.akka - akka-actor_${scala.version} - ${akka.version} - - - - com.typesafe.akka - akka-cluster_${scala.version} - ${akka.version} - - - - com.typesafe.akka - akka-persistence-experimental_${scala.version} - ${akka.version} - - - - com.typesafe.akka - akka-remote_${scala.version} - ${akka.version} - - - com.typesafe.akka - akka-testkit_${scala.version} - ${akka.version} - - - com.typesafe.akka - akka-osgi_${scala.version} - ${akka.version} - - - com.typesafe.akka - akka-slf4j_${scala.version} - ${akka.version} - net.sourceforge.pmd pmd @@ -279,26 +234,6 @@ gmaven-runtime-2.0 1.5 - - org.uncommons.maths - uncommons-maths - ${uncommons.maths.version} - - - com.google.protobuf - protobuf-java - ${protobuf.version} - - - org.iq80.leveldb - leveldb - ${leveldb.version} - - - org.fusesource.leveldbjni - leveldbjni-all - ${leveldbjni.version} - @@ -758,16 +693,6 @@ reflections 0.9.9-RC1 - - org.scala-lang - scala-library - ${scala.version}.${scala.micro.version} - - - org.scala-lang - scala-reflect - ${scala.version}.${scala.micro.version} - org.opendaylight.controller commons.logback_settings diff --git a/opendaylight/md-sal/sal-akka-raft/pom.xml b/opendaylight/md-sal/sal-akka-raft/pom.xml index 7049509358..6e73dde1fb 100644 --- a/opendaylight/md-sal/sal-akka-raft/pom.xml +++ b/opendaylight/md-sal/sal-akka-raft/pom.xml @@ -31,7 +31,7 @@ com.typesafe.akka - akka-persistence-experimental_${scala.version} + akka-persistence_${scala.version} diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActorRecoverySupport.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActorRecoverySupport.java index d4f6247855..923e1f1c0d 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActorRecoverySupport.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActorRecoverySupport.java @@ -95,7 +95,7 @@ class RaftActorRecoverySupport { // Delete all the akka snapshots as they will not be needed persistentProvider.deleteSnapshots(new SnapshotSelectionCriteria(scala.Long.MaxValue(), - scala.Long.MaxValue())); + scala.Long.MaxValue(), 0L, 0L)); // Since we cleaned out the journal, we need to re-write the current election info. context.getTermInformation().updateAndPersist(context.getTermInformation().getCurrentTerm(), diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/SnapshotManager.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/SnapshotManager.java index cffd422222..197fa86715 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/SnapshotManager.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/SnapshotManager.java @@ -407,7 +407,7 @@ public class SnapshotManager implements SnapshotState { } context.getPersistenceProvider().deleteSnapshots(new SnapshotSelectionCriteria( - sequenceNumber - context.getConfigParams().getSnapshotBatchCount(), Long.MAX_VALUE)); + sequenceNumber - context.getConfigParams().getSnapshotBatchCount(), Long.MAX_VALUE, 0L, 0L)); context.getPersistenceProvider().deleteMessages(lastSequenceNumber); diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorTest.java index 624369b84f..d37681e872 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorTest.java @@ -365,11 +365,11 @@ public class RaftActorTest extends AbstractActorTest { doReturn(true).when(mockSupport).handleSnapshotMessage(same(captureSnapshotReply), any(ActorRef.class)); mockRaftActor.handleCommand(captureSnapshotReply); - SaveSnapshotSuccess saveSnapshotSuccess = new SaveSnapshotSuccess(mock(SnapshotMetadata.class)); + SaveSnapshotSuccess saveSnapshotSuccess = new SaveSnapshotSuccess(new SnapshotMetadata("", 0L, 0L)); doReturn(true).when(mockSupport).handleSnapshotMessage(same(saveSnapshotSuccess), any(ActorRef.class)); mockRaftActor.handleCommand(saveSnapshotSuccess); - SaveSnapshotFailure saveSnapshotFailure = new SaveSnapshotFailure(mock(SnapshotMetadata.class), new Throwable()); + SaveSnapshotFailure saveSnapshotFailure = new SaveSnapshotFailure(new SnapshotMetadata("", 0L, 0L), new Throwable()); doReturn(true).when(mockSupport).handleSnapshotMessage(same(saveSnapshotFailure), any(ActorRef.class)); mockRaftActor.handleCommand(saveSnapshotFailure); diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/utils/InMemoryJournal.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/utils/InMemoryJournal.java index 31894991e8..790952883d 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/utils/InMemoryJournal.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/utils/InMemoryJournal.java @@ -8,9 +8,7 @@ package org.opendaylight.controller.cluster.raft.utils; import akka.dispatch.Futures; -import akka.japi.Procedure; -import akka.persistence.PersistentConfirmation; -import akka.persistence.PersistentId; +import akka.persistence.AtomicWrite; import akka.persistence.PersistentImpl; import akka.persistence.PersistentRepr; import akka.persistence.journal.japi.AsyncWriteJournal; @@ -22,10 +20,12 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.concurrent.Callable; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; +import java.util.function.Consumer; import org.apache.commons.lang.SerializationUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -148,7 +148,9 @@ public class InMemoryJournal extends AsyncWriteJournal { @Override public Future doAsyncReplayMessages(final String persistenceId, final long fromSequenceNr, - final long toSequenceNr, final long max, final Procedure replayCallback) { + final long toSequenceNr, final long max, final Consumer replayCallback) { + LOG.trace("doAsyncReplayMessages for {}: fromSequenceNr: {}, toSequenceNr: {}", persistenceId, + fromSequenceNr,toSequenceNr); return Futures.future(new Callable() { @Override public Void call() throws Exception { @@ -168,8 +170,8 @@ public class InMemoryJournal extends AsyncWriteJournal { if (++count <= max && entry.getKey() >= fromSequenceNr && entry.getKey() <= toSequenceNr) { PersistentRepr persistentMessage = new PersistentImpl(deserialize(entry.getValue()), entry.getKey(), persistenceId, - false, null, null); - replayCallback.apply(persistentMessage); + null, false, null, null); + replayCallback.accept(persistentMessage); } } } @@ -181,6 +183,8 @@ public class InMemoryJournal extends AsyncWriteJournal { @Override public Future doAsyncReadHighestSequenceNr(String persistenceId, long fromSequenceNr) { + LOG.trace("doAsyncReadHighestSequenceNr for {}: fromSequenceNr: {}", persistenceId, fromSequenceNr); + // Akka calls this during recovery. Map journal = journals.get(persistenceId); if(journal == null) { @@ -200,41 +204,36 @@ public class InMemoryJournal extends AsyncWriteJournal { } @Override - public Future doAsyncWriteMessages(final Iterable messages) { - return Futures.future(new Callable() { + public Future>> doAsyncWriteMessages(final Iterable messages) { + return Futures.future(new Callable>>() { @Override - public Void call() throws Exception { - for (PersistentRepr repr : messages) { - LOG.trace("doAsyncWriteMessages: id: {}: seqNr: {}, payload: {}", repr.persistenceId(), + public Iterable> call() throws Exception { + for (AtomicWrite write : messages) { + // Copy to array - workaround for eclipse "ambiguous method" errors for toIterator, toIterable etc + PersistentRepr[] array = new PersistentRepr[write.payload().size()]; + write.payload().copyToArray(array); + for(PersistentRepr repr: array) { + LOG.trace("doAsyncWriteMessages: id: {}: seqNr: {}, payload: {}", repr.persistenceId(), repr.sequenceNr(), repr.payload()); - addEntry(repr.persistenceId(), repr.sequenceNr(), repr.payload()); + addEntry(repr.persistenceId(), repr.sequenceNr(), repr.payload()); - WriteMessagesComplete complete = writeMessagesComplete.get(repr.persistenceId()); - if(complete != null) { - if(complete.ofType == null || complete.ofType.equals(repr.payload().getClass())) { - complete.latch.countDown(); + WriteMessagesComplete complete = writeMessagesComplete.get(repr.persistenceId()); + if(complete != null) { + if(complete.ofType == null || complete.ofType.equals(repr.payload().getClass())) { + complete.latch.countDown(); + } } } } - return null; + return Collections.emptyList(); } }, context().dispatcher()); } @Override - public Future doAsyncWriteConfirmations(Iterable confirmations) { - return Futures.successful(null); - } - - @Override - public Future doAsyncDeleteMessages(Iterable messageIds, boolean permanent) { - return Futures.successful(null); - } - - @Override - public Future doAsyncDeleteMessagesTo(String persistenceId, long toSequenceNr, boolean permanent) { + public Future doAsyncDeleteMessagesTo(String persistenceId, long toSequenceNr) { LOG.trace("doAsyncDeleteMessagesTo: {}", toSequenceNr); Map journal = journals.get(persistenceId); if(journal != null) { diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/utils/InMemorySnapshotStore.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/utils/InMemorySnapshotStore.java index bf13089735..a7e751c23e 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/utils/InMemorySnapshotStore.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/utils/InMemorySnapshotStore.java @@ -9,7 +9,6 @@ package org.opendaylight.controller.cluster.raft.utils; import akka.dispatch.Futures; -import akka.japi.Option; import akka.persistence.SelectedSnapshot; import akka.persistence.SnapshotMetadata; import akka.persistence.SnapshotSelectionCriteria; @@ -21,6 +20,7 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; @@ -102,24 +102,24 @@ public class InMemorySnapshotStore extends SnapshotStore { } @Override - public Future> doLoadAsync(String persistenceId, + public Future> doLoadAsync(String persistenceId, SnapshotSelectionCriteria snapshotSelectionCriteria) { List snapshotList = snapshots.get(persistenceId); if(snapshotList == null){ - return Futures.successful(Option.none()); + return Futures.successful(Optional.empty()); } synchronized(snapshotList) { for(int i = snapshotList.size() - 1; i >= 0; i--) { StoredSnapshot snapshot = snapshotList.get(i); if(matches(snapshot, snapshotSelectionCriteria)) { - return Futures.successful(Option.some(new SelectedSnapshot(snapshot.metadata, + return Futures.successful(Optional.of(new SelectedSnapshot(snapshot.metadata, snapshot.data))); } } } - return Futures.successful(Option.none()); + return Futures.successful(Optional.empty()); } private static boolean matches(StoredSnapshot snapshot, SnapshotSelectionCriteria criteria) { @@ -151,41 +151,36 @@ public class InMemorySnapshotStore extends SnapshotStore { } @Override - public void onSaved(SnapshotMetadata snapshotMetadata) throws Exception { - } + public Future doDeleteAsync(SnapshotMetadata metadata) { + List snapshotList = snapshots.get(metadata.persistenceId()); - @Override - public void doDelete(SnapshotMetadata snapshotMetadata) throws Exception { - List snapshotList = snapshots.get(snapshotMetadata.persistenceId()); - - if(snapshotList == null){ - return; - } - - synchronized (snapshotList) { - for(int i=0;i doDeleteAsync(String persistenceId, SnapshotSelectionCriteria criteria) { + LOG.trace("doDelete: persistentId {}: maxSequenceNr: {}: maxTimestamp {}", persistenceId, + criteria.maxSequenceNr(), criteria.maxTimestamp()); - List snapshotList = snapshots.get(persistentId); + List snapshotList = snapshots.get(persistenceId); if(snapshotList != null){ synchronized (snapshotList) { Iterator iter = snapshotList.iterator(); while(iter.hasNext()) { StoredSnapshot s = iter.next(); - if(matches(s, snapshotSelectionCriteria)) { + if(matches(s, criteria)) { LOG.trace("Deleting snapshot for sequenceNr: {}, timestamp: {}: {}", s.metadata.sequenceNr(), s.metadata.timestamp(), s.data); @@ -195,10 +190,12 @@ public class InMemorySnapshotStore extends SnapshotStore { } } - CountDownLatch latch = snapshotDeletedLatches.get(persistentId); + CountDownLatch latch = snapshotDeletedLatches.get(persistenceId); if(latch != null) { latch.countDown(); } + + return Futures.successful(null); } private static class StoredSnapshot { diff --git a/opendaylight/md-sal/sal-clustering-commons/pom.xml b/opendaylight/md-sal/sal-clustering-commons/pom.xml index 5e2cb6e4be..431f3bed34 100644 --- a/opendaylight/md-sal/sal-clustering-commons/pom.xml +++ b/opendaylight/md-sal/sal-clustering-commons/pom.xml @@ -55,7 +55,7 @@ com.typesafe.akka - akka-persistence-experimental_${scala.version} + akka-persistence_${scala.version} com.typesafe.akka diff --git a/opendaylight/md-sal/sal-clustering-config/src/main/resources/initial/factory-akka.conf b/opendaylight/md-sal/sal-clustering-config/src/main/resources/initial/factory-akka.conf index eb4903e552..9d80299618 100644 --- a/opendaylight/md-sal/sal-clustering-config/src/main/resources/initial/factory-akka.conf +++ b/opendaylight/md-sal/sal-clustering-config/src/main/resources/initial/factory-akka.conf @@ -34,6 +34,7 @@ odl-cluster-data { logger-startup-timeout = 300s actor { + warn-about-java-serializer-usage = off provider = "akka.cluster.ClusterActorRefProvider" serializers { java = "akka.serialization.JavaSerializer" @@ -81,5 +82,10 @@ odl-cluster-data { ] } + + persistence { + journal.plugin = akka.persistence.journal.leveldb + snapshot-store.plugin = akka.persistence.snapshot-store.local + } } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/pom.xml b/opendaylight/md-sal/sal-distributed-datastore/pom.xml index f21aa5a3f7..935af23cae 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/pom.xml +++ b/opendaylight/md-sal/sal-distributed-datastore/pom.xml @@ -47,7 +47,7 @@ com.typesafe.akka - akka-persistence-experimental_${scala.version} + akka-persistence_${scala.version} com.typesafe.akka diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/Shard.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/Shard.java index 1c0a5b5dec..439c2baac8 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/Shard.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/Shard.java @@ -12,7 +12,6 @@ import akka.actor.ActorRef; import akka.actor.ActorSelection; import akka.actor.Cancellable; import akka.actor.Props; -import akka.persistence.RecoveryFailure; import akka.serialization.Serialization; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Optional; @@ -195,23 +194,12 @@ public class Shard extends RaftActor { @Override public void onReceiveRecover(final Object message) throws Exception { - if(LOG.isDebugEnabled()) { - LOG.debug("{}: onReceiveRecover: Received message {} from {}", persistenceId(), - message.getClass().toString(), getSender()); - } - - if (message instanceof RecoveryFailure){ - LOG.error("{}: Recovery failed because of this cause", - persistenceId(), ((RecoveryFailure) message).cause()); + LOG.debug("{}: onReceiveRecover: Received message {} from {}", persistenceId(), message.getClass(), + getSender()); - // Even though recovery failed, we still need to finish our recovery, eg send the - // ActorInitialized message and start the txCommitTimeoutCheckSchedule. - onRecoveryComplete(); - } else { - super.onReceiveRecover(message); - if(LOG.isTraceEnabled()) { - appendEntriesReplyTracker.begin(); - } + super.onReceiveRecover(message); + if (LOG.isTraceEnabled()) { + appendEntriesReplyTracker.begin(); } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardManager.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardManager.java index 8ef3f6f9fe..aec94ec080 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardManager.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardManager.java @@ -1275,7 +1275,8 @@ public class ShardManager extends AbstractUntypedPersistentActorWithMetering { private void onSaveSnapshotSuccess (SaveSnapshotSuccess successMessage) { LOG.debug ("{} saved ShardManager snapshot successfully. Deleting the prev snapshot if available", persistenceId()); - deleteSnapshots(new SnapshotSelectionCriteria(scala.Long.MaxValue(), (successMessage.metadata().timestamp() - 1))); + deleteSnapshots(new SnapshotSelectionCriteria(scala.Long.MaxValue(), successMessage.metadata().timestamp() - 1, + 0, 0)); } private static class ForwardedAddServerReply { diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreIntegrationTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreIntegrationTest.java index 084dc828c7..7b78da2923 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreIntegrationTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreIntegrationTest.java @@ -497,6 +497,8 @@ public class DistributedDataStoreIntegrationTest { CountDownLatch blockRecoveryLatch = new CountDownLatch(1); InMemoryJournal.addBlockReadMessagesLatch(persistentID, blockRecoveryLatch); + InMemoryJournal.addEntry(persistentID, 1, "Dummy data so akka will read from persistence"); + DistributedDataStore dataStore = setupDistributedDataStore(testName, false, shardName); // Create the write Tx @@ -567,6 +569,8 @@ public class DistributedDataStoreIntegrationTest { CountDownLatch blockRecoveryLatch = new CountDownLatch(1); InMemoryJournal.addBlockReadMessagesLatch(persistentID, blockRecoveryLatch); + InMemoryJournal.addEntry(persistentID, 1, "Dummy data so akka will read from persistence"); + DistributedDataStore dataStore = setupDistributedDataStore(testName, false, shardName); // Create the read-write Tx diff --git a/opendaylight/md-sal/sal-dummy-distributed-datastore/pom.xml b/opendaylight/md-sal/sal-dummy-distributed-datastore/pom.xml index 7ac21543d6..0ea13fad68 100644 --- a/opendaylight/md-sal/sal-dummy-distributed-datastore/pom.xml +++ b/opendaylight/md-sal/sal-dummy-distributed-datastore/pom.xml @@ -27,7 +27,7 @@ com.typesafe.akka - akka-persistence-experimental_${scala.version} + akka-persistence_${scala.version} diff --git a/opendaylight/md-sal/sal-remoterpc-connector/pom.xml b/opendaylight/md-sal/sal-remoterpc-connector/pom.xml index b89c04f3e8..8958dd8df1 100644 --- a/opendaylight/md-sal/sal-remoterpc-connector/pom.xml +++ b/opendaylight/md-sal/sal-remoterpc-connector/pom.xml @@ -39,15 +39,15 @@ akka-osgi_${scala.version} - - com.typesafe.akka - akka-slf4j_${scala.version} - + + com.typesafe.akka + akka-slf4j_${scala.version} + - - com.typesafe.akka - akka-persistence-experimental_${scala.version} - + + com.typesafe.akka + akka-persistence_${scala.version} + -- 2.36.6