Payara icon indicating copy to clipboard operation
Payara copied to clipboard

Bug Report: Gmbal registration failed java.lang.IllegalStateException: Cannot modify frozen instance for com.sun.gjc.monitoring.JdbcStatsProvider/FISH-7299

Open wangjinwer opened this issue 2 years ago • 4 comments

Brief Summary

Enable JDBC monitoring configuration, enable AMX service, ping two Connection pool, and report an error in the background when pinging the second Connection pool。

Expected Outcome

No error message when pinging the second Connection pool

Current Outcome

server.log with the following message:

2023-04-03T09:25:07.389+0800] [Payara 5.2022.5] [SERVER] [NCLS-MNTG-00205] [javax.enterprise.monitoring] [tid: _ThreadID=210 _ThreadName=admin-thread-pool::admin-listener(4)] [timeMillis: 1680485107389] [levelValue: 1000] [[ Gmbal registration failed java.lang.IllegalStateException: Cannot modify frozen instance for com.sun.gjc.monitoring.JdbcStatsProvider at org.glassfish.gmbal.typelib.DeclarationFactory$EvaluatedClassDeclarationImpl.checkFrozen(DeclarationFactory.java:324) at org.glassfish.gmbal.typelib.DeclarationFactory$EvaluatedClassDeclarationImpl.inheritance(DeclarationFactory.java:334) at org.glassfish.gmbal.typelib.TypeEvaluator$TypeEvaluationVisitor.processClass(TypeEvaluator.java:699) at org.glassfish.gmbal.typelib.TypeEvaluator$TypeEvaluationVisitor.getCorrectDeclaration(TypeEvaluator.java:668) at org.glassfish.gmbal.typelib.TypeEvaluator$TypeEvaluationVisitor.visitClassDeclaration(TypeEvaluator.java:445) at org.glassfish.gmbal.typelib.TypeEvaluator$TypeEvaluationVisitor.evaluateType(TypeEvaluator.java:391) at org.glassfish.gmbal.typelib.TypeEvaluator.getEvaluatedType(TypeEvaluator.java:285) at org.glassfish.gmbal.impl.ManagedObjectManagerImpl.isManagedObject(ManagedObjectManagerImpl.java:599) at org.glassfish.admin.monitor.StatsProviderManagerDelegateImpl.registerGmbal(StatsProviderManagerDelegateImpl.java:750) at org.glassfish.admin.monitor.StatsProviderManagerDelegateImpl.enableStatsProvider(StatsProviderManagerDelegateImpl.java:441) at org.glassfish.admin.monitor.StatsProviderManagerDelegateImpl.tryToRegister(StatsProviderManagerDelegateImpl.java:185) at org.glassfish.admin.monitor.StatsProviderManagerDelegateImpl.register(StatsProviderManagerDelegateImpl.java:144) at org.glassfish.external.probe.provider.StatsProviderManager.registerStatsProvider(StatsProviderManager.java:91) at org.glassfish.external.probe.provider.StatsProviderManager.register(StatsProviderManager.java:66) at org.glassfish.external.probe.provider.StatsProviderManager.register(StatsProviderManager.java:57) at com.sun.gjc.spi.ManagedConnectionFactoryImpl.mcfCreated(ManagedConnectionFactoryImpl.java:1504) at com.sun.enterprise.resource.pool.PoolManagerImpl.createEmptyConnectionPool(PoolManagerImpl.java:132) at com.sun.enterprise.connectors.service.ConnectorConnectionPoolAdminServiceImpl.createAndAddPool(ConnectorConnectionPoolAdminServiceImpl.java:1087) at com.sun.enterprise.connectors.service.ConnectorConnectionPoolAdminServiceImpl.obtainManagedConnectionFactory(ConnectorConnectionPoolAdminServiceImpl.java:1017) at com.sun.enterprise.connectors.service.ConnectorConnectionPoolAdminServiceImpl.obtainManagedConnectionFactory(ConnectorConnectionPoolAdminServiceImpl.java:911) at com.sun.enterprise.connectors.service.ConnectorConnectionPoolAdminServiceImpl.createManagedConnectionFactory(ConnectorConnectionPoolAdminServiceImpl.java:918) at com.sun.enterprise.connectors.service.ConnectorConnectionPoolAdminServiceImpl.createConnectorConnectionPool(ConnectorConnectionPoolAdminServiceImpl.java:191) at com.sun.enterprise.connectors.ConnectorRuntime.createConnectorConnectionPool(ConnectorRuntime.java:333) at org.glassfish.jdbc.deployer.JdbcConnectionPoolDeployer.actualDeployResource(JdbcConnectionPoolDeployer.java:201) at org.glassfish.jdbc.deployer.JdbcConnectionPoolDeployer.deployResource(JdbcConnectionPoolDeployer.java:170) at com.sun.enterprise.connectors.service.ConnectorService.loadDeferredResources(ConnectorService.java:233) at com.sun.enterprise.connectors.service.ConnectorService$1.run(ConnectorService.java:153) at java.security.AccessController.doPrivileged(Native Method) at com.sun.enterprise.connectors.service.ConnectorService.loadResourcesAndItsRar(ConnectorService.java:150) at com.sun.enterprise.connectors.service.ConnectorService.checkAndLoadPool(ConnectorService.java:325) at com.sun.enterprise.connectors.service.ConnectorConnectionPoolAdminServiceImpl.getUnpooledConnection(ConnectorConnectionPoolAdminServiceImpl.java:553) at com.sun.enterprise.connectors.service.ConnectorConnectionPoolAdminServiceImpl.testConnectionPool(ConnectorConnectionPoolAdminServiceImpl.java:430) at com.sun.enterprise.connectors.ConnectorRuntime.pingConnectionPool(ConnectorRuntime.java:1164) at org.glassfish.connectors.admin.cli.PingConnectionPool.execute(PingConnectionPool.java:145) at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:556) at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:552) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:360) at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:551) at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:582) at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:574) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:360) at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:573) at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1497) at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:120) at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1879) at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1755) at org.glassfish.admin.rest.utils.ResourceUtil.runCommand(ResourceUtil.java:272) at org.glassfish.admin.rest.utils.ResourceUtil.runCommand(ResourceUtil.java:240) at org.glassfish.admin.rest.resources.TemplateExecCommand.executeCommandLegacyFormat(TemplateExecCommand.java:156) at org.glassfish.admin.rest.resources.TemplateCommandGetResource.processGetLegacyFormat(TemplateCommandGetResource.java:76) at sun.reflect.GeneratedMethodAccessor343.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:124) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:167) at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:79) at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:469) at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:391) at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:80) at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:253) at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) at org.glassfish.jersey.internal.Errors.process(Errors.java:292) at org.glassfish.jersey.internal.Errors.process(Errors.java:274) at org.glassfish.jersey.internal.Errors.process(Errors.java:244) at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265) at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:232) at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:680) at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.service(GrizzlyHttpContainer.java:356) at org.glassfish.admin.rest.adapter.RestAdapter$2.service(RestAdapter.java:335) at org.glassfish.admin.rest.adapter.RestAdapter.service(RestAdapter.java:189) at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:520) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217) at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:182) at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:156) at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:218) at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:95) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:260) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:177) at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:109) at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:88) at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:53) at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:524) at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:89) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:94) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:33) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:114) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:569) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:549) at java.lang.Thread.run(Thread.java:748)

Reproducer

  1. Jdbc Connection Pool monitoring levlel is HIGH domain.xml
  2. enable AMX Configuration
  3. ping JDBC Connection Pools H2Pool
  4. ping JDBC Connection Pools __TimerPool

Operating System

Windows 10

JDK Version

1.8.0_341

Payara Distribution

Payara Server Full Profile

wangjinwer avatar Apr 04 '23 03:04 wangjinwer

Hello @wangjinwer,

Thank you very much for reporting this issue! I can confirm that the issue occurs in Payara 5.2022.5 with JDK 8 and Payara Community 6.2023.3 with JDK 11. The issue does not occur pinging regular JDBC connection pools, but specifically the _TimerPool connection pool. I have raised an internal issue 'FISH-7299' and our team is going to pick up the issue when possible.

felixif avatar Apr 04 '23 13:04 felixif

This problem also exists in the regular Connection pool

wangjinwer avatar Apr 05 '23 01:04 wangjinwer

Could you please explain how to reproduce it with normal JDBC Connection Pools? I tested using a normal JDBC Connection Pool for a MySQL database, and I tried pinging between H2 and MySQLPool, but did not manage to find the same behaviour that happens after pinging _TimerPool, which leads to the errors that you described above.

felixif avatar Apr 06 '23 12:04 felixif

any news on this topic?

eric-ionos avatar Apr 17 '24 11:04 eric-ionos