x

포인트 데드락

· 2025-07-08 (화) 02:00:00 · 286 · 1
포인트 데드락이 발생하는데요

댓글에도 , 로그인에도 데드락이 가끔씩 생깁니다.
모든 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 라도 추가하는것을 검토부탁드립니다

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

댓글 1개

2025-07-08 (화) 11:46:09
안녕하세요. SIR 입니다.

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

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

https://github.com/gnuboard/gnuboard5/commit/a9eab8d86ae0ce0805cfdb786ad2f1e33f3a80ac
댓글을 작성하시려면 로그인이 필요합니다.

그누보드5 이슈

64건

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

+
제목 글쓴이 날짜 조회
mmytajimilife...
25-12-25 조회 176
25-12-20 조회 438
25-09-04 조회 206
25-07-31 조회 341
25-07-08 조회 287
25-07-07 조회 226
25-07-05 조회 243
25-07-01 조회 315
25-06-27 조회 220
25-06-17 조회 228
25-03-09 조회 287
25-02-03 조회 274
25-01-20 조회 429
24-10-14 조회 343
24-10-11 조회 254
24-10-04 조회 324
24-10-04 조회 299
24-10-02 조회 283
24-09-20 조회 326
24-09-07 조회 313