Getting runtime exception with COMPILE option

5 Views Asked by At

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 ?

0

There are 0 best solutions below