Tag: Java
All the articles with the tag "Java".
-
Why You Cannot Simply Add a Second Instance to an In-Memory Pool
A second reputation-pool-cloud instance can grant the same resource twice, issue colliding JVM-local fencing tokens, and overwrite another instance's whole-snapshot checkpoint. This is a deterministic counterexample derived from the current code, not an observed production incident. The article traces the scope of leases, snapshots, memory budgets, and rate limits, then compares tenant sharding, externalized state, and a single writer.
-
Separating the Core from SaaS Revealed a Missing Boundary
How reputation-pool separated a JDK-only public decision engine from a Spring Boot SaaS host, then discovered that its reusable gRPC contract was trapped inside the reference server. The article follows the extraction of a shared adapter module, the resulting dependency direction, and the costs that remain.
-
Our 32-Thread Stress Test Passed. The Concurrency Specification Was Still Wrong.
A real account of adding Lincheck to reputation-pool. The checker did not merely find implementation bugs: it rejected three specifications that were stronger than the observable contract. This article follows the traces that separated per-resource fencing, schedule-dependent selection, and conservative acquisition failure.
-
Decoding HikariCP Pool Exhaustion via JVM Thread Dump — What TIMED_WAITING (parked) Really Means
When the pool exhaustion alert fires, staring at application code yields nothing. The thread dump from jstack is the real evidence — every worker thread is frozen in HikariCP at TIMED_WAITING (parked). I walk through the JVM Thread State machine, LockSupport.parkNanos, the ConcurrentBag and SynchronousQueue mechanics, and how the transaction-with-external-call pool-exhaustion measurement [measured] (timeout 5s = 100% pass / 1s = 16.7%) maps line-by-line to the dump — diagnosing pool exhaustion from a single dump in production.