I have my application running inside Felix Server. I need to track a method execution time. For that at method entry a started a timer and then when method Exit, the timer is stopped and the end time is calculated.
Application code:
package com.mypackage.monitoring.client;
public class RestMonitoringJobRegistry extends BaseMonitoringJobRegistry
{
public synchronized <T> void updateMonitoredState(
MonitoringJob<T> aInMonitoringJob, T aInState)
{
if (aInMonitoringJob == null || aInState == null)
{
TPAResources.debug(logger,
"Cannot send: missing required information.");
return;
}
..
..
}
Following rules are injected:
At Entry:
RULE record_startTime_RestMonitoringJobRegistry
CLASS com.mypackage.monitoring.client.RestMonitoringJobRegistry
METHOD updateMonitoredState
COMPILE
AT ENTRY
BIND
LOGGER:Logger = com.mypackage.monitoring.client.RestMonitoringJobRegistry.logger;
startTime = System.currentTimeMillis()
IF true
DO
LOGGER.info("[JA] AT ENTRY");
link(Thread.currentThread(), "startTime", startTime);
ENDRULE
At Exit:
RULE check_duration_RestMonitoringJobRegistry
CLASS com.mypackage.monitoring.client.RestMonitoringJobRegistry
METHOD updateMonitoredState
COMPILE
AT EXIT
BIND
LOGGER:Logger = com.mypackage.monitoring.client.RestMonitoringJobRegistry.logger;
startTime:int = unlink(Thread.currentThread(), "startTime");
endTime = System.currentTimeMillis()
IF true
DO
LOGGER.info("[JA] AT EXIT: updateMonitoredState took elapsedTime [" + (endTime - startTime) + "] $aInMonitoringJob.getKey() [" + $aInMonitoringJob.getKey() +"]");
ENDRULE
The rules are pushed, there are no error/exceptions thrown at submit time, but getting exceptions at runtime as:
Logs:
{"host":"host","level":"ERROR","log":{"classname":"com.pkg.as.service.log.impl.asrlog.Stdout2Log4jOutputStream$StdoutRedirectorThread:104","message":"check_duration_RestMonitoringJobRegistry : java.lang.VerifyError: (class: org/jboss/byteman/rule/helper/Helper_HelperAdapter_Compiled_53, method: execute0 signature: ()V) Expecting to find integer on stack","stacktrace":"","threadname":"StdoutThread"},"process":"run","service":"","time":"2024-03-22T00:20:50.725Z","timezone":"Asia/Kolkata","type":"log"}
{"host":"host","level":"WARN","log":{"classname":"com.mypackage.monitoring.client.BaseMonitoringJobRegistry$MonitoringTask:210","message":"Exception occurred while running monitoring job 'MonitoringJobRegistration{pollingInterval=5, key='rerate_eoc_kafka_consumer_group'}' : check_duration_RestMonitoringJobRegistry : caught java.lang.VerifyError: (class: org/jboss/byteman/rule/helper/Helper_HelperAdapter_Compiled_53, method: execute0 signature: ()V) Expecting to find integer on stack : stacktraceInfo : org.jboss.byteman.rule.Rule.execute(Rule.java:841),org.jboss.byteman.rule.Rule.execute(Rule.java:778),","stacktrace":"","threadname":"MonitoringJobRegistry-2"},"process":"run","service":"","time":"2024-03-22T00:20:50.725Z","timezone":"Asia/Kolkata","type":"log"}
{"host":"host","level":"ERROR","log":{"classname":"com.pkg.as.service.log.impl.asrlog.Stdout2Log4jOutputStream$StdoutRedirectorThread:104","message":"check_duration_RestMonitoringJobRegistry : java.lang.VerifyError: (class: org/jboss/byteman/rule/helper/Helper_HelperAdapter_Compiled_53, method: execute0 signature: ()V) Expecting to find integer on stack","stacktrace":"","threadname":"StdoutThread"},"process":"run","service":"","time":"2024-03-22T00:20:50.731Z","timezone":"Asia/Kolkata","type":"log"}
{"host":"host","level":"WARN","log":{"classname":"com.mypackage.monitoring.client.BaseMonitoringJobRegistry$MonitoringTask:210","message":"Exception occurred while running monitoring job 'MonitoringJobRegistration{pollingInterval=5, key='ltm_client'}' : check_duration_RestMonitoringJobRegistry : caught java.lang.VerifyError: (class: org/jboss/byteman/rule/helper/Helper_HelperAdapter_Compiled_53, method: execute0 signature: ()V) Expecting to find integer on stack : stacktraceInfo : org.jboss.byteman.rule.Rule.execute(Rule.java:841),org.jboss.byteman.rule.Rule.execute(Rule.java:778),","stacktrace":"","threadname":"MonitoringJobRegistry-4"},"process":"run","service":"","time":"2024-03-22T00:20:50.731Z","timezone":"Asia/Kolkata","type":"log"}
{"host":"host","level":"ERROR","log":{"classname":"com.pkg.as.service.log.impl.asrlog.Stdout2Log4jOutputStream$StdoutRedirectorThread:104","message":"check_duration_RestMonitoringJobRegistry : java.lang.VerifyError: (class: org/jboss/byteman/rule/helper/Helper_HelperAdapter_Compiled_53, method: execute0 signature: ()V) Expecting to find integer on stack","stacktrace":"","threadname":"StdoutThread"},"process":"run","service":"","time":"2024-03-22T00:20:50.732Z","timezone":"Asia/Kolkata","type":"log"}
{"host":"host","level":"WARN","log":{"classname":"com.mypackage.monitoring.client.BaseMonitoringJobRegistry$MonitoringTask:210","message":"Exception occurred while running monitoring job 'MonitoringJobRegistration{pollingInterval=5, key='httpio'}' : check_duration_RestMonitoringJobRegistry : caught java.lang.VerifyError: (class: org/jboss/byteman/rule/helper/Helper_HelperAdapter_Compiled_53, method: execute0 signature: ()V) Expecting to find integer on stack : stacktraceInfo : org.jboss.byteman.rule.Rule.execute(Rule.java:841),org.jboss.byteman.rule.Rule.execute(Rule.java:778),","stacktrace":"","threadname":"MonitoringJobRegistry-3"},"process":"run","service":"","time":"2024-03-22T00:20:50.732Z","timezone":"Asia/Kolkata","type":"log"}
{"host":"host","level":"WARN","log":{"classname":"com.mypackage.monitoring.client.BaseMonitoringJobRegistry$MonitoringTask:210","message":"Exception occurred while running monitoring job 'MonitoringJobRegistration{pollingInterval=5, key='diameterio'}' : check_duration_RestMonitoringJobRegistry : caught java.lang.VerifyError: (class: org/jboss/byteman/rule/helper/Helper_HelperAdapter_Compiled_53, method: execute0 signature: ()V) Expecting to find integer on stack : stacktraceInfo : org.jboss.byteman.rule.Rule.execute(Rule.java:841),org.jboss.byteman.rule.Rule.execute(Rule.java:778),","stacktrace":"","threadname":"MonitoringJobRegistry-6"},"process":"run","service":"","time":"2024-03-22T00:20:50.733Z","timezone":"Asia/Kolkata","type":"log"}
{"host":"host","level":"ERROR","log":{"classname":"com.pkg.as.service.log.impl.asrlog.Stdout2Log4jOutputStream$StdoutRedirectorThread:104","message":"check_duration_RestMonitoringJobRegistry : java.lang.VerifyError: (class: org/jboss/byteman/rule/helper/Helper_HelperAdapter_Compiled_53, method: execute0 signature: ()V) Expecting to find integer on stack","stacktrace":"","threadname":"StdoutThread"},"process":"run","service":"","time":"2024-03-22T00:20:50.734Z","timezone":"Asia/Kolkata","type":"log"}
{"host":"host","level":"ERROR","log":{"classname":"com.pkg.as.service.log.impl.asrlog.Stdout2Log4jOutputStream$StdoutRedirectorThread:104","message":"check_duration_RestMonitoringJobRegistry : java.lang.VerifyError: (class: org/jboss/byteman/rule/helper/Helper_HelperAdapter_Compiled_53, method: execute0 signature: ()V) Expecting to find integer on stack","stacktrace":"","threadname":"StdoutThread"},"process":"run","service":"","time":"2024-03-22T00:20:50.734Z","timezone":"Asia/Kolkata","type":"log"}
{"host":"host","level":"WARN","log":{"classname":"com.mypackage.monitoring.client.BaseMonitoringJobRegistry$MonitoringTask:210","message":"Exception occurred while running monitoring job 'MonitoringJobRegistration{pollingInterval=5, key='policy'}' : check_duration_RestMonitoringJobRegistry : caught java.lang.VerifyError: (class: org/jboss/byteman/rule/helper/Helper_HelperAdapter_Compiled_53, method: execute0 signature: ()V) Expecting to find integer on stack : stacktraceInfo : org.jboss.byteman.rule.Rule.execute(Rule.java:841),org.jboss.byteman.rule.Rule.execute(Rule.java:778),","stacktrace":"","threadname":"MonitoringJobRegistry-8"},"process":"run","service":"","time":"2024-03-22T00:20:50.735Z","timezone":"Asia/Kolkata","type":"log"}
{"host":"host","level":"ERROR","log":{"classname":"com.pkg.as.service.log.impl.asrlog.Stdout2Log4jOutputStream$StdoutRedirectorThread:104","message":"check_duration_RestMonitoringJobRegistry : java.lang.VerifyError: (class: org/jboss/byteman/rule/helper/Helper_HelperAdapter_Compiled_53, method: execute0 signature: ()V) Expecting to find integer on stack","stacktrace":"","threadname":"StdoutThread"},"process":"run","service":"","time":"2024-03-22T00:20:50.735Z","timezone":"Asia/Kolkata","type":"log"}
While when I remove the COMPILE option, all is well:
{"host":"host","level":"INFO","log":{"classname":"org.jboss.byteman.rule.helper.Helper_HelperAdapter_Compiled_51:11","message":"[JA] AT ENTRY","stacktrace":"","threadname":"MonitoringJobRegistry-4"},"process":"execute0","service":"","time":"2024-03-22T00:20:30.714Z","timezone":"Asia/Kolkata","type":"log"}
{"host":"host","level":"INFO","log":{"classname":"sun.reflect.GeneratedMethodAccessor173:?","message":"[JA] AT EXIT: updateMonitoredState took elapsedTime [1] $aInMonitoringJob.getKey() [ltm_client]","stacktrace":"","threadname":"MonitoringJobRegistry-4"},"process":"invoke","service":"","time":"2024-03-22T00:20:30.715Z","timezone":"Asia/Kolkata","type":"log"}
What is wrong in my rule ?