Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Does't compatible with JFinal framework #11465

Open
pepeshore opened this issue May 27, 2024 · 5 comments
Open

Does't compatible with JFinal framework #11465

pepeshore opened this issue May 27, 2024 · 5 comments
Assignees
Labels
bug Something isn't working contribution welcome Request makes sense, maintainers probably won't have time, contribution would be welcome needs triage New issue that requires triage

Comments

@pepeshore
Copy link

Describe the bug

JFinal is a Web and ORM framework。
when I add VM option -javaagent:opentelemetry-javaagent.jar, all HTTP requests result in a 500 error.

Steps to reproduce

1. git clone https://github.com/pepeshore/jfinal-demo this is a simple jfinal demo
2. Open this project with IDEA(may be eclipse works too )
3. Run jfinal.MyApp#main with VM options VM option -javaagent:opentelemetry-javaagent.jar added
4. Exec command curl -v http://127.0.0.1:8082/jfinal/hello

Expected behavior

http status code is 200

Actual behavior

http status code is 500

Javaagent or library instrumentation version

2.4

Environment

JDK:
openjdk version "1.8.0_322"
OpenJDK Runtime Environment (Zulu 8.60.0.21-CA-macos-aarch64) (build 1.8.0_322-b06)
OpenJDK 64-Bit Server VM (Zulu 8.60.0.21-CA-macos-aarch64) (build 25.322-b06, mixed mode)
OS:
mac

Additional context

No response

@pepeshore pepeshore added bug Something isn't working needs triage New issue that requires triage labels May 27, 2024
@pepeshore
Copy link
Author

It seems to be that JFinal will put all the attributes of a request into map, and then use FastJson to serialize the map. shown as below
image

And in tomcat instrumentation, two key named io.opentelemetry.javaagent.instrumentation.servlet.ServletHelper.AsyncListenerResponse and io.opentelemetry.javaagent.instrumentation.servlet.ServletHelper.Context will be added into a request, which are not serializable, and will throw exceptioon when serialize them. the exception stack is shown below
com.alibaba.fastjson.JSONException: write javaBean error, fastjson version 1.2.69, class org.apache.catalina.connector.Response, fieldName : io.opentelemetry.javaagent.instrumentation.servlet.ServletHelper.AsyncListenerResponse, write javaBean error, fastjson version 1.2.69, class org.apache.catalina.core.StandardContext, fieldName : context, write javaBean error, fastjson version 1.2.69, class org.apache.catalina.session.StandardManager, fieldName : manager, write javaBean error, fastjson version 1.2.69, class org.apache.catalina.core.StandardEngine, fieldName : engine, Cannot generate an absolute name for this namespace at com.alibaba.fastjson.serializer.JavaBeanSerializer.write(JavaBeanSerializer.java:539) at com.alibaba.fastjson.serializer.JavaBeanSerializer.write(JavaBeanSerializer.java:149) at com.alibaba.fastjson.serializer.MapSerializer.write(MapSerializer.java:271) at com.alibaba.fastjson.serializer.MapSerializer.write(MapSerializer.java:44) at com.alibaba.fastjson.serializer.JSONSerializer.write(JSONSerializer.java:285) at com.alibaba.fastjson.JSON.toJSONString(JSON.java:758) at com.alibaba.fastjson.JSON.toJSONStringWithDateFormat(JSON.java:688) at com.jfinal.json.FastJson.toJson(FastJson.java:44) at com.jfinal.kit.JsonKit.toJson(JsonKit.java:28) at com.jfinal.render.JsonRender.buildJsonText(JsonRender.java:168) at com.jfinal.render.JsonRender.render(JsonRender.java:130) at com.jfinal.core.ActionHandler.handle(ActionHandler.java:106) at hm.platform.handler.SessionIdHandler.handle(SessionIdHandler.java:21) at hm.common.base.ContextPathHandler.handle(ContextPathHandler.java:13) at com.jfinal.ext.handler.UrlSkipHandler.handle(UrlSkipHandler.java:46) at com.jfinal.ext.handler.UrlSkipHandler.handle(UrlSkipHandler.java:46) at com.jfinal.ext.handler.UrlSkipHandler.handle(UrlSkipHandler.java:46) at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:86) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61) at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:698) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:366) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:639) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:881) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1647) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:750)

@laurit
Copy link
Contributor

laurit commented May 29, 2024

We use request attributes to associate some of our own state with the request. You can work around this by excluding these attributes

JsonRender.addExcludedAttrs(
  "io.opentelemetry.javaagent.instrumentation.servlet.ServletHelper.AsyncListenerResponse",
  "io.opentelemetry.javaagent.instrumentation.servlet.ServletHelper.Context",
  "trace_id",
  "span_id");

@laurit laurit added the needs author feedback Waiting for additional feedback from the author label May 29, 2024
@pepeshore
Copy link
Author

pepeshore commented May 30, 2024

It works. And do we has plan to support jfinal? auto excluded attrs above and get http.route

@github-actions github-actions bot removed the needs author feedback Waiting for additional feedback from the author label May 30, 2024
@laurit
Copy link
Contributor

laurit commented May 30, 2024

It works. And do we has plan to support jfinal? auto excluded attrs above and get http.route

We'd welcome a contribution for this

@laurit laurit added the contribution welcome Request makes sense, maintainers probably won't have time, contribution would be welcome label May 30, 2024
@pepeshore
Copy link
Author

ok, you can assign this issue to me

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working contribution welcome Request makes sense, maintainers probably won't have time, contribution would be welcome needs triage New issue that requires triage
Projects
None yet
Development

No branches or pull requests

2 participants