You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Peter Gardfjäll (JIRA)" <ji...@apache.org> on 2010/03/10 20:27:27 UTC
[jira] Created: (FELIX-2191) Drop-in deployment of feature
descriptor with spring-dm bundles fails
Drop-in deployment of feature descriptor with spring-dm bundles fails
---------------------------------------------------------------------
Key: FELIX-2191
URL: https://issues.apache.org/jira/browse/FELIX-2191
Project: Felix
Issue Type: Bug
Components: Karaf
Affects Versions: karaf-1.4.0
Environment: Windows 7
Java 1.6.0_16
Reporter: Peter Gardfjäll
Drop-in deployment of a feature descriptor in the deploy/ directory fails when the feature descriptor contains spring-dm 1.2.1 bundles.
Reproduce as follows:
(1) Start a fresh instance of Karaf 1.4.0 (unzip a new distribution and run bin\karaf.bat)
(2) Copy a feature.xml file with the following contents to the deploy/ directory
<features>
<feature name="org.osgi.sample.sample.dependencies">
<bundle>mvn:org.springframework.osgi/spring-osgi-extender/1.2.1</bundle>
<bundle>mvn:org.springframework.osgi/spring-osgi-core/1.2.1</bundle>
<bundle>mvn:org.springframework.osgi/spring-osgi-io/1.2.1</bundle>
<bundle>mvn:org.springframework.osgi/spring-osgi-web/1.2.1</bundle>
</feature>
</features>
This fails and gives the following error entry in the log:
20:09:20,819 | ERROR | lixDispatchQueue | FeatureDeploymentListener
| atures.FeatureDeploymentListener 136 | Unable to install
features
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.geronimo.blueprint.container.AbstractServiceReferenceRecipe$JdkProxyFactory$1.invoke(AbstractServiceReferenceRecipe.java:561)
at $Proxy4.installFeatures(Unknown Source)
at
org.apache.felix.karaf.deployer.features.FeatureDeploymentListener.bundleChanged(FeatureDeploymentListener.java:132)
at
org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:800)
at
org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:728)
at
org.apache.felix.framework.util.EventDispatcher.run(EventDispatcher.java:942)
at
org.apache.felix.framework.util.EventDispatcher.access$000(EventDispatcher.java:54)
at
org.apache.felix.framework.util.EventDispatcher$1.run(EventDispatcher.java:106)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NullPointerException
at
org.apache.felix.karaf.features.internal.FeaturesServiceImpl.getFeaturesContainingBundle(FeaturesServiceImpl.java:899)
at
org.apache.felix.karaf.features.internal.FeaturesServiceImpl.getFeaturesContainingBundleList(FeaturesServiceImpl.java:910)
at
org.apache.felix.karaf.features.internal.FeaturesServiceImpl.installFeatures(FeaturesServiceImpl.java:296)
... 13 more
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Commented: (FELIX-2191) Drop-in deployment of feature
descriptor with spring-dm bundles fails
Posted by "Peter Gardfjäll (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/FELIX-2191?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12847842#action_12847842 ]
Peter Gardfjäll commented on FELIX-2191:
----------------------------------------
I did some research into this matter.
Without being familiar with the inner workings of the FeatureServiceImpl class, there seems to be something weird going on which causes the features map to be nulled whenever a feature repository is added/removed. This causes the NPE later on in installFeatures. I made some small changes to prevent the features map from being nulled and apparently that made the NPE go away. I don't know if it's a solution but I thought it might at least provide some guidance to solving this issue. The following is a diff of the changes I introduced against the karaf 1.4.0 branch.
Index: src/main/java/org/apache/felix/karaf/features/internal/FeaturesServiceImpl.java
===================================================================
--- src/main/java/org/apache/felix/karaf/features/internal/FeaturesServiceImpl.java (revision 925639)
+++ src/main/java/org/apache/felix/karaf/features/internal/FeaturesServiceImpl.java (working copy)
@@ -85,7 +85,7 @@
private PreferencesService preferences;
private Set<URI> uris;
private Map<URI, RepositoryImpl> repositories = new HashMap<URI, RepositoryImpl>();
- private Map<String, Map<String, Feature>> features;
+ private Map<String, Map<String, Feature>> features = new HashMap<String, Map<String,Feature>>();
private Map<Feature, Set<Long>> installed = new HashMap<Feature, Set<Long>>();
private String boot;
private boolean bootFeaturesInstalled;
@@ -170,7 +170,9 @@
repo.load();
repositories.put(uri, repo);
callListeners(new RepositoryEvent(repo, RepositoryEvent.EventType.RepositoryAdded, false));
- features = null;
+ LOGGER.info("internalAddRepository: " + uri);
+ Thread.currentThread().dumpStack();
+ features.clear();
return repo;
}
@@ -185,7 +187,8 @@
public void internalRemoveRepository(URI uri) {
Repository repo = repositories.remove(uri);
callListeners(new RepositoryEvent(repo, RepositoryEvent.EventType.RepositoryRemoved, false));
- features = null;
+ LOGGER.info("internalRemoveRepository");
+ features.clear();
}
public Repository[] listRepositories() {
@@ -603,7 +606,7 @@
}
protected Map<String, Map<String, Feature>> getFeatures() throws Exception {
- if (features == null) {
+ if (features.isEmpty()) {
//the outer map's key is feature name, the inner map's key is feature version
Map<String, Map<String, Feature>> map = new HashMap<String, Map<String, Feature>>();
// Two phase load:
@@ -895,6 +898,7 @@
}
public Set<Feature> getFeaturesContainingBundle (Bundle bundle) {
+ LOGGER.info("getFeaturesContainingBundle: this.features: " + this.features);
Set<Feature> features = new HashSet<Feature>();
for (Map<String, Feature> featureMap : this.features.values()) {
for (Feature f : featureMap.values()) {
> Drop-in deployment of feature descriptor with spring-dm bundles fails
> ---------------------------------------------------------------------
>
> Key: FELIX-2191
> URL: https://issues.apache.org/jira/browse/FELIX-2191
> Project: Felix
> Issue Type: Bug
> Components: Karaf
> Affects Versions: karaf-1.4.0
> Environment: Windows 7
> Java 1.6.0_16
> Reporter: Peter Gardfjäll
>
> Drop-in deployment of a feature descriptor in the deploy/ directory fails when the feature descriptor contains spring-dm 1.2.1 bundles.
> Reproduce as follows:
> (1) Start a fresh instance of Karaf 1.4.0 (unzip a new distribution and run bin\karaf.bat)
> (2) Copy a feature.xml file with the following contents to the deploy/ directory
> <features>
> <feature name="org.osgi.sample.sample.dependencies">
> <bundle>mvn:org.springframework.osgi/spring-osgi-extender/1.2.1</bundle>
> <bundle>mvn:org.springframework.osgi/spring-osgi-core/1.2.1</bundle>
> <bundle>mvn:org.springframework.osgi/spring-osgi-io/1.2.1</bundle>
> <bundle>mvn:org.springframework.osgi/spring-osgi-web/1.2.1</bundle>
> </feature>
> </features>
> This fails and gives the following error entry in the log:
> 20:09:20,819 | ERROR | lixDispatchQueue | FeatureDeploymentListener
> | atures.FeatureDeploymentListener 136 | Unable to install
> features
> java.lang.reflect.InvocationTargetException
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.apache.geronimo.blueprint.container.AbstractServiceReferenceRecipe$JdkProxyFactory$1.invoke(AbstractServiceReferenceRecipe.java:561)
> at $Proxy4.installFeatures(Unknown Source)
> at
> org.apache.felix.karaf.deployer.features.FeatureDeploymentListener.bundleChanged(FeatureDeploymentListener.java:132)
> at
> org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:800)
> at
> org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:728)
> at
> org.apache.felix.framework.util.EventDispatcher.run(EventDispatcher.java:942)
> at
> org.apache.felix.framework.util.EventDispatcher.access$000(EventDispatcher.java:54)
> at
> org.apache.felix.framework.util.EventDispatcher$1.run(EventDispatcher.java:106)
> at java.lang.Thread.run(Thread.java:619)
> Caused by: java.lang.NullPointerException
> at
> org.apache.felix.karaf.features.internal.FeaturesServiceImpl.getFeaturesContainingBundle(FeaturesServiceImpl.java:899)
> at
> org.apache.felix.karaf.features.internal.FeaturesServiceImpl.getFeaturesContainingBundleList(FeaturesServiceImpl.java:910)
> at
> org.apache.felix.karaf.features.internal.FeaturesServiceImpl.installFeatures(FeaturesServiceImpl.java:296)
> ... 13 more
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Resolved: (FELIX-2191) Drop-in deployment of feature
descriptor with spring-dm bundles fails
Posted by "Guillaume Nodet (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/FELIX-2191?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Guillaume Nodet resolved FELIX-2191.
------------------------------------
Assignee: Guillaume Nodet
Fix Version/s: karaf 1.6.0
Resolution: Fixed
Committing to https://svn.apache.org/repos/asf/felix/trunk ...
M karaf/features/core/src/main/java/org/apache/felix/karaf/features/internal/FeaturesServiceImpl.java
Committed r945659
> Drop-in deployment of feature descriptor with spring-dm bundles fails
> ---------------------------------------------------------------------
>
> Key: FELIX-2191
> URL: https://issues.apache.org/jira/browse/FELIX-2191
> Project: Felix
> Issue Type: Bug
> Components: Karaf
> Affects Versions: karaf-1.4.0
> Environment: Windows 7
> Java 1.6.0_16
> Reporter: Peter Gardfjäll
> Assignee: Guillaume Nodet
> Fix For: karaf 1.6.0
>
>
> Drop-in deployment of a feature descriptor in the deploy/ directory fails when the feature descriptor contains spring-dm 1.2.1 bundles.
> Reproduce as follows:
> (1) Start a fresh instance of Karaf 1.4.0 (unzip a new distribution and run bin\karaf.bat)
> (2) Copy a feature.xml file with the following contents to the deploy/ directory
> <features>
> <feature name="org.osgi.sample.sample.dependencies">
> <bundle>mvn:org.springframework.osgi/spring-osgi-extender/1.2.1</bundle>
> <bundle>mvn:org.springframework.osgi/spring-osgi-core/1.2.1</bundle>
> <bundle>mvn:org.springframework.osgi/spring-osgi-io/1.2.1</bundle>
> <bundle>mvn:org.springframework.osgi/spring-osgi-web/1.2.1</bundle>
> </feature>
> </features>
> This fails and gives the following error entry in the log:
> 20:09:20,819 | ERROR | lixDispatchQueue | FeatureDeploymentListener
> | atures.FeatureDeploymentListener 136 | Unable to install
> features
> java.lang.reflect.InvocationTargetException
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.apache.geronimo.blueprint.container.AbstractServiceReferenceRecipe$JdkProxyFactory$1.invoke(AbstractServiceReferenceRecipe.java:561)
> at $Proxy4.installFeatures(Unknown Source)
> at
> org.apache.felix.karaf.deployer.features.FeatureDeploymentListener.bundleChanged(FeatureDeploymentListener.java:132)
> at
> org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:800)
> at
> org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:728)
> at
> org.apache.felix.framework.util.EventDispatcher.run(EventDispatcher.java:942)
> at
> org.apache.felix.framework.util.EventDispatcher.access$000(EventDispatcher.java:54)
> at
> org.apache.felix.framework.util.EventDispatcher$1.run(EventDispatcher.java:106)
> at java.lang.Thread.run(Thread.java:619)
> Caused by: java.lang.NullPointerException
> at
> org.apache.felix.karaf.features.internal.FeaturesServiceImpl.getFeaturesContainingBundle(FeaturesServiceImpl.java:899)
> at
> org.apache.felix.karaf.features.internal.FeaturesServiceImpl.getFeaturesContainingBundleList(FeaturesServiceImpl.java:910)
> at
> org.apache.felix.karaf.features.internal.FeaturesServiceImpl.installFeatures(FeaturesServiceImpl.java:296)
> ... 13 more
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.