pinpoint-apm / pinpoint

APM, (Application Performance Management) tool for large-scale distributed systems.
https://pinpoint-apm.gitbook.io/
Apache License 2.0
13.3k stars 3.75k forks source link

I am unable to collect URL for my application pega always showing as /NULL #11224

Open srinath6132 opened 6 days ago

srinath6132 commented 6 days ago

Version 2.5.4

Intalled through Docker

Null

Alwaying showing as NULL data for URL statistics while other inspector, metrc are working fine

Please help on this

srinath6132 commented 6 days ago

Failed to load plugin class com.navercorp.pinpoint.plugin.commons.dbcp.CommonsDbcpPlugin$DatasourceTransformCallback with classLoader com.pega.pegarules.bootstrap.loader.PRAppLoader@27bbe773 java.lang.reflect.InvocationTargetException: null at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?] at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?] at com.navercorp.pinpoint.profiler.instrument.classloading.URLClassLoaderHandler.addPluginURLIfAbsent(URLClassLoaderHandler.java:96) ~[pinpoint-profiler-2.5.4.jar:2.5.4] at com.navercorp.pinpoint.profiler.instrument.classloading.URLClassLoaderHandler.injectClass(URLClassLoaderHandler.java:63) ~[pinpoint-profiler-2.5.4.jar:2.5.4] at com.navercorp.pinpoint.profiler.instrument.classloading.JarProfilerPluginClassInjector.injectClass(JarProfilerPluginClassInjector.java:62) ~[pinpoint-profiler-2.5.4.jar:2.5.4] at com.navercorp.pinpoint.profiler.plugin.PluginInstrumentContext.injectClass(PluginInstrumentContext.java:158) ~[pinpoint-profiler-2.5.4.jar:2.5.4] at com.navercorp.pinpoint.profiler.plugin.DynamicTransformCallbackProvider.getTransformCallback(DynamicTransformCallbackProvider.java:49) ~[pinpoint-profiler-2.5.4.jar:2.5.4] at com.navercorp.pinpoint.profiler.plugin.MatchableClassFileTransformerDelegate.transform(MatchableClassFileTransformerDelegate.java:63) ~[pinpoint-profiler-2.5.4.jar:2.5.4] at com.navercorp.pinpoint.profiler.transformer.BaseClassFileTransformer.transform(BaseClassFileTransformer.java:56) ~[pinpoint-profiler-2.5.4.jar:2.5.4] at com.navercorp.pinpoint.profiler.transformer.DefaultClassFileTransformerDispatcher.transform(DefaultClassFileTransformerDispatcher.java:89) ~[pinpoint-profiler-2.5.4.jar:2.5.4] at com.navercorp.pinpoint.profiler.context.javamodule.ClassFileTransformerModuleHandler.transform(ClassFileTransformerModuleHandler.java:54) ~[pinpoint-profiler-2.5.4.jar:2.5.4] at com.navercorp.pinpoint.bootstrap.java9.module.ClassFileTransformerModuleWrap.transform(ClassFileTransformerModuleWrap.java:44) ~[?:2.5.4] at sun.instrument.TransformerManager.transform(TransformerManager.java:188) ~[?:?] at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:563) ~[?:?] at java.lang.ClassLoader.defineClass1(Native Method) ~[?:?] at java.lang.ClassLoader.defineClass(ClassLoader.java:1022) ~[?:?] at com.pega.pegarules.bootstrap.loader.PRAppLoader.findClassInternal(PRAppLoader.java:830) ~[?:?] at com.pega.pegarules.bootstrap.loader.PRAppLoader.findClass(PRAppLoader.java:373) ~[?:?] at com.pega.pegarules.bootstrap.loader.PRAppLoader.loadClassInternal(PRAppLoader.java:700) ~[?:?] at com.pega.pegarules.bootstrap.loader.PRAppLoader.loadClass(PRAppLoader.java:625) ~[?:?] at com.pega.pegarules.bootstrap.loader.PRAppLoader.loadClass(PRAppLoader.java:550) ~[?:?] at com.pega.platform.datastore.connection.internal.JndiDataSourceInformationProvider.setAppServerValues(JndiDataSourceInformationProvider.java:45) ~[?:?] at com.pega.platform.datastore.connection.internal.JndiDataSourceInformationProvider.getInfo(JndiDataSourceInformationProvider.java:36) ~[?:?] at com.pega.platform.datastore.connection.internal.jdbc.JdbcConnectionManager.getConnectionInfo(JdbcConnectionManager.java:212) ~[?:?] at com.pega.pegarules.data.internal.store.ConnectionBrokerAdapter.getConnectionInformation(ConnectionBrokerAdapter.java:1504) ~[?:?] at com.pega.pegarules.data.internal.store.ConnectionBrokerRouter.getConnectionInformation(ConnectionBrokerRouter.java:121) ~[?:?] at com.pega.pegarules.management.internal.system.operations.jobs.DatabaseManagementJob.getJSONArrayOfDataSources(DatabaseManagementJob.java:69) ~[?:?] at com.pega.pegarules.management.internal.system.operations.jobs.DatabaseManagementJob.invokeOperation(DatabaseManagementJob.java:49) ~[?:?] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?] at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?] at com.pega.pegarules.management.internal.system.operations.jobs.AbstractSystemOperationsJob$SystemOperationsJobRunnable.invokeMethodOnClass(AbstractSystemOperationsJob.java:116) ~[?:?] at com.pega.pegarules.management.internal.system.operations.jobs.AbstractSystemOperationsJob$SystemOperationsJobRunnable.run(AbstractSystemOperationsJob.java:109) ~[?:?] at com.pega.pegarules.session.internal.PRSessionProviderImpl.performTargetActionWithLock(PRSessionProviderImpl.java:1381) ~[?:?] at com.pega.pegarules.session.internal.PRSessionProviderImpl.doWithRequestorLocked(PRSessionProviderImpl.java:1124) ~[?:?] at com.pega.pegarules.session.internal.PRSessionProviderImpl.doWithRequestorLocked(PRSessionProviderImpl.java:931) ~[?:?] at com.pega.pegarules.management.internal.system.operations.jobs.AbstractSystemOperationsJob.invoke(AbstractSystemOperationsJob.java:91) ~[?:?] at com.pega.pegarules.management.internal.system.operations.jobs.AbstractSystemOperationsJob.execute(AbstractSystemOperationsJob.java:60) ~[?:?] at com.pega.pegarules.management.internal.system.operations.jobs.AbstractSystemOperationsJob.execute(AbstractSystemOperationsJob.java:39) ~[?:?] at com.pega.pegarules.cluster.external.PRPCTask.call(PRPCTask.java:130) ~[?:?] at com.pega.pegarules.cluster.external.PRPCTask.call(PRPCTask.java:57) ~[?:?] at com.pega.platform.remoteexecution.internal.RequestProcessor.run(RequestProcessor.java:56) ~[?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?] at java.lang.Thread.run(Thread.java:829) ~[?:?] Caused by: java.lang.UnsupportedOperationException: addURL not supported for PRAppLoader at com.pega.pegarules.bootstrap.loader.PRAppLoader.addURL(PRAppLoader.java:340) ~[?:?] ... 48 more 07-04 15:43:49.049 [ejob-executor-2] WARN n.p.p.i.c.JarProfilerPluginClassInjector -- Failed to load plugin class com.navercorp.pinpoint.plugin.commons.dbcp.CommonsDbcpPlugin$DatasourceTransformCallback with classLoader com.pega.pegarules.bootstrap.loader.PRAppLoader@27bbe773 com.navercorp.pinpoint.exception.PinpointException: Failed to load plugin class com.navercorp.pinpoint.plugin.commons.dbcp.CommonsDbcpPlugin$DatasourceTransformCallback with classLoader com.pega.pegarules.bootstrap.loader.PRAppLoader@27bbe773 at com.navercorp.pinpoint.profiler.instrument.classloading.URLClassLoaderHandler.injectClass(URLClassLoaderHandler.java:68) ~[pinpoint-profiler-2.5.4.jar:2.5.4] at com.navercorp.pinpoint.profiler.instrument.classloading.JarProfilerPluginClassInjector.injectClass(JarProfilerPluginClassInjector.java:62) ~[pinpoint-profiler-2.5.4.jar:2.5.4] at com.navercorp.pinpoint.profiler.plugin.PluginInstrumentContext.injectClass(PluginInstrumentContext.java:158) ~[pinpoint-profiler-2.5.4.jar:2.5.4] at com.navercorp.pinpoint.profiler.plugin.DynamicTransformCallbackProvider.getTransformCallback(DynamicTransformCallbackProvider.java:49) ~[pinpoint-profiler-2.5.4.jar:2.5.4] at com.navercorp.pinpoint.profiler.plugin.MatchableClassFileTransformerDelegate.transform(MatchableClassFileTransformerDelegate.java:63) ~[pinpoint-profiler-2.5.4.jar:2.5.4]

emeroad commented 6 days ago

The problem is caused by not supporting the PEGA framework. PRAppLoader is not allowing addURL to be called. Can you check if there is a related option?

It looks like you need to modify the code below.

    // JarProfilerPluginClassInjector.java
    public <T> Class<? extends T> injectClass(ClassLoader classLoader, String className) {
        try {
            if (bootstrapCore.isBootstrapPackage(className)) {
                return bootstrapCore.loadClass(className);
            }
            if (classLoader == null) {
                return bootstrapClassLoaderHandler.injectClass(null, className);
            } else if (classLoader instanceof URLClassLoader) {
                final URLClassLoader urlClassLoader = (URLClassLoader) classLoader;
                return urlClassLoaderHandler.injectClass(urlClassLoader, className);
            } else {
                return plainClassLoaderHandler.injectClass(classLoader, className);
            }
        } catch (Throwable e) {
            // fixed for LinkageError
            logger.warn("Failed to load plugin class {} with classLoader {}", className, classLoader, e);
            throw new PinpointException("Failed to load plugin class " + className + " with classLoader " + classLoader, e);
        }
    }