Bug: c.s.w.s.e.EasyControllerExceptionHandler
Chat2DB Version
0.3.7
Describe the bug
I'm using the docker to run the chat2db app. Here is the docker-compose.yml file for your reference:
services:
mysql:
image: mysql
container_name: mysql
restart: always
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=learn
- MYSQL_USER=admin
- MYSQL_PASSWORD=password
volumes:
- mysqldata:/var/lib/mysql
ports:
- "3306:3306"
networks:
- db_network
chat2db:
container_name: chat2db
image: chat2db/chat2db:latest
ports:
- "10824:10824"
volumes:
- ~/.chat2db-docker:/root/.chat2db
restart: unless-stopped
stdin_open: true
tty: true
networks:
- db_network
volumes:
pgdata:
mysqldata:
networks:
db_network:
driver: bridge
My System Config: OS: Mac OS 15.3 Processor: Apple Silicon (M3) Platform: Docker Desktop 4.38.0
Below given is the exception occurred after connecting to the database I opened a table and send a very simple prompt i.e. "create a entry in cats table" then I hit the return key and got below exception.
2025-02-07 18:38:38.464 INFO 1 --- [io-10824-exec-9] c.d.forest.logging.DefaultLogHandler .21 : 11bc6fcd952349c4ae1958fbc9fbdbdb | [Forest] Request (okhttp3):
GET http://test.sqlgpt.cn/gateway/api/client/loginQrCode HTTP
Headers:
User-Agent: forest/1.5.32
2025-02-07 18:38:39.101 INFO 1 --- [io-10824-exec-9] c.d.forest.logging.DefaultLogHandler .21 : 11bc6fcd952349c4ae1958fbc9fbdbdb | [Forest] Response: Status = 301, Time = 634ms
2025-02-07 18:38:39.103 INFO 1 --- [io-10824-exec-9] c.d.forest.logging.DefaultLogHandler .21 : 11bc6fcd952349c4ae1958fbc9fbdbdb | [Forest] Request (okhttp3):
[Redirect]: From GET http://test.sqlgpt.cn/gateway/api/client/loginQrCode -> 301
GET https://test.sqlgpt.cn/gateway/api/client/loginQrCode HTTPS
Headers:
User-Agent: forest/1.5.32
2025-02-07 18:38:40.027 INFO 1 --- [io-10824-exec-9] c.d.forest.logging.DefaultLogHandler .21 : 11bc6fcd952349c4ae1958fbc9fbdbdb | [Forest] Response: Status = 404, Time = 923ms
2025-02-07 18:38:40.033 ERROR 1 --- [io-10824-exec-9] c.s.w.s.e.EasyControllerExceptionHandler.155 : 11bc6fcd952349c4ae1958fbc9fbdbdb | An unknown exception occurred /api/ai/config/getLoginQrCode:ActionResult(success=false, errorCode=common.systemError, errorMessage=An exception occurs, you can view the exception details in the log in the help menu., errorDetail=com.dtflys.forest.exceptions.ForestHandlerException: com.dtflys.forest.exceptions.ForestConvertException: [Forest] auto converter: 'DefaultAutoConverter' error: Cannot invoke "com.dtflys.forest.converter.ForestConverter.convertToJavaObject(Object, java.lang.reflect.Type)" because the return value of "java.util.Map.get(Object)" is null
at com.dtflys.forest.handler.ResultHandler.getResult(ResultHandler.java:156)
at com.dtflys.forest.handler.ResultHandler.getResult(ResultHandler.java:44)
at com.dtflys.forest.http.ResultGetter.get(ResultGetter.java:30)
at com.dtflys.forest.http.ForestResponse.getResult(ForestResponse.java:367)
at com.dtflys.forest.reflection.MethodLifeCycleHandler.handleSyncWithException(MethodLifeCycleHandler.java:89)
at com.dtflys.forest.reflection.MethodLifeCycleHandler.handleSync(MethodLifeCycleHandler.java:55)
at com.dtflys.forest.backend.ResponseHandler.handleSync(ResponseHandler.java:39)
at com.dtflys.forest.backend.okhttp3.response.OkHttp3ResponseHandler.handleSync(OkHttp3ResponseHandler.java:29)
at com.dtflys.forest.backend.okhttp3.executor.OkHttp3Executor.execute(OkHttp3Executor.java:244)
at com.dtflys.forest.backend.okhttp3.executor.OkHttp3Executor.execute(OkHttp3Executor.java:278)
at com.dtflys.forest.http.ForestRequest.execute(ForestRequest.java:4706)
at com.dtflys.forest.backend.ResponseHandler.handleSync(ResponseHandler.java:37)
at com.dtflys.forest.backend.okhttp3.response.OkHttp3ResponseHandler.handleSync(OkHttp3ResponseHandler.java:29)
at com.dtflys.forest.backend.okhttp3.executor.OkHttp3Executor.execute(OkHttp3Executor.java:244)
at com.dtflys.forest.backend.okhttp3.executor.OkHttp3Executor.execute(OkHttp3Executor.java:278)
at com.dtflys.forest.http.ForestRequest.execute(ForestRequest.java:4706)
at com.dtflys.forest.http.ForestRequest.execute(ForestRequest.java:4878)
at com.dtflys.forest.http.ForestRequest.execute(ForestRequest.java:4890)
at ai.chat2db.server.web.api.http.GatewayClientService.getLoginQrCode(GatewayClientService.java:39)
at ai.chat2db.server.web.api.controller.ai.AiConfigController.getLoginQrCode(AiConfigController.java:62)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)
at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89)
at ai.chat2db.server.web.api.aspect.ConnectionInfoHandler.connectionInfoHandler(ConnectionInfoHandler.java:62)
at jdk.internal.reflect.GeneratedMethodAccessor66.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:637)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:627)
at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:71)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:702)
at ai.chat2db.server.web.api.controller.ai.AiConfigController$$SpringCGLIB$$0.getLoginQrCode(<generated>)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:207)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:152)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:884)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at ai.chat2db.server.web.start.config.interceptor.CorsFilter.doFilter(CorsFilter.java:33)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.zalando.logbook.servlet.LogbookFilter.doFilter(LogbookFilter.java:76)
at org.zalando.logbook.servlet.HttpFilter.doFilter(HttpFilter.java:32)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at ai.chat2db.server.web.start.log.LogOncePerRequestFilter.doFilterInternal(LogOncePerRequestFilter.java:32)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:166)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:894)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
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.base/java.lang.Thread.run(Thread.java:833)
Caused by: com.dtflys.forest.exceptions.ForestConvertException: [Forest] auto converter: 'DefaultAutoConverter' error: Cannot invoke "com.dtflys.forest.converter.ForestConverter.convertToJavaObject(Object, java.lang.reflect.Type)" because the return value of "java.util.Map.get(Object)" is null
at com.dtflys.forest.converter.auto.DefaultAutoConverter.convertToJavaObject(DefaultAutoConverter.java:110)
at com.dtflys.forest.handler.ResultHandler.getResult(ResultHandler.java:147)
... 103 more
Caused by: java.lang.NullPointerException: Cannot invoke "com.dtflys.forest.converter.ForestConverter.convertToJavaObject(Object, java.lang.reflect.Type)" because the return value of "java.util.Map.get(Object)" is null
at com.dtflys.forest.converter.auto.DefaultAutoConverter.tryConvert(DefaultAutoConverter.java:35)
at com.dtflys.forest.converter.auto.DefaultAutoConverter.convertToJavaObject(DefaultAutoConverter.java:87)
... 104 more
, solutionLink=https://github.com/chat2db/Chat2DB/wiki/Chat2DB, traceId=null), request parameters:{}
com.dtflys.forest.exceptions.ForestHandlerException: com.dtflys.forest.exceptions.ForestConvertException: [Forest] auto converter: 'DefaultAutoConverter' error: Cannot invoke "com.dtflys.forest.converter.ForestConverter.convertToJavaObject(Object, java.lang.reflect.Type)" because the return value of "java.util.Map.get(Object)" is null
at com.dtflys.forest.handler.ResultHandler.getResult(ResultHandler.java:156)
at com.dtflys.forest.handler.ResultHandler.getResult(ResultHandler.java:44)
at com.dtflys.forest.http.ResultGetter.get(ResultGetter.java:30)
at com.dtflys.forest.http.ForestResponse.getResult(ForestResponse.java:367)
at com.dtflys.forest.reflection.MethodLifeCycleHandler.handleSyncWithException(MethodLifeCycleHandler.java:89)
at com.dtflys.forest.reflection.MethodLifeCycleHandler.handleSync(MethodLifeCycleHandler.java:55)
at com.dtflys.forest.backend.ResponseHandler.handleSync(ResponseHandler.java:39)
at com.dtflys.forest.backend.okhttp3.response.OkHttp3ResponseHandler.handleSync(OkHttp3ResponseHandler.java:29)
at com.dtflys.forest.backend.okhttp3.executor.OkHttp3Executor.execute(OkHttp3Executor.java:244)
at com.dtflys.forest.backend.okhttp3.executor.OkHttp3Executor.execute(OkHttp3Executor.java:278)
at com.dtflys.forest.http.ForestRequest.execute(ForestRequest.java:4706)
at com.dtflys.forest.backend.ResponseHandler.handleSync(ResponseHandler.java:37)
at com.dtflys.forest.backend.okhttp3.response.OkHttp3ResponseHandler.handleSync(OkHttp3ResponseHandler.java:29)
at com.dtflys.forest.backend.okhttp3.executor.OkHttp3Executor.execute(OkHttp3Executor.java:244)
at com.dtflys.forest.backend.okhttp3.executor.OkHttp3Executor.execute(OkHttp3Executor.java:278)
at com.dtflys.forest.http.ForestRequest.execute(ForestRequest.java:4706)
at com.dtflys.forest.http.ForestRequest.execute(ForestRequest.java:4878)
at com.dtflys.forest.http.ForestRequest.execute(ForestRequest.java:4890)
at ai.chat2db.server.web.api.http.GatewayClientService.getLoginQrCode(GatewayClientService.java:39)
at ai.chat2db.server.web.api.controller.ai.AiConfigController.getLoginQrCode(AiConfigController.java:62)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)
at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89)
at ai.chat2db.server.web.api.aspect.ConnectionInfoHandler.connectionInfoHandler(ConnectionInfoHandler.java:62)
at jdk.internal.reflect.GeneratedMethodAccessor66.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:637)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:627)
at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:71)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:702)
at ai.chat2db.server.web.api.controller.ai.AiConfigController$$SpringCGLIB$$0.getLoginQrCode(<generated>)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:207)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:152)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:884)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at ai.chat2db.server.web.start.config.interceptor.CorsFilter.doFilter(CorsFilter.java:33)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.zalando.logbook.servlet.LogbookFilter.doFilter(LogbookFilter.java:76)
at org.zalando.logbook.servlet.HttpFilter.doFilter(HttpFilter.java:32)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at ai.chat2db.server.web.start.log.LogOncePerRequestFilter.doFilterInternal(LogOncePerRequestFilter.java:32)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:166)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:894)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
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.base/java.lang.Thread.run(Thread.java:833)
Caused by: com.dtflys.forest.exceptions.ForestConvertException: [Forest] auto converter: 'DefaultAutoConverter' error: Cannot invoke "com.dtflys.forest.converter.ForestConverter.convertToJavaObject(Object, java.lang.reflect.Type)" because the return value of "java.util.Map.get(Object)" is null
at com.dtflys.forest.converter.auto.DefaultAutoConverter.convertToJavaObject(DefaultAutoConverter.java:110)
at com.dtflys.forest.handler.ResultHandler.getResult(ResultHandler.java:147)
... 103 common frames omitted
Caused by: java.lang.NullPointerException: Cannot invoke "com.dtflys.forest.converter.ForestConverter.convertToJavaObject(Object, java.lang.reflect.Type)" because the return value of "java.util.Map.get(Object)" is null
at com.dtflys.forest.converter.auto.DefaultAutoConverter.tryConvert(DefaultAutoConverter.java:35)
at com.dtflys.forest.converter.auto.DefaultAutoConverter.convertToJavaObject(DefaultAutoConverter.java:87)
... 104 common frames omitted
Hello, the open-source version requires configuring a third-party AI to enable AI functionality.
@tmlx1990 As an end user, it is difficult to identify the root cause of this issue when the feature does not work as expected. I would like to request an enhancement to improve user guidance in such scenarios.
Specifically, it would be helpful to display a notification, popup, or any other suitable message informing the user that they need to configure a third-party AI to enable this feature. This would prevent confusion and improve the overall user experience.
Looking forward to your thoughts on this!
[ERROR] 2025/03/04 - 17:10:18 | relay/billing/ratio/model.go:460 [GetModelRatio] model ratio not found: duckdb-nsql:7b
@tmlx1990 As an end user, it is difficult to identify the root cause of this issue when the feature does not work as expected. I would like to request an enhancement to improve user guidance in such scenarios.
Specifically, it would be helpful to display a notification, popup, or any other suitable message informing the user that they need to configure a third-party AI to enable this feature. This would prevent confusion and improve the overall user experience.
Looking forward to your thoughts on this!
Hello, thank you for your suggestion. We will improve the document later.