Recent Posts

Backend & Spring·October 13, 2026

A Login Recorded Under the Wrong User: The Ghost Left in ThreadLocal

청소가 생략된 호텔 객실에 새 투숙객이 들어와, 금고 안에 남아 있는 이전 투숙객의 반투명한 신분증을 발견하는 일러스트.

While we were adding an audit log, one login showed up under the wrong name: B logged in, but the record said A. This postmortem traces the ghost to a SecurityContext left behind in ThreadLocal by a filter that never called clearContext() on reused Tomcat threads.

Backend & Spring·October 9, 2026

When Did I Last Write SQL by Hand? The Day grep Overturned an AI Refactoring Plan

읽기 문과 쓰기 문이 나란히 달린 창고 앞에 두 직원이 서 있는 일러스트. 한 명은 통역용 헤드셋을, 한 명은 SQL 쪽지를 들고 있다.

An AI proposed unifying our data access layer on JPA before we could add an audit log. A few lines of grep showed the premise was wrong: every write already went through JPA. The same investigation showed I could no longer read our SQL, so I started relearning it.