포인트 데드락 > 그누보드5 이슈

그누보드5 이슈

좋은 댓글과 좋아요는 제작자에게 큰힘이 됩니다.

포인트 데드락 정보

포인트 데드락

본문

포인트 데드락이 발생하는데요

댓글에도 , 로그인에도 데드락이 가끔씩 생깁니다. 모든 mysql reporting 을 켜고 스텍트레이스를 추가하고 로그를 포착했습니다. insert_use_point 함수에서 발생합니다.

insert_use_point 함수내에 select 쿼리가있는데요 여기 FOR UPDATE 구문을 두어 락을 걸고 이 쿼리 아래 업데이트 쿼리들이 데드락에 빠지지않게 하는것이 필요합니다..

    $sql = " select po_id, po_point, po_use_point
                from {$g5['point_table']}
                where mb_id = '$mb_id'
                  and po_id <> '$po_id'
                  and po_expired = '0'
                  and po_point > po_use_point
                $sql_order 
     //  FOR UPDATE 구문 추가필요.
";
    $result = sql_query($sql);

트렌젝션을 써야하지만 그누보드는 MyIsam 지원으로 인해 트랜젝션을 추가할수없으니... FOR UPDATE 라도 추가하는것을 검토부탁드립니다

트렌젝션이 없으니 데드락이후 포인트들이 꼬이고있습니다.

추천
0

댓글 1개

안녕하세요. SIR 입니다.


그누보드를 사용하는 많은 사람들이 MyIsam 환경의 mysql 을 사용하고 있어서, FOR UPDATE 는 추가할수 없습니다.


insert_use_point_before 이름의 hook 을 추가해 놓을테니, 적절히 사용해 주세요.


https://github.com/gnuboard/gnuboard5/commit/a9eab8d86ae0ce0805cfdb786ad2f1e33f3a80ac

90레벨 이상 댓글을 남길 수 있습니다.

전체 9

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT