Felix
  1. Felix
  2. FELIX-3128

A Service Diagnostics service and graphical WebConsole plugin

    Details

    • Type: New Feature New Feature
    • Status: Resolved
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: Web Console
    • Labels:
      None

      Description

      Hi all,

      I'd like to suggest/contribute the attached project.

      The project aims at easing diagnostics of OSGi services and finding about missing dependencies.

      Typically in a large system with many cascading dependencies managed by different trackers such as DeclarativeService, DependencyManager or others, tracking the root cause of a top level service not being started can become very cumbersome. When building service oriented architectures, it is often the case that a single missing requirement will lock a full stack of services, but to find that one requirement is like finding a needle in a haystack!

      The basic idea here is to ask each dependency manager instance about its unresolved dependencies, merge all answers and filter the result to keep only the root causes.

      Typically, if A depends on B which depends on C which depends on D, and D is nowhere to be found, I need only show the "C -> D" missing requirement; if D is resolved, then the whole stack is unlocked.

      Similarly, if D is known by another dependency management system, but unregistered because it depends on E which is missing, then only the "D -> E" requirement is relevant.

      The proposed code is composed as follows:

      • servicediagnostics: the API package. It holds the main service interface as well as the plugin interface, to extend to other dependency management systems
      • servicediagnostics.impl: the implementation package. It contains plugins implementations for org.apache.felix.scr and org.apache.felix.dependencymanager, as well as the main service implementation.
      • servicediagnostics.webconsole: a Felix WebConsole plugin that displays a graphical view of the diagnostics result. Alternatively it can also show a graph of all services currently registered in the service registry and the bundles using them. See Screenshot-notavail.png and Screenshot-all.png. Using the Raphael graffle library (http://raphaeljs.com/graffle.html) allows for nice interactive views of the service registry.

      The attached package is provided as a maven project, along with a sample runner. Simply untar the files, run mvn install and then run.sh.
      Follow the Readme file for details.

      It is not perfect and still needs some improvements (in handling service filters for instance) but as such it is already quite useful.

      I hope you'll like the idea.
      Regards,
      Arjun

      1. servicediagnostics.tar.gz
        5.87 MB
        Arjun Panday
      2. org.apache.felix.servicediagnostics.tgz
        53 kB
        Arjun Panday

        Activity

        Arjun Panday created issue -
        Arjun Panday made changes -
        Field Original Value New Value
        Attachment servicediagnostics.tar.gz [ 12496178 ]
        Carsten Ziegeler made changes -
        Assignee Carsten Ziegeler [ cziegeler ]
        Arjun Panday made changes -
        Attachment org.apache.felix.servicediagnostics.tgz [ 12498603 ]
        Carsten Ziegeler made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]

          People

          • Assignee:
            Carsten Ziegeler
            Reporter:
            Arjun Panday
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development