22 Real-World Backend Debugging Stories: From Spring @Value to Go Lock Bugs
This article compiles 22 detailed case studies of backend development challenges—including Spring @Value injection failures, Docker‑based Sentinel CPU metrics bugs, Dubbo tag‑routing quirks, memory leaks in gateways, Nacos TIME_WAIT issues, Go benchmark timeouts, JDK bugs, and more—offering practical troubleshooting insights for engineers.
Hello, I'm Xiao Lou.
1. Deep Dive into Spring @Value Not Working
On 2020-04-06, I investigated a Spring and Dubbo integration problem where the @Value annotation failed to inject values, likely due to bean initialization order.
2. Sentinel Docker CPU Utilization Bug
While setting up Sentinel for rate limiting, I discovered that its adaptive throttling used the host's CPU usage instead of the container's, leading to incorrect limits.
3. Dubbo Tag Routing Mistaken for Bronze, Actually King
In a Dubbo tag‑routing test environment, calls failed because Dubbo cleared the context after each invocation, causing tags to be lost on subsequent calls; the issue was solved by applying a filter to preserve tags.
4. Dubbo Multi‑Registry Meets Tag Routing
During a migration to multiple Dubbo registries, calls failed even though providers existed because both routing and registry‑selection logic unintentionally applied tag routing, a bug fixed after Dubbo 2.7.
5. Long Dubbo Gateway Memory Leak Investigation
The Dubbo gateway occasionally leaked memory after weeks of operation. Inspired by a Netty off‑heap memory article, I inserted monitoring code to pinpoint the leak source.
6. SkyWalking Memory Leak Investigation (with Sentinel)
A production outage was traced to a memory leak caused by the interaction of SkyWalking and Sentinel, highlighting the importance of consistent testing environments and gradual rollouts.
7. Nacos Client TIME_WAIT Issue
During a migration to Nacos, the client generated many TIME_WAIT sockets, prompting a review of TCP three‑way handshake fundamentals.
8. Little‑Known Dubbo Registry Center Details
This article aggregates practical tips for configuring Dubbo's backup addresses and handling multiple registries, drawn from real‑world production experience.
9. Upgrading Dubbo, Beware of default.version!
An upgrade from Dubbo 2.6 to 2.7 exposed compatibility problems with version/group settings that can easily cause production failures.
10. Dubbo Interface Duplicate Unregistration Investigation
Users reported errors when stopping services; certain Dubbo versions performed duplicate unregistrations, a behavior clarified by referencing Dubbo's graceful shutdown guidelines.
11. RocketMQ Graceful Shutdown Story
While working on business logic, I explored various techniques for gracefully stopping RocketMQ, eventually aligning with the official spring‑boot‑starter solution.
12. Contributing to Dubbo Source – Bug Fixes in Dreams
While fixing an issue in Dubbo's Redis registry, I dreamed of the exact buggy line; the next morning I confirmed the bug and submitted a patch.
13. Dubbo No Provider Issue Troubleshooting Guide
This summary provides a step‑by‑step checklist for developers encountering "No Provider" errors, leveraging newer Dubbo logs that expose detailed diagnostics.
14. Case Study: Dubbo 2.7.12 Bug Causing Production Outage
A bug in Dubbo 2.7.12 triggered a P0 incident; the article details the root cause and the subsequent community discussion.
15. Dubbo LoadBalance Not Effective – Source Dive
An in‑depth look at why custom load‑balance configurations sometimes have no effect, including snippets of the relevant source code.
16. Java Problem Diagnosis Techniques
A presentation from a previous employer covering practical methods for diagnosing Java runtime issues, with a note about an unfinished e‑book on the topic.
17. Possible Go Benchmark Bug Discovered
While benchmarking Go code, I encountered unexpected timeouts; after two days of source review, I confirmed a Go runtime bug and filed an issue with a patch.
18. DNS Resolution Pitfall in Go
A Go http.Client request suffered from DNS resolution problems; I documented the Go DNS flow and compared it with Java's implementation.
19. HBase Skew Fix in Call Chain (Low Engagement)
A contributed article on fixing HBase hotspot issues in a call chain, which received limited readership due to its niche focus.
20. Extreme JDK Bug Encountered
A seemingly simple JDK bug was reproduced and analyzed from a JVM implementation perspective, illustrating the value of deep dives.
21. Go Read‑Write Lock Issue – No Bug, Just Misunderstanding
An online Go read‑write lock timeout was traced to misuse rather than a language defect, prompting a broader discussion on lock semantics across Go and Java.
22. Dubbo Async Call Minor Bug – Opportunity to Contribute
After verifying a subtle bug in Dubbo's asynchronous calls with Arthas, I documented the findings and invited readers to contribute fixes to the open‑source project.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Xiao Lou's Tech Notes
Backend technology sharing, architecture design, performance optimization, source code reading, troubleshooting, and pitfall practices
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
