IllegalStateException: could not price the cart
dev.stacklight.examples.CheckoutController$CartService#total
Table view
| Bucket (UTC) | Events |
|---|---|
| 2026-08-17 00:00:00 | 0 |
| 2026-08-18 00:00:00 | 0 |
| 2026-08-19 00:00:00 | 0 |
| 2026-08-20 00:00:00 | 0 |
| 2026-08-21 00:00:00 | 0 |
| 2026-08-22 00:00:00 | 0 |
| 2026-08-23 00:00:00 | 0 |
How this group was decided
Every step below is a pure function of the event. The same event always produces the same group.
1 · Parse the stack trace
52 frames parsed, 4 belong to the application. Only those decide the group — the same bug reaches the runtime through different framework paths depending on the request.
- in-appdev.stacklight.examples.CheckoutController$CartService.totalCheckoutController.java:53
- in-appdev.stacklight.examples.CheckoutController.handledCheckoutController.java:34
- vendorjdk.internal.reflect.DirectMethodHandleAccessor.invokeDirectMethodHandleAccessor.java:103
- vendorjava.lang.reflect.Method.invokeMethod.java:580
- vendororg.springframework.web.method.support.InvocableHandlerMethod.doInvokeInvocableHandlerMethod.java:257
- vendororg.springframework.web.method.support.InvocableHandlerMethod.invokeForRequestInvocableHandlerMethod.java:190
- vendororg.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandleServletInvocableHandlerMethod.java:118
- vendororg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethodRequestMappingHandlerAdapter.java:986
- vendororg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternalRequestMappingHandlerAdapter.java:891
- vendororg.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handleAbstractHandlerMethodAdapter.java:87
- vendororg.springframework.web.servlet.DispatcherServlet.doDispatchDispatcherServlet.java:1088
- vendororg.springframework.web.servlet.DispatcherServlet.doServiceDispatcherServlet.java:978
- vendororg.springframework.web.servlet.FrameworkServlet.processRequestFrameworkServlet.java:1014
- vendororg.springframework.web.servlet.FrameworkServlet.doGetFrameworkServlet.java:903
- vendorjakarta.servlet.http.HttpServlet.serviceHttpServlet.java:564
- vendororg.springframework.web.servlet.FrameworkServlet.serviceFrameworkServlet.java:885
- vendorjakarta.servlet.http.HttpServlet.serviceHttpServlet.java:658
- vendororg.apache.catalina.core.ApplicationFilterChain.internalDoFilterApplicationFilterChain.java:195
- vendororg.apache.catalina.core.ApplicationFilterChain.doFilterApplicationFilterChain.java:140
- vendororg.apache.tomcat.websocket.server.WsFilter.doFilterWsFilter.java:51
- vendororg.apache.catalina.core.ApplicationFilterChain.internalDoFilterApplicationFilterChain.java:164
- vendororg.apache.catalina.core.ApplicationFilterChain.doFilterApplicationFilterChain.java:140
- vendororg.springframework.web.filter.RequestContextFilter.doFilterInternalRequestContextFilter.java:100
- vendororg.springframework.web.filter.OncePerRequestFilter.doFilterOncePerRequestFilter.java:116
- vendororg.apache.catalina.core.ApplicationFilterChain.internalDoFilterApplicationFilterChain.java:164
- vendororg.apache.catalina.core.ApplicationFilterChain.doFilterApplicationFilterChain.java:140
- vendororg.springframework.web.filter.FormContentFilter.doFilterInternalFormContentFilter.java:93
- vendororg.springframework.web.filter.OncePerRequestFilter.doFilterOncePerRequestFilter.java:116
- vendororg.apache.catalina.core.ApplicationFilterChain.internalDoFilterApplicationFilterChain.java:164
- vendororg.apache.catalina.core.ApplicationFilterChain.doFilterApplicationFilterChain.java:140
- vendororg.springframework.web.filter.CharacterEncodingFilter.doFilterInternalCharacterEncodingFilter.java:201
- vendororg.springframework.web.filter.OncePerRequestFilter.doFilterOncePerRequestFilter.java:116
- vendororg.apache.catalina.core.ApplicationFilterChain.internalDoFilterApplicationFilterChain.java:164
- vendororg.apache.catalina.core.ApplicationFilterChain.doFilterApplicationFilterChain.java:140
- vendororg.apache.catalina.core.StandardWrapperValve.invokeStandardWrapperValve.java:167
- vendororg.apache.catalina.core.StandardContextValve.invokeStandardContextValve.java:90
- vendororg.apache.catalina.authenticator.AuthenticatorBase.invokeAuthenticatorBase.java:483
- vendororg.apache.catalina.core.StandardHostValve.invokeStandardHostValve.java:115
- vendororg.apache.catalina.valves.ErrorReportValve.invokeErrorReportValve.java:93
- vendororg.apache.catalina.core.StandardEngineValve.invokeStandardEngineValve.java:74
- vendororg.apache.catalina.connector.CoyoteAdapter.serviceCoyoteAdapter.java:344
- vendororg.apache.coyote.http11.Http11Processor.serviceHttp11Processor.java:397
- vendororg.apache.coyote.AbstractProcessorLight.processAbstractProcessorLight.java:63
- vendororg.apache.coyote.AbstractProtocol$ConnectionHandler.processAbstractProtocol.java:905
- vendororg.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRunNioEndpoint.java:1741
- vendororg.apache.tomcat.util.net.SocketProcessorBase.runSocketProcessorBase.java:52
- vendororg.apache.tomcat.util.threads.ThreadPoolExecutor.runWorkerThreadPoolExecutor.java:1190
- vendororg.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.runThreadPoolExecutor.java:659
- vendororg.apache.tomcat.util.threads.TaskThread$WrappingRunnable.runTaskThread.java:63
- vendorjava.lang.Thread.runThread.java:1583
- in-appdev.stacklight.examples.CheckoutController$CartService.applyDiscountCheckoutController.java:58
- in-appdev.stacklight.examples.CheckoutController$CartService.totalCheckoutController.java:51
2 · Build the fingerprint input
Line numbers are dropped so that editing a line above the throw site does not open a new group. Values inside the message are replaced with placeholders.
v1 platform=java service=java-demo type=java.lang.IllegalStateException frame=dev.stacklight.examples.CheckoutController$CartService#total frame=dev.stacklight.examples.CheckoutController#handled frame=dev.stacklight.examples.CheckoutController$CartService#applyDiscount frame=dev.stacklight.examples.CheckoutController$CartService#total
3 · Hash it
SHA-256 of the text above, truncated to 128 bits. The version is part of the group key: a future algorithm opens new groups rather than rewriting these.
Fingerprint9bcc9c871fd6ebe3a6f8b24b543cc088Algorithm versionv1
Latest stored event
2026-08-09 15:31:34 UTCcould not price the cart
java.lang.IllegalStateException: could not price the cart at dev.stacklight.examples.CheckoutController$CartService.total(CheckoutController.java:53) at dev.stacklight.examples.CheckoutController.handled(CheckoutController.java:34) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:257) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:190) 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:986) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:891) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1088) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:978) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) 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:195) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) 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:164) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) 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:164) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) 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:164) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483) 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:344) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905) 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:1190) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) at java.base/java.lang.Thread.run(Thread.java:1583) Caused by: java.lang.NullPointerException: Cannot invoke "String.length()" because "promoCode" is null at dev.stacklight.examples.CheckoutController$CartService.applyDiscount(CheckoutController.java:58) at dev.stacklight.examples.CheckoutController$CartService.total(CheckoutController.java:51) ... 49 more
Similar groups
Trigram similarity computed by Postgres against a GIN index. It catches what a fingerprint cannot — the same fault one refactor away from an existing group. No model is involved.