The reason I tried to make an integration test for the PostgreSQL karaf
feature, is this issue:
https://github.com/pgjdbc/pgjdbc/issues/1891
Short summary of the issue:
1. From version 42.2.13 the PostgreSQL karaf feature starts two old
OSGi bundles
<bundle>mvn:org.osgi/org.osgi.core/4.3.1</bundle>
<bundle>mvn:org.osgi/org.osgi.enterprise/4.2.0</bundle>
2. The effect this have is that if the install of the bundle is done
over an SSH connection, the ssh connection is torn down
3. Sometimes, but not always, karaf requires a restart before SSH will
work again
4. If the install of the feature is done from the console that appears
when karaf is started from the command line, the following stack
trace pops up after a couple of seconds:
org.apache.karaf.deployer.features
[org.apache.karaf.deployer.features.osgi.Activator] ERROR : Invalid
BundleContext.
java.lang.IllegalStateException: Invalid BundleContext.
at
org.apache.felix.framework.BundleContextImpl.checkValidity(BundleContextImpl.java:511)
at
org.apache.felix.framework.BundleContextImpl.addBundleListener(BundleContextImpl.java:211)
at
org.apache.karaf.deployer.features.FeatureDeploymentListener.init(FeatureDeploymentListener.java:89)
at
org.apache.karaf.deployer.features.osgi.Activator$DeploymentFinishedListener.deploymentEvent(Activator.java:86)
at
org.apache.karaf.features.internal.service.FeaturesServiceImpl.callListeners(FeaturesServiceImpl.java:321)
at
org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:1068)
at
org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1062)
at
org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread$13(FeaturesServiceImpl.java:998)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
The stack trace does not end up in karaf.log.
So my questions are:
1. How bad is it to pull in a different OSGi version into a running
OSGi container? (I think it is bad, but I don't know exactly how
bad)
2. Is there a way I can reveal the above issue in the integration test?
Here is the integration test:
https://github.com/steinarb/pgjdbc-karaf-ci
Thanks!