IllegalStateException: could not reserve stock for cart <uuid>
com.example.checkout.ReservationService#reserve
Table view
| Bucket (UTC) | Events |
|---|---|
| 2026-07-25 00:00:00 | 0 |
| 2026-07-26 00:00:00 | 0 |
| 2026-07-27 00:00:00 | 0 |
| 2026-07-28 00:00:00 | 0 |
| 2026-07-29 00:00:00 | 0 |
| 2026-07-30 00:00:00 | 0 |
| 2026-07-31 00:00:00 | 0 |
| 2026-08-01 00:00:00 | 0 |
| 2026-08-02 00:00:00 | 0 |
| 2026-08-03 00:00:00 | 0 |
| 2026-08-04 00:00:00 | 0 |
| 2026-08-05 00:00:00 | 0 |
| 2026-08-06 00:00:00 | 0 |
| 2026-08-07 00:00:00 | 0 |
| 2026-08-08 00:00:00 | 0 |
| 2026-08-09 00:00:00 | 0 |
| 2026-08-10 00:00:00 | 0 |
| 2026-08-11 00:00:00 | 80 |
| 2026-08-12 00:00:00 | 204 |
| 2026-08-13 00:00:00 | 20 |
| 2026-08-14 00:00:00 | 0 |
| 2026-08-15 00:00:00 | 0 |
| 2026-08-16 00:00:00 | 0 |
| 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
5 frames parsed, 2 belong to the application. Only those decide the group — the same bug reaches the runtime through different framework paths depending on the request.
- in-appcom.example.checkout.ReservationService.reserveReservationService.java:88
- in-appcom.example.checkout.CheckoutController.submitCheckoutController.java:54
- vendorjdk.internal.reflect.DirectMethodHandleAccessor.invokeDirectMethodHandleAccessor.java:103
- vendororg.springframework.web.method.support.InvocableHandlerMethod.doInvokeInvocableHandlerMethod.java:255
- vendororg.springframework.web.servlet.DispatcherServlet.doDispatchDispatcherServlet.java:1089
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=checkout-api type=java.lang.IllegalStateException frame=com.example.checkout.ReservationService#reserve frame=com.example.checkout.CheckoutController#submit
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.
Fingerprintedb01345e97f123a4863ceb75d1eec0eAlgorithm versionv1
Latest stored event
2026-08-13 07:23:33 UTCcould not reserve stock for cart fde5458f-391c-41b8-bf3b-5d32258cf44d
java.lang.IllegalStateException: could not reserve stock for cart 181f8c6f-b5a4-46c8-9921-de365cb2c261 at com.example.checkout.ReservationService.reserve(ReservationService.java:88) at com.example.checkout.CheckoutController.submit(CheckoutController.java:54) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:255) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)
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.