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