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

Inject DataBroker only when all shards have leaders

XMLWordPrintable

    • Icon: Task Task
    • Resolution: Done
    • Icon: Medium Medium
    • 2.0.4
    • None
    • clustering
    • None

      We are hitting an issue in genius on stable/oxygen, where randomly idmanager-impl bundle does not come up, as the datastore read in the blueprint initialization code was failing with NoShardLeaderException.

      https://lists.opendaylight.org/pipermail/genius-dev/2019-January/003554.html

      While applications work on putting propoer failure handling, was thinking it would be better if dataBroker is injected only when all shards have leaders, than having a 2 min timeout.

       

      ODL :: genius :: idmanager-impl (260)

      -------------------------------------

      Status: Failure

      Blueprint

      1/8/19 10:47 AM

      Exception:

       

      org.osgi.service.blueprint.container.ComponentDefinitionException: Error when instantiating bean idManager of class org.opendaylight.genius.idmanager.IdManager
      org.osgi.service.blueprint.container.ComponentDefinitionException: org.osgi.service.blueprint.container.ComponentDefinitionException: Error when instantiating bean idManager of class org.opendaylight.genius.idmanager.IdManager
                      at org.apache.aries.blueprint.container.ServiceRecipe.createService(ServiceRecipe.java:310)
                      at org.apache.aries.blueprint.container.ServiceRecipe.internalGetService(ServiceRecipe.java:252)
                      at org.apache.aries.blueprint.container.ServiceRecipe.internalCreate(ServiceRecipe.java:149)
                      at org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)
                      at java.util.concurrent.FutureTask.run(FutureTask.java:266)
                      at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)
                      at org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:255)
                      at org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:186)
                      at org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:704)
                      at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:410)
                      at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:275)
                      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
                      at java.util.concurrent.FutureTask.run(FutureTask.java:266)
                      at org.apache.aries.blueprint.container.ExecutorServiceWrapper.run(ExecutorServiceWrapper.java:106)
                      at org.apache.aries.blueprint.utils.threading.impl.DiscardableRunnable.run(DiscardableRunnable.java:48)
                      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
                      at java.util.concurrent.FutureTask.run(FutureTask.java:266)
                      at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
                      at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
                      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
                      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
                      at java.lang.Thread.run(Thread.java:748)
      Caused by: org.osgi.service.blueprint.container.ComponentDefinitionException: Error when instantiating bean idManager of class org.opendaylight.genius.idmanager.IdManager
                      at org.apache.aries.blueprint.container.BeanRecipe.wrapAsCompDefEx(BeanRecipe.java:361)
                      at org.apache.aries.blueprint.container.BeanRecipe.getInstanceFromType(BeanRecipe.java:351)
                      at org.apache.aries.blueprint.container.BeanRecipe.getInstance(BeanRecipe.java:282)
                      at org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:830)
                      at org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:811)
                      at org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)
                      at java.util.concurrent.FutureTask.run(FutureTask.java:266)
                      at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)
                      at org.apache.aries.blueprint.di.RefRecipe.internalCreate(RefRecipe.java:62)
                      at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:106)
                      at org.apache.aries.blueprint.container.ServiceRecipe.createService(ServiceRecipe.java:285)
                      ... 21 more
      Caused by: ReadFailedException{message=Error executeRead ReadData for path /(urn:opendaylight:genius:idmanager?revision=2016-04-06)id-pools, errorList=[RpcError [message=Error executeRead ReadData for path /(urn:opendaylight:genius:idmanager?revision=2016-04-06)id-pools, severity=ERROR, errorType=APPLICATION, tag=operation-failed, applicationTag=null, info=null, cause=org.opendaylight.controller.md.sal.common.api.data.DataStoreUnavailableException: Shard 192.168.70.1-shard-default-config currently has no leader. Try again later.]]}
                      at org.opendaylight.controller.cluster.datastore.NoOpTransactionContext.executeRead(NoOpTransactionContext.java:71)
                      at org.opendaylight.controller.cluster.datastore.TransactionProxy$1.invoke(TransactionProxy.java:98)
                      at org.opendaylight.controller.cluster.datastore.TransactionContextWrapper.executePriorTransactionOperations(TransactionContextWrapper.java:194)
                      at org.opendaylight.controller.cluster.datastore.AbstractTransactionContextFactory.onFindPrimaryShardFailure(AbstractTransactionContextFactory.java:109)
                      at org.opendaylight.controller.cluster.datastore.AbstractTransactionContextFactory.access$100(AbstractTransactionContextFactory.java:37)
                      at org.opendaylight.controller.cluster.datastore.AbstractTransactionContextFactory$1.onComplete(AbstractTransactionContextFactory.java:136)
                      at org.opendaylight.controller.cluster.datastore.AbstractTransactionContextFactory$1.onComplete(AbstractTransactionContextFactory.java:130)
                      at akka.dispatch.OnComplete.internal(Future.scala:260)
                      at akka.dispatch.OnComplete.internal(Future.scala:258)
                      at akka.dispatch.japi$CallbackBridge.apply(Future.scala:188)
                      at akka.dispatch.japi$CallbackBridge.apply(Future.scala:185)
                      at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:60)
                      at akka.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:55)
                      at akka.dispatch.BatchingExecutor$BlockableBatch.$anonfun$run$1(BatchingExecutor.scala:91)
                      at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
                      at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:81)
                      at akka.dispatch.BatchingExecutor$BlockableBatch.run(BatchingExecutor.scala:91)
                      at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:40)
                      at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:43)
                      at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
                      at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
                      at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
                      at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
      Caused by: org.opendaylight.controller.md.sal.common.api.data.DataStoreUnavailableException: Shard 192.168.70.1-shard-default-config currently has no leader. Try again later.
      

       

            rovarga Robert Varga
            k.faseela Faseela K
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: