{"id":"IL-0299","org":"Wikimedia Foundation","date":"2025-05-28","docs":["https://phabricator.wikimedia.org/T388610"],"title":{"en":"About 60 indices of Wikimedia's CirrusSearch OpenSearch clusters went red and unwritable during a host decommission","ko":"Wikimedia CirrusSearch 의 OpenSearch 클러스터에서 인덱스 약 60개가 red 상태가 되어 쓸 수 없었다"},"domain":["database"],"impact":{"scope":"About 60 CirrusSearch OpenSearch indices red and unwritable; the search update pipeline could not write to them","users":"No user impact, because the datacenter was depooled","region":"unknown"},"review":{"written_by":"session","reviewed_at":null,"reviewed_by":null},"lessons":{"en":"Banning nodes before removing them is a best-effort action and did not work as expected. A large operation such as decommissioning many servers at once had no maintenance plan or runbook, and the snapshots, dashboards and logging that recovery needed were not available or not documented well enough.","ko":"노드 ban 은 성공을 보장하지 않는 동작이라 기대대로 되지 않았다. 같은 종류의 서버를 한꺼번에 여러 대 폐기하는 큰 작업에 유지보수 계획이나 런북이 없었다. 스냅샷과 대시보드, 로깅 같은 중요한 도구를 쓸 수 없거나 문서가 모자랐다. 데이터센터가 depool 돼 있던 덕분에 사용자 영향이 없었다."},"related":[],"sources":[{"url":"https://wikitech.wikimedia.org/wiki/Incidents/2025-05-29_OpenSearch_clusters_unavailable","kind":"runbook","archived":"https://web.archive.org/web/20260715074537/https://wikitech.wikimedia.org/wiki/Incidents/2025-05-29_OpenSearch_clusters_unavailable"}],"summary":{"en":"At 15:17 on 28 May 2025 a Data Platform SRE banned 15 elastic/opensearch hosts to prepare them for decommission, and at 21:08 merged a Puppet patch that removed access to the cluster for all the hosts it targeted, elastic/cirrussearch10[53-67]. Banning is a best-effort action and did not work as expected: some of these hosts still held primary shards, so removing them put about 60 indices into red, unwritable state. There was no maintenance plan or runbook for decommissioning this many servers of one type at once. The datacenter was depooled at the time, so users were not affected.\n\nAt 09:29 on 29 May an engineer deleted the red indices, which brought the cluster back to green, writable status and let the update pipeline recover. From 09:47 the engineer restored the broken indices, and all indices were recovered by 14:50, when the incident ended.","ko":"2025-05-28 15:17 에 Data Platform SRE 엔지니어가 폐기를 준비하며 elastic/opensearch 호스트 15대를 ban 했다. ban 은 성공을 보장하지 않는 동작이라 기대대로 되지 않았다. 21:08 에 이 호스트들, 곧 elastic/cirrussearch10[53-67] 의 클러스터 접근을 없애는 Puppet 패치가 머지됐다. 일부 호스트가 아직 primary 샤드를 가지고 있어서 CirrusSearch OpenSearch 클러스터의 인덱스 약 60개가 red, 즉 쓸 수 없는 상태가 됐다. 21:27 에 업데이트 파이프라인이 이 인덱스들에 쓰지 못해 CirrusStreamingUpdaterFlinkJobUnstable 알림이 울리기 시작했지만, 클러스터 유지보수 때문에 다른 알림 다수가 억제돼 있었다. 다음 날 07:24 에 엔지니어가 조사를 시작했고 08:56 에 Slack 의 #data-platform-sre 에 스레드를 열어 Data Platform SRE 의 도움을 받았다. 09:29 에 red 인덱스를 지워 클러스터를 green, 즉 쓸 수 있는 상태로 되돌렸고 업데이트 파이프라인이 회복하기 시작했다. 09:47 에 망가진 인덱스 복구를 시작해 14:50 에 모든 인덱스가 돌아오며 장애가 끝났다. 데이터센터가 depool 돼 있어 사용자 영향은 없었다. 이만큼 큰 작업에 유지보수 계획이나 런북이 없었다. 스냅샷과 대시보드, 로깅 같은 중요한 도구는 쓸 수 없거나 문서가 모자랐다."},"trigger":{"en":"A Puppet patch that removed cluster access for the hosts elastic/cirrussearch10[53-67] while some of them still held primary shards.","ko":"2025-05-28 21:08 에 폐기할 호스트 elastic/cirrussearch10[53-67] 의 클러스터 접근을 없애는 Puppet 패치가 머지됐다. 이 중 일부 호스트가 아직 primary 샤드를 가지고 있었다."},"severity":"unknown","symptoms":["writes-rejected"],"timeline":{"detected_after":"19m","resolved_after":"17h 42m"},"date_kind":"incident","detection":{"en":"CirrusStreamingUpdaterFlinkJobUnstable alerts fired from 21:27; the review records the detection as human, by the engineer who started troubleshooting the next morning, and many other alerts were suppressed for maintenance.","ko":"사람이 발견했다. 2025-05-28 21:27 부터 CirrusStreamingUpdaterFlinkJobUnstable 알림이 울렸지만, 클러스터 유지보수 작업 때문에 다른 알림 다수가 억제돼 울리지 않았다. 엔지니어가 다음 날 07:24 에 조사를 시작했다."},"components":["elasticsearch-opensearch"],"root_cause":"config-change","remediation":[{"text":{"en":"Deleted the red indices, which brought the cluster back to green","ko":"09:29 에 red 인덱스를 지워 클러스터를 green, 즉 쓸 수 있는 상태로 되돌렸다. 업데이트 파이프라인이 회복하기 시작했다."}},{"text":{"en":"Restored the broken indices","ko":"09:47 에 망가진 인덱스 복구를 시작했고 14:50 에 모든 인덱스가 돌아왔다."}}],"action_items":[{"text":{"en":"Re-enable the snapshot repositories in production CirrusSearch","ko":"운영 CirrusSearch 의 스냅샷 저장소를 다시 켠다."}},{"text":{"en":"Create an operations-focused OpenSearch dashboard","ko":"운영 대응에 맞춘 OpenSearch 대시보드를 만든다."}},{"text":{"en":"Verify or fix the Logstash pipeline for Search Platform-owned OpenSearch clusters","ko":"Search Platform 이 맡은 OpenSearch 클러스터의 Logstash 파이프라인을 확인하고 고친다."}}],"contributing":["assumption-unverified","no-runbook","backup-unverified"],"recurrence_of":null,"symptoms_text":{"en":"From 21:08 on 28 May 2025, about 60 indices of Wikimedia's OpenSearch clusters for CirrusSearch were in red, unwritable state. At 21:27 CirrusStreamingUpdaterFlinkJobUnstable alerts began to fire because the search update pipeline could not write to those indices.\n\nMany other alerts did not fire, because they were suppressed for maintenance work on the cluster, and troubleshooting started at 07:24 the next morning. During recovery, snapshots, dashboards and logging were not available or not documented well enough.","ko":"2025-05-28 21:27 부터 CirrusStreamingUpdaterFlinkJobUnstable 알림이 울렸다. 검색 업데이트 파이프라인이 red 상태가 된 인덱스 약 60개에 쓰지 못하고 있었다.\n\n클러스터에서 유지보수 작업을 하던 중이라 다른 알림 다수가 억제되어 울리지 않았다. 사람이 문제를 알아채고 조사를 시작한 것은 다음 날 07:24 였다.\n\n데이터센터가 depool 된 상태여서 사용자 영향은 없었다."},"updated_at":"2026-11-14T12:33:55.326772Z","url":"https://benchlet.com/incidentlib/app/cases/IL-0299","org_slug":"wikimedia-foundation"}