You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@karaf.apache.org by "Jean-Baptiste Onofré (Jira)" <ji...@apache.org> on 2020/10/05 13:37:00 UTC
[jira] [Updated] (KARAF-6612) Get NPE in
FeatureDeploymentListener.bundleChanged()
[ https://issues.apache.org/jira/browse/KARAF-6612?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jean-Baptiste Onofré updated KARAF-6612:
----------------------------------------
Fix Version/s: (was: 4.2.10)
4.2.11
> Get NPE in FeatureDeploymentListener.bundleChanged()
> ----------------------------------------------------
>
> Key: KARAF-6612
> URL: https://issues.apache.org/jira/browse/KARAF-6612
> Project: Karaf
> Issue Type: Bug
> Components: karaf
> Affects Versions: 4.2.1, 4.2.8
> Environment: Tested on Windows
> Reporter: Bob Paulin
> Assignee: Jean-Baptiste Onofré
> Priority: Minor
> Labels: Linux, Windows
> Fix For: 4.3.0, 4.2.11
>
>
> I'm trying to run a standard distribution with all features defined as startup. When I do this the karaf instance starts but logs a number of errors:
> {code:java}
> 2020-01-30T21:36:36,333 | ERROR | activator-1-thread-2 | FeatureDeploymentListener | 27 - org.apache.karaf.deployer.features - 4.2.8 | Unable to update deployed features for bundle: org.apache.karaf.features.extension - 4.2.8
> java.lang.NullPointerException: null
> at org.apache.karaf.deployer.features.FeatureDeploymentListener.bundleChanged(FeatureDeploymentListener.java:247) [!/:?]
> at org.apache.karaf.deployer.features.FeatureDeploymentListener.init(FeatureDeploymentListener.java:95) [!/:?]
> at org.apache.karaf.deployer.features.osgi.Activator$DeploymentFinishedListener.deploymentEvent(Activator.java:86) [!/:?]
> at org.apache.karaf.features.internal.service.FeaturesServiceImpl.registerListener(FeaturesServiceImpl.java:295) [!/:?]
> at org.apache.karaf.deployer.features.osgi.Activator.doStart(Activator.java:53) [!/:?]
> at org.apache.karaf.util.tracker.BaseActivator.run(BaseActivator.java:312) [!/:?]
> at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_222]
> at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_222]
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_222]
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_222]
> at java.lang.Thread.run(Thread.java:748) [?:1.8.0_222]{code}
>
> I'm using the following pom.xml
>
> {code:java}
> <?xml version="1.0" encoding="UTF-8"?>
> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
> <modelVersion>4.0.0</modelVersion> <groupId>com.bobpaulin.karaf.startup</groupId>
> <artifactId>karaf-startup-standard</artifactId>
> <version>0.0.1-SNAPSHOT</version>
> <packaging>karaf-assembly</packaging>
> <name>Startup Standard Distribution</name>
>
> <properties>
> <karaf.version>4.2.8</karaf.version>
> </properties>
>
> <!-- Import Karaf POM to use the correct version of the Karaf dependencies -->
> <dependencyManagement>
> <dependencies>
> <dependency>
> <groupId>org.apache.karaf</groupId>
> <artifactId>karaf</artifactId>
> <version>${karaf.version}</version>
> <type>pom</type>
> <scope>import</scope>
> </dependency>
> </dependencies>
> </dependencyManagement> <dependencies>
> <dependency>
> <!-- scope is compile so all features (there is only one) are installed into startup.properties and the feature repo itself is not added in etc/org.apache.karaf.features.cfg file -->
> <groupId>org.apache.karaf.features</groupId>
> <artifactId>framework</artifactId>
> <version>${karaf.version}</version>
> <type>kar</type>
> </dependency>
> <dependency>
> <groupId>org.apache.karaf.features</groupId>
> <artifactId>framework</artifactId>
> <classifier>features</classifier>
> <version>${karaf.version}</version>
> <type>xml</type>
> </dependency>
>
> <dependency>
> <groupId>org.apache.karaf.features</groupId>
> <artifactId>enterprise</artifactId>
> <classifier>features</classifier>
> <type>xml</type>
> <version>${karaf.version}</version>
> </dependency>
> <dependency>
> <groupId>org.apache.karaf.features</groupId>
> <artifactId>spring</artifactId>
> <version>${karaf.version}</version>
> <classifier>features</classifier>
> <type>xml</type>
> </dependency>
> <dependency>
> <!-- scope is runtime so the feature repo is listed in etc/org.apache.karaf.features.cfg file, and features will installed into the system directory -->
> <groupId>org.apache.karaf.features</groupId>
> <artifactId>standard</artifactId>
> <classifier>features</classifier>
> <version>${karaf.version}</version>
> <type>xml</type>
> </dependency>
> </dependencies> <build>
> <!-- if you want to include resources in the distribution -->
> <resources>
> <resource>
> <directory>src/main/resources</directory>
> <filtering>false</filtering>
> <includes>
> <include>**/*</include>
> </includes>
> </resource>
> <resource>
> <directory>src/main/filtered-resources</directory>
> <filtering>true</filtering>
> <includes>
> <include>**/*</include>
> </includes>
> </resource>
> </resources> <plugins>
> <!-- if you want to include resources in the distribution -->
> <plugin>
> <groupId>org.apache.maven.plugins</groupId>
> <artifactId>maven-resources-plugin</artifactId>
> <version>3.0.2</version>
> <executions>
> <execution>
> <id>process-resources</id>
> <goals>
> <goal>resources</goal>
> </goals>
> </execution>
> </executions>
> </plugin>
> <!-- karaf-maven-plugin will call both assembly and archive goals -->
> <plugin>
> <groupId>org.apache.karaf.tooling</groupId>
> <artifactId>karaf-maven-plugin</artifactId>
> <version>${karaf.version}</version>
> <extensions>true</extensions>
> <configuration>
> <startupFeatures>
> <startupFeature>standard</startupFeature>
> <startupFeature>eventadmin</startupFeature>
> </startupFeatures>
> <javase>1.8</javase>
> </configuration>
> </plugin>
> </plugins>
> </build>
> </project>
> {code}
>
> Some debugging shows the in the FeatureDeploymentListener the featuresService.listRequirements() is returning an empty map so the call to requirements.get(ROOT_REGION) is returning null before the next call to removeAll
> {code:java}
> Map<String, Set<String>> requirements =
> featuresService.listRequirements();
> requirements.get(ROOT_REGION).removeAll(reqsToRemove);
> requirements.get(ROOT_REGION).addAll(reqsToAdd); {code}
>
> Not sure if we just need a simple null check here or if I'm doing something not supported. Thanks!
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)