Uploaded image for project: 'controller'
  1. controller
  2. CONTROLLER-1626

Add an option to allow CDS FE to start its generation counting from non-zero

XMLWordPrintable

    • Icon: Improvement Improvement
    • Resolution: Done
    • Magnesium, Neon SR3, Sodium SR2
    • None
    • clustering
    • None
    • Operating System: All
      Platform: All

      Pre-Carbon clustering was allowing this accidentally.

      The new client-backend datastore implementation generally runs into RetiredGenerationException instead.
      See failure in csit [0] when journal and snapshots directories are deleted before re-start.
      The exceptions from log [1]:

      2017-04-02 05:06:03,789 | WARN | ote-dispatcher-7 | AbstractShardBackendResolver | 206 - org.opendaylight.controller.sal-distributed-datastore - 1.5.0.SNAPSHOT | Failed to resolve shard
       java.util.concurrent.CompletionException: org.opendaylight.controller.cluster.access.concepts.RetiredGenerationException: Originating generation was superseded by 2
       at java.util.concurrent.CompletableFuture.encodeRelay(CompletableFuture.java:326)
       at java.util.concurrent.CompletableFuture.completeRelay(CompletableFuture.java:338)
       at java.util.concurrent.CompletableFuture.uniRelay(CompletableFuture.java:911)
       at java.util.concurrent.CompletableFuture$UniRelay.tryFire(CompletableFuture.java:899)
       at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474)
       at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1977)
       at scala.concurrent.java8.FuturesConvertersImpl$CF.apply(FutureConvertersImpl.scala:21)
       at scala.concurrent.java8.FuturesConvertersImpl$CF.apply(FutureConvertersImpl.scala:18)
       at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)
       at scala.concurrent.BatchingExecutor$Batch$$anonfun$run$1.processBatch$1(BatchingExecutor.scala:63)
       at scala.concurrent.BatchingExecutor$Batch$$anonfun$run$1.apply$mcV$sp(BatchingExecutor.scala:78)
       at scala.concurrent.BatchingExecutor$Batch$$anonfun$run$1.apply(BatchingExecutor.scala:55)
       at scala.concurrent.BatchingExecutor$Batch$$anonfun$run$1.apply(BatchingExecutor.scala:55)
       at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:72)
       at scala.concurrent.BatchingExecutor$Batch.run(BatchingExecutor.scala:54)
       at scala.concurrent.Future$InternalCallbackExecutor$.unbatchedExecute(Future.scala:601)
       at scala.concurrent.BatchingExecutor$class.execute(BatchingExecutor.scala:106)
       at scala.concurrent.Future$InternalCallbackExecutor$.execute(Future.scala:599)
       at scala.concurrent.impl.CallbackRunnable.executeWithValue(Promise.scala:40)
       at scala.concurrent.impl.Promise$DefaultPromise.tryComplete(Promise.scala:248)
       at akka.pattern.PromiseActorRef.$bang(AskSupport.scala:534)
       at akka.remote.DefaultMessageDispatcher.dispatch(Endpoint.scala:97)
       at akka.remote.EndpointReader$$anonfun$receive$2.applyOrElse(Endpoint.scala:988)
       at akka.actor.Actor$class.aroundReceive(Actor.scala:497)
       at akka.remote.EndpointActor.aroundReceive(Endpoint.scala:452)
       at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526)
       at akka.actor.ActorCell.invoke(ActorCell.scala:495)
       at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)
       at akka.dispatch.Mailbox.run(Mailbox.scala:224)
       at akka.dispatch.Mailbox.exec(Mailbox.scala:234)
       at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
       at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
       at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
       at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
       Caused by: org.opendaylight.controller.cluster.access.concepts.RetiredGenerationException: Originating generation was superseded by 2
       at org.opendaylight.controller.cluster.datastore.Shard.getFrontend(Shard.java:390)
       at org.opendaylight.controller.cluster.datastore.Shard.handleConnectClient(Shard.java:428)
       at org.opendaylight.controller.cluster.datastore.Shard.handleNonRaftCommand(Shard.java:296)
       at org.opendaylight.controller.cluster.raft.RaftActor.handleCommand(RaftActor.java:272)
       at org.opendaylight.controller.cluster.common.actor.AbstractUntypedPersistentActor.onReceiveCommand(AbstractUntypedPersistentActor.java:31)
       at akka.persistence.UntypedPersistentActor.onReceive(PersistentActor.scala:170)
       at org.opendaylight.controller.cluster.common.actor.MeteringBehavior.apply(MeteringBehavior.java:104)
       at akka.actor.ActorCell$$anonfun$become$1.applyOrElse(ActorCell.scala:544)
       at akka.actor.Actor$class.aroundReceive(Actor.scala:497)
       at akka.persistence.UntypedPersistentActor.akka$persistence$Eventsourced$$super$aroundReceive(PersistentActor.scala:168)
       at akka.persistence.Eventsourced$$anon$1.stateReceive(Eventsourced.scala:664)
       at akka.persistence.Eventsourced$class.aroundReceive(Eventsourced.scala:183)
       at akka.persistence.UntypedPersistentActor.aroundReceive(PersistentActor.scala:168)
       ... 9 more
       2017-04-02 05:06:03,801 | ERROR | ult-dispatcher-2 | ClientActorBehavior | 204 - org.opendaylight.controller.cds-access-client - 1.1.0.SNAPSHOT | member-1-frontend-datastore-Shard-prefix-configuration-shard: failed to resolve shard 0
       java.util.concurrent.CompletionException: org.opendaylight.controller.cluster.access.concepts.RetiredGenerationException: Originating generation was superseded by 2
       at java.util.concurrent.CompletableFuture.encodeRelay(CompletableFuture.java:326)
       at java.util.concurrent.CompletableFuture.completeRelay(CompletableFuture.java:338)
       at java.util.concurrent.CompletableFuture.uniRelay(CompletableFuture.java:911)
       at java.util.concurrent.CompletableFuture$UniRelay.tryFire(CompletableFuture.java:899)
       at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474)
       at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1977)
       at scala.concurrent.java8.FuturesConvertersImpl$CF.apply(FutureConvertersImpl.scala:21)
       at scala.concurrent.java8.FuturesConvertersImpl$CF.apply(FutureConvertersImpl.scala:18)
       at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)
       at scala.concurrent.BatchingExecutor$Batch$$anonfun$run$1.processBatch$1(BatchingExecutor.scala:63)
       at scala.concurrent.BatchingExecutor$Batch$$anonfun$run$1.apply$mcV$sp(BatchingExecutor.scala:78)
       at scala.concurrent.BatchingExecutor$Batch$$anonfun$run$1.apply(BatchingExecutor.scala:55)
       at scala.concurrent.BatchingExecutor$Batch$$anonfun$run$1.apply(BatchingExecutor.scala:55)
       at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:72)
       at scala.concurrent.BatchingExecutor$Batch.run(BatchingExecutor.scala:54)
       at scala.concurrent.Future$InternalCallbackExecutor$.unbatchedExecute(Future.scala:601)
       at scala.concurrent.BatchingExecutor$class.execute(BatchingExecutor.scala:106)
       at scala.concurrent.Future$InternalCallbackExecutor$.execute(Future.scala:599)
       at scala.concurrent.impl.CallbackRunnable.executeWithValue(Promise.scala:40)
       at scala.concurrent.impl.Promise$DefaultPromise.tryComplete(Promise.scala:248)
       at akka.pattern.PromiseActorRef.$bang(AskSupport.scala:534)
       at akka.remote.DefaultMessageDispatcher.dispatch(Endpoint.scala:97)
       at akka.remote.EndpointReader$$anonfun$receive$2.applyOrElse(Endpoint.scala:988)
       at akka.actor.Actor$class.aroundReceive(Actor.scala:497)
       at akka.remote.EndpointActor.aroundReceive(Endpoint.scala:452)
       at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526)
       at akka.actor.ActorCell.invoke(ActorCell.scala:495)
       at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)
       at akka.dispatch.Mailbox.run(Mailbox.scala:224)
       at akka.dispatch.Mailbox.exec(Mailbox.scala:234)
       at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
       at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
       at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
       at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
       Caused by: org.opendaylight.controller.cluster.access.concepts.RetiredGenerationException: Originating generation was superseded by 2
       at org.opendaylight.controller.cluster.datastore.Shard.getFrontend(Shard.java:390)
       at org.opendaylight.controller.cluster.datastore.Shard.handleConnectClient(Shard.java:428)
       at org.opendaylight.controller.cluster.datastore.Shard.handleNonRaftCommand(Shard.java:296)
       at org.opendaylight.controller.cluster.raft.RaftActor.handleCommand(RaftActor.java:272)
       at org.opendaylight.controller.cluster.common.actor.AbstractUntypedPersistentActor.onReceiveCommand(AbstractUntypedPersistentActor.java:31)
       at akka.persistence.UntypedPersistentActor.onReceive(PersistentActor.scala:170)
       at org.opendaylight.controller.cluster.common.actor.MeteringBehavior.apply(MeteringBehavior.java:104)
       at akka.actor.ActorCell$$anonfun$become$1.applyOrElse(ActorCell.scala:544)
       at akka.actor.Actor$class.aroundReceive(Actor.scala:497)
       at akka.persistence.UntypedPersistentActor.akka$persistence$Eventsourced$$super$aroundReceive(PersistentActor.scala:168)
       at akka.persistence.Eventsourced$$anon$1.stateReceive(Eventsourced.scala:664)
       at akka.persistence.Eventsourced$class.aroundReceive(Eventsourced.scala:183)
       at akka.persistence.UntypedPersistentActor.aroundReceive(PersistentActor.scala:168)
       ... 9 more

      [0] https://logs.opendaylight.org/releng/jenkins092/controller-csit-3node-clustering-only-carbon/620/archives/log.html.gz#s1-s5-t3-k3-k5-k1-k2-k1-k1-k2-k1-k4-k1
      [1] https://logs.opendaylight.org/releng/jenkins092/controller-csit-3node-clustering-only-carbon/620/archives/odl1_karaf.log.gz

            rovarga Robert Varga
            vrpolak Vratko Polak
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated:
              Resolved: