Switched from SystemReady to HealthChecks and all is fine with my
services.list and components.list just by changing the PID.

I added some additional checks from the list of generalchecks like so:

Dictionary<String, Object> props = new Hashtable<>();
props.put(HC_TAGS, new String[] {"cpu"});
String pid = "org.apache.felix.hc.generalchecks.CpuCheck";
Configuration config = cm.getConfiguration(pid, "?");
config.update(props);

and I have an HealthCheckMonitor configured:
private void registerHealthMonitor() throws IOException {
  Set<String> tags2Check = new HashSet<>();
  tags2Check.add("systemalive");
  tags2Check.add("cpu");
  Dictionary<String, Object> props = new Hashtable<>();
  props.put("tags", tags2Check);
  props.put("intervalInSec", Long.valueOf(5));
  String pid = "org.apache.felix.hc.core.impl.monitor.HealthCheckMonitor";
  Configuration config = cm.getConfiguration(pid, "?");
  config.update(props);
}

which is working fine with my event handler.
Received event: org/apache/felix/health/tag/cpu/STATUS_CHANGED
 previousStatus: null
 status: TEMPORARILY_UNAVAILABLE
 executionResult: CombinedExecutionResult [size=0 overall
status=TEMPORARILY_UNAVAILABLE, finishedAt=null, elapsedTimeInMs=0,
timedOut=false]
 result: Result [status=TEMPORARILY_UNAVAILABLE, resultLog=ResultLog:
[TEMPORARILY_UNAVAILABLE Overall status TEMPORARILY_UNAVAILABLE]]

Now if I run:
hc:exec cpu
It doesn't pick up the tag.

Running hc:list -v only shows the systemalive health checks:
hc:list -v
OSGi Framework Ready Check     systemalive
org.apache.felix.healthcheck.generalchecks
DS Components Ready Check      systemalive
org.apache.felix.healthcheck.generalchecks
Services Ready Check           systemalive
org.apache.felix.healthcheck.generalchecks

Why is this happening and how can I target those tags, like my cpu here ?

Thanks
Alain

Reply via email to