https://x.com/pathofexile/status/1856959685938876787

Incident Report for Today's Deploy

Today at 9am NZT we took down the realm for the deployment of the new account system.
This migration was expected to take around 4 hours.

The first thing that went wrong was that the migration took longer to run than it did on our test hardware.
This extended the downtime for an extra hour past the point that we had budgeted for.

After the realm was brought back up around 2PM NZT,
we found that many players were getting disconnected frequently.
This was caused by crashes in one of the backend master servers
that caused online account session information to be lost.

We spent around 15 minutes trying to investigate the causes of these crashes 
but were unable to immediately come up with any solutions 
so we decided to roll back the patch.

Unfortunately in this case, what would normally take a very short amount of time 
to roll back took a very long time due to the extensive database migrations
that had occurred during deployment. 
The databases are very large and restoring the backup took quite some time.
The realm was brought back and the game restored at 3PM NZT.

The restore of the website databases took even longer 
and resulted in extended website downtime as well
(the website was not available until 4:30PM NZT).

After investigation we have discovered that the crashes were caused by a very simple flaw.
The constant that represents the length of an account name used in the account session
was still accidentally using an old value,
before we added the discriminator.
If a player logged in with an account name longer than 27 characters
then it would result in an exception being thrown 
when trying to copy the account name into the account session.

This on its own should not have resulted in the master crashing,
but this occurred in an area of the code base
that was designed to be exception free,
which resulted in the entire process crashing.

The bug itself is already fixed,
and we have also changed the code to be more resistant to exceptions occurring.

However, we have decided to delay the redeploy of the patch until Monday NZT.
It is clear that we need to do another round of QA on this deployment to make sure 
that we have found all corner cases before we can be confident in deploying it again.

This is not the level of service you should expect from Grinding Gear Games
and we are very sorry for the extended downtime.

오늘 패치에 대한 사고 보고서

오늘 오전 9시 NZT에 새로운 계정 시스템을 배포하기 위해 서버점검을 실시했습니다.
이 마이그레이션에는 약 4시간이 걸릴 것으로 예상되었습니다.

첫 번째 문제는 테스트 하드웨어에서보다 마이그레이션을 실행하는 데 시간이 더 오래 걸렸다는 것입니다.
이로 인해 예산을 초과하여 서버점검시간이 한 시간 더 연장되었습니다.

서버가 오후 2시 NZT경에 다시 올라온 후 많은 플레이어가 자주 연결이 끊어지는 것을 발견했습니다.
이는 백엔드 마스터 서버 중 하나가 충돌하여 온라인 계정 세션 정보가 손실되었기 때문입니다.

이러한 충돌의 원인을 조사하는 데 약 15분을 보냈지만
즉시 해결책을 내놓지 못해 패치를 롤백하기로 결정했습니다.

안타깝게도 이번 경우 일반적으로 매우 짧은 시간 내에 롤백할 수 있는 시간이
배포 중에 발생한 광범위한 데이터베이스 마이그레이션으로 인해 매우 오랜 시간이 걸렸습니다.
데이터베이스가 매우 크고 백업을 복원하는 데 상당한 시간이 걸렸습니다.
영역이 다시 올라왔고 게임은 오후 3시 NZT에 복원되었습니다.

웹사이트 데이터베이스 복구에는 더 오랜 시간이 걸렸고,
이로 인해 웹사이트 서버점검시간도 길어졌습니다
(웹사이트는 NZT 기준 오후 4시 30분까지 이용할 수 없었습니다).

조사 결과, 충돌은 매우 간단한 결함으로 인해 발생한 것으로 밝혀졌습니다. 
계정 세션에서 사용된 계정 이름의 길이를 나타내는 상수는 여전히 
구분자를 추가하기 전에 실수로 이전 값을 사용하고 있었습니다.
플레이어가 27자보다 긴 계정 이름으로 로그인한 경우
계정 이름을 계정 세션에 복사하려고 하면 예외가 발생합니다.

이것만으로는 마스터가 충돌하지 않았어야 하지만,
예외가 없도록 설계된 코드 베이스 영역에서 이 문제가 발생하여 전체 프로세스가 충돌했습니다.

버그 자체는 이미 수정되었으며, 예외 발생에 더 강하도록 코드를 변경했습니다.

그러나 월요일 NZT까지 패치 재배포를 연기하기로 했습니다.
다시 배포하기 전에 모든 예외 사례를 찾았는지 확인하기 위해
이 배포에 대한 QA를 한 번 더 실시해야 한다는 것은 분명합니다.

이는 Grinding Gear Games에서 기대하시는 수준의 서비스가 아니며,
장시간의 서버점검시간에 대해 진심으로 사과드립니다.