bgs を更新
28
bgs.md
28
bgs.md
@@ -50,3 +50,31 @@ $ curl -X POST "https://bgs.${PDS_HOST}/admin/repo/reset?did=${did}" \
|
||||
$ curl -X POST "http://bgs.${PDS_HOST}/admin/pds/resync?host=${PDS_HOST}" \
|
||||
-H 'Authorization: Bearer <BGS_ADMIN_KEY>'"
|
||||
```
|
||||
|
||||
## TLに投稿が表示されない場合
|
||||
|
||||
### 原因
|
||||
|
||||
bskyサービスがBGSのFirehoseを購読する際、BGSが`since: ""`(空文字列)を送信することがある。atprotoのバリデーションは`since`が`null`または有効なTID形式を要求するため、空文字列で`FirehoseValidationError`が発生し、bskyの`RepoSubscription`が停止する。
|
||||
|
||||
```sh
|
||||
PDS → BGS (Firehose) → bsky (RepoSubscription) → bsky DB → TL表示
|
||||
```
|
||||
|
||||
`RepoSubscription`が停止すると、BGSからbskyへデータが流れなくなり、TLに投稿が表示されなくなる。
|
||||
|
||||
### 恒久的な修正
|
||||
|
||||
`210-bgs-since-empty-fix.patch`を適用してBGSを再ビルド。このパッチは`indexer/indexer.go`で空文字列の`since`を`null`に正規化する。
|
||||
|
||||
### 一時的な回避策
|
||||
|
||||
パッチを適用できない場合、bskyのsubscriptionテーブルにカーソルを挿入して問題のあるseq=1をスキップする:
|
||||
|
||||
```bash
|
||||
# bskyデータベースに接続してカーソルを設定
|
||||
$ docker compose exec database psql -U postgres -d bsky -c \"INSERT INTO subscription (service, method, state) VALUES ('wss://bgs.syu.is', 'subscribeRepos', 2) ON CONFLICT (service, method) DO UPDATE SET state = 2;\""
|
||||
|
||||
# bsky再起動
|
||||
$ docker compose restart bsky
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user