Repository navigation
[Store] Remove the mass-expiry circuit breaker ahead of the upstream liveness rework - #16
Merged
Merged
Conversation
Juhyun-Kim-Memphis
marked this pull request as ready for review
September 21, 2026 08:39
This was referenced Sep 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
INF-461 에서 넣은 master 의 mass-expiry circuit breaker 를 제거한다 (fork #13 의 breaker 커밋 두 개를 revert). INF-522 (upstream
7faef38b동기화) 의 첫 단계다.왜 지우는가
client_mutex_의 exclusive hold 기록을 근거로 만료를 붙잡았다. [Store] Add recoverable client liveness and asynchronous offboarding kvcache-ai/Mooncake#2991 이후에는 ping queue 와 TTL map 이 사라지고, 되돌릴 수 없는 전이도 client 마다 각자의 liveness record 안에서 일어난다. breaker 가 한곳에서 붙잡을 결정 지점이 없다.client_mutex_자체가 없어서 breaker 의 주 신호가 구조적으로 사라진다.client_ttl=60기준으로 되돌릴 수 없는 단계가 모든 원인에 대해 약 120초 뒤로 밀린다. breaker 대신 TTL 값을 명시하고, 새 liveness metric (master_client_liveness_{suspected,offline}_clients) 에 알람을 건다.master_service.cpp,master_config.h,master.cpp,types.h,conf/*, metric manager 에 걸쳐 충돌하고,master_service_config_test.cpp는 자동 병합되지만 breaker 설정을 참조해 빌드가 깨진다. 제거를 따로 떼어 두면 sync PR 의 충돌 해소가 "upstream 쪽을 택한다" 로 단순해진다.무엇을 지우고 무엇을 남기는가
8f7f8b5b[Store] Narrow the mass-expiry hold window…7f5e4ca2[Store] Hold back a client mass expiry…68983cbekvcache-ai#3533 백포트 (ReMountSegment shard walk gate)7b40f370,e13f3601,5c14eb10[Bench]master_benchrevert 는 충돌 없이 적용됐다. 결과 트리는
7f5e4ca2^와 비교해 #14 (parallel populate) 와 #15 (kvcache-ai#3006 백포트) 의 변경만 남는다.--client_mass_expiry_guard,--client_mass_expiry_grace_sec,master_client_expiry_deferred_*,EvaluateClientMassExpiry등 breaker 참조는 src·tests·conf·docs 어디에도 남지 않는다 (git grep0건).운영 영향: 이 PR 은
our_main만 바꾼다. 운영 master (21527a1f) 는 그대로이고, 이미지는 이후 단계에서 sync 결과로 새로 만든다. 롤아웃은 INF-522 범위 밖이다.Unit gate
ba914f73에서 magmaoss/build/mooncake/Dockerfile.unittest(INF-522 에서 확장한 버전, master liveness 스위트 포함) 로 돌렸다. PASS — 7/7 스위트, 23분 5초.실행 환경 주의: 원래 gate 는 ganymede 의 BuildKit Job 으로 돌리는데, 지정 노드
w-0529를 다른 캠페인이 쓰고 있어서 같은 Dockerfile 을 로컬 Docker (linux/amd64, Rosetta) 에서 돌렸다. 로컬 VM 메모리 때문에MAX_JOBS만 4 → 3 으로 낮췄고, 나머지는 동일하다. 이 트리에는 upstream liveness 쪽 선택 스위트 (client_liveness_test등) 가 없어서 건너뛰었다.Carries: nothing (removes the fork-only mass-expiry breaker carried by #13; adds no delta of ours)