블로그 이미지
지누구루

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

2016. 1. 29. 15:37 자유글

1) return true 사건

보통 기능을 만들 때, 전체 흐름을 위해 클래스 / 함수를 비워 놓고, 흐름을 먼저 코딩한 뒤에,

그 흐름이 잘 이어지는걸 확인하면 세부 기능을 구현하는 형태로 작업을 하는편.

즉, 개발 초반엔 몸통이 없는 함수가 중간중간 있는데,

코드 리뷰 전까지 특정 조건을 만족하는지 체크하는 isValidData() 같은 함수 하나에 내용은 비워둔채,

return true 만 달랑 있다가, 리뷰하다가 발견된 사건이다.

이후에 이 건으로 꽤 오랫동안 술자리에서 이 이야기가 나왔다 ㅎㅎㅎ

(요즘도 가끔 이야기가 나오곤 한다 ㅎㅎ)

 

2) 테스트 캐시 쿠폰 사건

5천원~1만원짜리 캐시를 충전해주는 기능을 가진 아이템을 작업하면서,

테스트 코드를 따로 작성하지 않고, 기존에 있던 버튼 클릭에 붙여서 기능을 테스트 하며 개발..

(정확하겐 특정 버튼을 누르면 날아오는 패킷 처리에..)

실섭에 가면서 버튼 클릭에 붙여놓은 테스트 코드를 빼지 않아서...

유저가 해당 버튼을 누를 때마다 캐시가 지급되는 대사건 발생.

모든 유저가 자주 사용하는 기능이 아니었기 때문에 그나마 다행이었지만...

회사에 어마어마한 피해를 주고 후처리도 힘들었던 사고...

처음으로 오금이 저리고 소름이 돋았던 "내가 친 사고" 였음.

(+ 사고치고 난뒤에 이대로 짤리는건가? 하고 진지하게 생각한 사건 ㅎㅎ 메일로 피해가 얼마나 발생했는지 날아 왔었다..)

 

3) 테스트 서버 인벤토리 데이터 메모리 침범

정확이 어떤 기능이었는지는 기억이 잘 안나는데, 스킬 저장쪽이었던것 같음.

메모리 초기화 실수로, 다른 영억의 데이터까지 초기화.... 하면서

뒤의 데이터로 있던 인벤토리 데이터까지 같이 날리는 상태로 테스트 서버에 올라감.

(테스트 서버라서 다행이었달까...)

 

4) slow query

취직한 첫해 여름 이벤트 작업중에, 슬로우 쿼리를 엄청 날리도록 작업함..

이 후 한동안 쿼리를 DB 랩에 검사 맡고 작업을 했음...

 

5) 엄청난 루프

클라이언트에서 요청한 패킷 데이터 검증 순서를 잘못잡아서,

클라이언트에서 보낸 숫자로 루프를 도는 부분이 있었음.

그런데 아주 가끔 여기에 4294967295 이런 값이 들어옴.

오마이갓.

게다가 서버가 패킷을 저리하는 부분은 멀티 쓰레드가 아니라 단일 쓰레드 였기 때문에,

해당 쓰레드가 저 루프를 도느라 다른 일을 못함.....

저 현상이 아주 가끔 있고 서버가 3분정도 아예 멈추는데,

현상을 발견하고 gdb를 걸려고 하면 3분이 지나가거나,

엄청난 루프를 돌고 있는 상태기 때문에 gdb도 잘 안걸림....

문제를 찾고 수정되기 까지 아주 정신을 피폐하게 만들었던 사건

 

6) 아이템 데이터 이상 변조 사건

어느날 들어온 커뮤니티의 글. "장비 아이템에 사용한 강화 아이템이 초기화 되어 있음"

(정확하겐 아니지만 늬앙스를 전달하기 위해 표현을 바꿔 봤습니다)

몇 날 몇 일을 살펴봐도, 해당 데이터가 변조될 가능성을 못찾음...

고민하다가 잘려고 눕는데, 머리속에 불현듯 어떤 사실이 딱 생각남.

범인은, 운영쪽에서 해당 유저의 잘못된 아이템을 회수하는 과정에서, 인벤토리를 새로 저장할 때,

해당 정보가 누락된채로 저장되는 현상이 있었음.

불현듯 생각난 사실은 해당 현상이 일어나기 직전 점검시간에

몇몇 아이템 회수가 있다고 들었던 게 생각난거.

 

가끔 생각나면 또 써야지..

 

 

posted by 지누구루