From b6d6f433f22283fc5b078c1129bd24ff459fd799 Mon Sep 17 00:00:00 2001 From: Tom Pantelis Date: Mon, 5 Oct 2015 12:10:23 -0400 Subject: [PATCH] Fix NPE in AbstractFeatureWrapper Added check in ChildAwareFeatureWrapper#getChildFeatures to verify the feature exists in the FeaturesService to avoid NPE. This is a similar workaround as was done in FeatureConfigPusher for a bug in karaf where the FeaturesService may mysteriously return null for an existing feature. Change-Id: I006cd012e919ac206d70bb4ee5754c72f0f01b32 Signed-off-by: Tom Pantelis (cherry picked from commit e6076f69f57fe5918c66637414175c6229635841) --- .../internal/ChildAwareFeatureWrapper.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/opendaylight/config/config-persister-feature-adapter/src/main/java/org/opendaylight/controller/configpusherfeature/internal/ChildAwareFeatureWrapper.java b/opendaylight/config/config-persister-feature-adapter/src/main/java/org/opendaylight/controller/configpusherfeature/internal/ChildAwareFeatureWrapper.java index 2cb53ca560..7da9b9f9a3 100644 --- a/opendaylight/config/config-persister-feature-adapter/src/main/java/org/opendaylight/controller/configpusherfeature/internal/ChildAwareFeatureWrapper.java +++ b/opendaylight/config/config-persister-feature-adapter/src/main/java/org/opendaylight/controller/configpusherfeature/internal/ChildAwareFeatureWrapper.java @@ -58,15 +58,20 @@ public class ChildAwareFeatureWrapper extends AbstractFeatureWrapper implements if(dependencies != null) { for(Dependency dependency: dependencies) { Feature fi = extractFeatureFromDependency(dependency); - if(fi != null){ - ChildAwareFeatureWrapper wrappedFeature = new ChildAwareFeatureWrapper(fi,featuresService); - childFeatures.add(wrappedFeature); + if(fi != null) { + if(featuresService.getFeature(fi.getName(), fi.getVersion()) == null) { + LOG.warn("Feature: {}, {} is missing from features service. Skipping", fi.getName(), fi.getVersion()); + } else { + ChildAwareFeatureWrapper wrappedFeature = new ChildAwareFeatureWrapper(fi,featuresService); + childFeatures.add(wrappedFeature); + } } } } return childFeatures; } + @Override public LinkedHashSet getFeatureConfigSnapshotHolders() throws Exception { LinkedHashSet snapShotHolders = new LinkedHashSet(); for(ChildAwareFeatureWrapper c: getChildFeatures()) { -- 2.36.6