[ODLPARENT-162] Blueprint instantiation fails with IllegalArgumentException Created: 23/Aug/18  Updated: 23/Aug/18  Resolved: 23/Aug/18

Status: Resolved
Project: odlparent
Component/s: SFT
Affects Version/s: 4.0.0
Fix Version/s: 4.0.0

Type: Bug Priority: Highest
Reporter: Robert Varga Assignee: Stephen Kitt
Resolution: Won't Do Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   

MRI patches in controller found this failure, in https://logs.opendaylight.org/releng/vex-yul-odl-jenkins-1/controller-maven-verify-neon-mvn35-openjdk8/83/console.log.gz :

1. NOK org.opendaylight.controller.netty-timer-config:0.10.0.SNAPSHOT: OSGi state = Active, Karaf bundleState = Failure, due to: Blueprint
8/23/18 10:04 AM
Exception: 
Unable to instantiate components
org.osgi.service.blueprint.container.ComponentDefinitionException: Unable to instantiate components
	at org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:720)
	at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:413)
	at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:278)
	at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:299)
	at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:268)
	at org.apache.aries.blueprint.container.BlueprintExtender.access$1000(BlueprintExtender.java:68)
	at org.apache.aries.blueprint.container.BlueprintExtender$BlueprintContainerServiceImpl.createContainer(BlueprintExtender.java:609)
	at org.opendaylight.controller.blueprint.BlueprintBundleTracker.modifiedBundle(BlueprintBundleTracker.java:215)
	at org.opendaylight.controller.blueprint.BlueprintBundleTracker.addingBundle(BlueprintBundleTracker.java:196)
	at org.opendaylight.controller.blueprint.BlueprintBundleTracker.addingBundle(BlueprintBundleTracker.java:50)
	at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:469)
	at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:415)
	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229)
	at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:444)
	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:908)
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:213)
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:120)
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112)
	at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:168)
	at org.eclipse.osgi.container.Module.publishEvent(Module.java:476)
	at org.eclipse.osgi.container.Module.start(Module.java:467)
	at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:383)
	at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:402)
	at org.apache.karaf.features.internal.service.BundleInstallSupportImpl.startBundle(BundleInstallSupportImpl.java:161)
	at org.apache.karaf.features.internal.service.FeaturesServiceImpl.startBundle(FeaturesServiceImpl.java:1116)
	at org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:996)
	at org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1025)
	at org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread$13(FeaturesServiceImpl.java:964)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	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: java.lang.IllegalArgumentException: Unsupported type null
	at org.apache.aries.blueprint.utils.generics.ClassUtil.getClazz(ClassUtil.java:180)
	at org.apache.aries.blueprint.utils.generics.ClassUtil.getClass(ClassUtil.java:85)
	at org.apache.aries.blueprint.utils.generics.TypeInference.match(TypeInference.java:286)
	at org.apache.aries.blueprint.utils.generics.TypeInference.findMatching(TypeInference.java:231)
	at org.apache.aries.blueprint.utils.generics.TypeInference.findMatchingStatics(TypeInference.java:135)
	at org.apache.aries.blueprint.container.BeanRecipe.findMatchingMethods(BeanRecipe.java:401)
	at org.apache.aries.blueprint.container.BeanRecipe.getInstanceFromStaticFactory(BeanRecipe.java:326)
	at org.apache.aries.blueprint.container.BeanRecipe.getInstance(BeanRecipe.java:281)
	at org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:685)
	at org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:666)
	at org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:81)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:90)
	at org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:360)
	at org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:190)
	at org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:716)
	... 34 more


 Comments   
Comment by Robert Varga [ 23/Aug/18 ]

I wonder if this could be caused by blueprint-core (1.9.0) blueprint-maven-plugin (1.10.0) mismatch

Comment by Stephen Kitt [ 23/Aug/18 ]

This is caused by https://issues.apache.org/jira/browse/ARIES-1816 (which isn’t fixed in any Blueprint release yet).

Comment by Robert Varga [ 23/Aug/18 ]

The culprit is the explicit <null/> in:

  <bean id="timer" class="org.opendaylight.controller.config.yang.netty.timer.HashedWheelTimerCloseable"
          factory-method="newInstance">
    <argument><null/></argument> <!-- ThreadFactory -->
    <argument value="${tick-duration}"/>
    <argument value="${ticks-per-wheel}"/>
  </bean>

refactoring the code/blueprint to remove that argument seems to fix the issue.

Comment by Robert Varga [ 23/Aug/18 ]

The workaround is to remove <null/> from blueprint. This will be fixed by upstream and we'll deliver the fix whenever it is available.

Generated at Wed Feb 07 20:27:48 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.