운영 서버에서만 가끔 데이터 값이 이상하게 꼬이는 버그가 있어서 골머리를 앓고 있어요. 로그 보면 분명 카운트가 하나 덜 올라가 있거나 하는데, 제 로컬에서 아무리 돌려봐도 재현이 안 됩니다. 동료가 race condition(경쟁 상태) 아니냐고 하는데 이게 정확히 뭔가요?
문제 되는 코드는 대략 이런 느낌이에요. 여러 요청이 동시에 같은 값을 증가시켜요.
let count = 0;
function handle() {
const cur = count; // 읽고
count = cur + 1; // 쓴다
}
제 생각엔 읽고 쓰는 사이에 다른 쓰레드가 끼어들면 문제가 생길 것 같긴 한데, 왜 로컬에선 멀쩡하다가 트래픽 많은 운영에서만 터지는 걸까요? 타이밍 문제라 그런 건가 싶으면서도, 그럼 이런 건 어떻게 재현하고 어떻게 막아야 하는지 감이 안 옵니다. 이쪽은 처음이라 조언 부탁드려요.