Upgrade embedded Apache Karaf to version 4.0

Description

To sync up the versions of Apache Karaf used on OpenNMS and Minion, we need to upgrade the Karaf embedded in OpenNMS to version 4.

This will give us several years of bugfixes and dependency management enhancements and will make it easier to maintain features since we only have to target a single version of the container.

Acceptance / Success Criteria

None

Lucidchart Diagrams

Activity

Show:

Seth Leger July 10, 2017 at 8:05 PM

Also, here's an earlier incarnation of a similar problem and the commits for it are not present in Karaf 2.4.X, only Karaf 3.0.0+.

https://issues.apache.org/jira/browse/KARAF-910

Seth Leger July 10, 2017 at 7:13 PM

One of the major problems solved by this upgrade is that Karaf startup should be much more reliable, probably because this bugfix is included in Karaf 4.0.8:

https://issues.apache.org/jira/browse/KARAF-4100

Seth Leger June 14, 2017 at 10:34 AM

Issues with flapping osgi-pluginmanager services have been fixed. PR has been merged, marking as fixed.

https://github.com/OpenNMS/opennms/pull/1471

Seth Leger May 10, 2017 at 6:08 PM

This is being blocked by flapping in registering the Jersey REST services for the featuremgr and pluginmgr services. Here is a sample stack trace:

2017-05-10 17:21:46,102 DEBUG org.opennms.plugin.featuremanager:1.0.3(177) [pool-17-thread-1] org.opennms.plugin.featuremanager: ServiceEvent REGISTERED - [javax.servlet.http.HttpServlet] - org.opennms.plugi n.featuremanager 2017-05-10 17:21:46,107 ERROR org.ops4j.pax.web.pax-web-extender-whiteboard:4.3.0(181) [pool-17-thread-1] org.ops4j.pax.web.extender.whiteboard.internal.WebApplication: Registration skipped for [ServletWebEl ement{mapping=DefaultServletMapping{httpContextId=null,urlPatterns=null,initParams={},servlet=com.sun.jersey.spi.container.servlet.ServletContainer@78ad93bd, alias=/featuremgr/rest/v1-0, servletNamenull}}] d ue to error during registration com.sun.jersey.api.container.ContainerException: No WebApplication provider is present at com.sun.jersey.spi.container.WebApplicationFactory.createWebApplication(WebApplicationFactory.java:69)[57:com.sun.jersey.jersey-server:1.19.0] at com.sun.jersey.spi.container.servlet.ServletContainer.create(ServletContainer.java:412)[58:com.sun.jersey.servlet:1.19.0] at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.create(ServletContainer.java:327)[58:com.sun.jersey.servlet:1.19.0] at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:603)[58:com.sun.jersey.servlet:1.19.0] at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:207)[58:com.sun.jersey.servlet:1.19.0] at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:394)[58:com.sun.jersey.servlet:1.19.0] at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:577)[58:com.sun.jersey.servlet:1.19.0] at javax.servlet.GenericServlet.init(GenericServlet.java:161)[geronimo-servlet_3.0_spec-1.0.jar:1.0] at org.opennms.container.web.felix.base.internal.handler.ServletHandler.init(ServletHandler.java:58)[108:org.opennms.container.web.bridge:19.0.0.SNAPSHOT] at org.opennms.container.web.felix.base.internal.handler.HandlerRegistry.addServlet(HandlerRegistry.java:65)[108:org.opennms.container.web.bridge:19.0.0.SNAPSHOT] at org.opennms.container.web.felix.base.internal.service.HttpServiceImpl.registerServlet(HttpServiceImpl.java:100)[108:org.opennms.container.web.bridge:19.0.0.SNAPSHOT] at org.ops4j.pax.web.extender.whiteboard.internal.element.ServletWebElement.register(ServletWebElement.java:61)[181:org.ops4j.pax.web.pax-web-extender-whiteboard:4.3.0] at org.ops4j.pax.web.extender.whiteboard.internal.WebApplication.registerWebElement(WebApplication.java:270)[181:org.ops4j.pax.web.pax-web-extender-whiteboard:4.3.0] at org.ops4j.pax.web.extender.whiteboard.internal.WebApplication.addWebElement(WebApplication.java:127)[181:org.ops4j.pax.web.pax-web-extender-whiteboard:4.3.0] at org.ops4j.pax.web.extender.whiteboard.internal.tracker.AbstractTracker.addingService(AbstractTracker.java:169)[181:org.ops4j.pax.web.pax-web-extender-whiteboard:4.3.0] at org.ops4j.pax.web.extender.whiteboard.internal.tracker.AbstractTracker.addingService(AbstractTracker.java:44)[181:org.ops4j.pax.web.pax-web-extender-whiteboard:4.3.0] at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:941)[org.osgi.core-6.0.0.jar:] at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:870)[org.osgi.core-6.0.0.jar:] at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)[org.osgi.core-6.0.0.jar:] at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229)[org.osgi.core-6.0.0.jar:] at org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:901)[org.osgi.core-6.0.0.jar:] at org.apache.felix.framework.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:990)[org.apache.felix.framework-5.6.1.jar:] at org.apache.felix.framework.EventDispatcher.fireEventImmediately(EventDispatcher.java:838)[org.apache.felix.framework-5.6.1.jar:] at org.apache.felix.framework.EventDispatcher.fireServiceEvent(EventDispatcher.java:545)[org.apache.felix.framework-5.6.1.jar:] at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4557)[org.apache.felix.framework-5.6.1.jar:] at org.apache.felix.framework.Felix.registerService(Felix.java:3549)[org.apache.felix.framework-5.6.1.jar:] at org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:348)[org.apache.felix.framework-5.6.1.jar:] at org.apache.aries.blueprint.container.BlueprintContainerImpl.registerService(BlueprintContainerImpl.java:492)[12:org.apache.aries.blueprint.core:1.7.1] at org.apache.aries.blueprint.container.ServiceRecipe.register(ServiceRecipe.java:193)[12:org.apache.aries.blueprint.core:1.7.1] at org.apache.aries.blueprint.container.BlueprintContainerImpl.registerServices(BlueprintContainerImpl.java:746)[12:org.apache.aries.blueprint.core:1.7.1] at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:413)[12:org.apache.aries.blueprint.core:1.7.1] at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:276)[12:org.apache.aries.blueprint.core:1.7.1] at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:300)[12:org.apache.aries.blueprint.core:1.7.1] at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:269)[12:org.apache.aries.blueprint.core:1.7.1] at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:265)[12:org.apache.aries.blueprint.core:1.7.1] at org.apache.aries.blueprint.container.BlueprintExtender.modifiedBundle(BlueprintExtender.java:255)[12:org.apache.aries.blueprint.core:1.7.1] ...
Fixed

Details

Assignee

Reporter

Components

Sprint

Fix versions

Affects versions

Priority

PagerDuty

Created February 6, 2017 at 4:49 PM
Updated September 20, 2017 at 3:29 PM
Resolved June 14, 2017 at 10:34 AM

Flag notifications