This section describes some aspects of troubleshooting ONOS, with respect to its multi-bundle/OSGi aspects.
As mentioned in ONOS : An Overview, ONOS is a multi-module project managed as OSGi bundles by Karaf.
Each bundle is represented by a Maven project with its own POM file, and each project may implement zero or more services. The bundles describe dependencies via:
@Reference
) within the code - interdependencies between various services, used by Karaf to resolve module dependencies during system startupNotably, both prohibit circular references, and the POM file hierarchy, the cross-linking of projects not indicated to be dependencies.
The following result in failed dependency resolution and builds, and/or the failure to load modules at runtime:
We focus on the first two, as these are more common as programmatic errors.