Debugging complex issues in web applications
summary
Reproduces two real Tomcat bugs and shows concrete fixes and workarounds: a reproducible HTTP/2 semaphore deadlock triggered by three+ multi-GB concurrent streams where a race clears the stream’s operation state before releasing the semaphore — fix is to swap clearing and release and validate with repeated runs; and an intermittent missing-response caused by a native PDFTron library closing file descriptors twice, diagnosed with strace + Wireshark and resolved by disabling the library or using HTTP/1.1. Uses debug logging, thread dumps, rolling logs and a practical 20-test rule for statistical confidence.
AI-written summary · about
chapters (8)
- 0:00Introduction
- 2:20What makes issues complex
- 5:53Debugging methodology
- 10:49HTTP/2 response blocking issue
- 22:57Premature connection drops
- 37:25Debugging techniques
- 43:19Handling vendor bugs
- 47:53Q&A
related talks
01h 05mThe art and methodology of troubleshooting
51mHearts of Darkness: A Spring DevOps Apocalypse
33mLove your bugs
52mBulletproof Java Enterprise Applications for The Hard Production Life
19mDebugging Tools and Techniques for WebRTC
50mDebugging HTTP
54mThe Error of our Ways
51mI Can See Clearly Now: Observability of JVM & Spring Boot 2-3-4 apps
