2026年1月31日土曜日

surrealdbの運用、バグについて

surrealdb 1.5.3を530日ほど運用してたら、完全に落ちていた。


SurrealDB の Resource busy エラーについて

## 現状
- 最新安定版: 2.6.0 (2025年1月)
- 3.0: 開発中 (Nightly/Alpha のみ)

## Resource busy バグの状況
- 1.1.0 で一度修正されたとされる (2024年1月)
- しかし 1.3.0, 2.1.2, 2.1.3 でも報告あり
- 2025年1月時点でも新規 issue が立つ状態
- 完全には解決されていない

## 発生条件
- 並行処理でのトランザクション競合
- ネストした配列の同時更新
- マルチスレッド環境での UPDATE

## 回避策
リトライロジックを実装:
```rust
let mut retries = 0;
loop {
    match db.query("...").await {
        Err(e) if e.contains("Resource busy:") && retries < 50 => {
            retries += 1;
            tokio::time::sleep(Duration::from_millis(100)).await;
        }
        Ok(_) => break,
        Err(e) => panic!("{:?}", e),
    }
}
```

## まとめ
特定バージョンでの「完全修正」ではなく、継続的な改善対象の問題。
本番環境では上記のようなリトライ処理を実装することを推奨。


0 件のコメント:

コメントを投稿

あいうえお