Releases: totegamma/concurrent
v1.6.0
追加
通知サービスの追加
通知を有効化するには、vapidキーを設定する必要があります。
helm chartを使っている場合はバージョン0.4.2にアップデート、docker compose等で手動でconfigfileを設定している場合はドキュメントを参考に設定してください。
vapidキーはconctl gen vapid
コマンドで生成可能です。conctlコマンドはgo install github.com/concrnt/conctl@latest
でインストール可能なほか、apiのdockerイメージにはインストールされています。
サーバー発行招待コードの追加
招待権を持っているユーザーのほかに、サーバーから直接招待コードを発行できるようになりました。
招待コードはconctl gen invite
で生成可能です。サーバーの鍵を読み込ませる必要がある為、apiのdockerイメージに入って実行するのが手軽です。
調整
- バージョン1.3系との互換性コードを除去しました
v1.5.0
アップデート方法
本アップデートはアップデートに伴い特にコマンド等を必要としませんが、RateLimiterが導入されたため、これに合わせてgateway configを編集することをおすすめします。
追加
Retract Document Typeの追加
タイムラインの所有者が、タイムラインに投稿されたメッセージに対してそのメッセージをそのタイムラインからだけ除外できるようなドキュメントが新しく定義されました。主にモデレーションの用途で利用可能です。
タイムラインからの除外は結果整合で、実際に反映されるまで1~2分程度かかる場合があります。
Rate Limiterの追加
APIに対してレートリミットを設定できるようになりました。ログイン済みであればログインIDが、匿名リクエストであればIPがキーになります。
それぞれのAPIのレートリミットの許容値はgateway configで編集できます。
https://github.com/concrnt/helmcharts/blob/main/charts/concrnt/templates/configmap.yaml をそのままコピーすることをおすすめします。
変更
Messageにデフォルトポリシーを追加
投稿したメッセージの投稿先に外部サーバーのタイムラインが含まれていて、投稿後そのサーバーが閉鎖された際に見えていいのか・見えてはいけないかの判断が正しくできなくなってしまうことの対策として、メッセージごとにデフォルトのポリシーの挙動を設定できるようになりました。
その他
gateway configで使うサービスの名前を改めて定義しなおしたため、これに合わせて命名を変更することをおすすめします。
クライアントから「このドメインはこのサービスが有効化されているか?」の判定を行うのにこの名称を利用しています。
net.concrnt.webui
net.concrnt.api
world.concrnt.ap-bridge
world.concrnt.webfinger
world.concrnt.hyperproxy.summary
world.concrnt.hyperproxy.image
world.concrnt.mediaserver
v1.4.1 [fix for v1.4.0]
v1.4.1は、v1.4.0でレポジトリデータの重複を許容してしまう問題が修正されています。
v1.4.0をスキップして(v1.3系から)直接v1.4.1にアップデートすることもできますが、v1.4.0と同様バックアップデータの移行が必要なので(まだ実施していなければ)v1.4.0の手順を参考にコマンドを実行してください。
v1.4.0を利用していたサーバーは、v1.4.1にアップデートする前に重複データの削除が必要です。
重複データの確認は、次のSQLをDBに発行することで可能です。
SELECT co.*
FROM commit_owners co
JOIN commit_owners co_sub
ON co.commit_log_id = co_sub.commit_log_id
AND co.owner = co_sub.owner
AND co.id > co_sub.id;
このクエリで重複するデータが検出された場合は、次のクエリで除去します。
DELETE FROM commit_owners co
USING commit_owners co_sub
WHERE co.commit_log_id = co_sub.commit_log_id
AND co.owner = co_sub.owner
AND co.id > co_sub.id;
これを実行することで、v1.4.0からv1.4.1にアップデートすることができます。
v1.4.0 [Manual Operation Required]
[新規採用は非推奨] 代わりにv1.4.1を利用してください
1.4.0ではいままでredis-stream及びテキストファイルを利用して作られていたユーザーのバックアップデータを、すべてDBで一括管理するように変更されました。
そのため、手動コマンドでredis-streamからDBにデータを移し替えるコマンドをアップデート後「1度だけ」実行する必要があります。
手動対応
apiポッドのシェルで次のコマンドを実行する必要があります (データベース名やホスト名は適宜変更する必要があります)
conctl migration -H db -r redis:6379 -d concrnt commits-redisstream-to-db
このコマンドは1度だけ実行してください。
この作業はサービス中でも実施可能ですが、万が一途中で失敗した場合、テーブルを削除して再度実行する必要がある為、サービスを止められるのであれば止めた方が安全です。(でないと、作業中のユーザーのデータがバックアップから失われてしまう)
また、これによりredis-stream及び/var/lib/concrnt以下のバックアップファイルは安全に削除することができます。特に、redis-streamはそのぶんだけメモリを消費しているため、オペレーション完了後バックアップを取って削除するのがおすすめです。
実行例
root@ccapi-67b86b7cd4-kjz54:/# conctl migration -H db -r redis:6379 -d concrnt commits-redisstream-to-db
Processed 0 messages of 105583
...
Processed 102441 messages of 105583
Created: 85653
Updated: 16788
Skipped: 3142
Errored: 0
root@ccapi-67b86b7cd4-kjz54:/#
対応が完了していれば、
データ管理の更新をリクエストー>ちょっと待ってからリロードボタンを押す→エクスポート
で、それっぽいデータ(自分の全投稿なのでそこそこ大きいデータ)が振ってくるはずです。
v1.3.3
v.1.3.3では、サーバーの識別子としてccidとは別に新しくccs1から始まるcsidが追加されます。
これによってtimeline等のローカルリソースに対してもassociationを付与できるようになりました。
互換性
- 外部サーバーへの書き込みは、相手サーバーがv1.3.2以上である必要があります
追加
- 今まであった
/message/:id/associations
APIに加え、/timeline/:id/associations
,/subscription/:id/associations
,/profile/:id/associations
とほかのリソースのassociationを参照するAPIが追加されました
変更
/domain/:id
APIでCSIDも解決できるようになりました
v1.3.0
v1.3では、ほかのサーバーとのタイムラインとの同期を行うAPIが異なる方式に更新されています。これにより、キャッシュ戦略がより効率よくなっています。
互換性
v1.3系と互換性のあるAPIを持っている下位のバージョンはv1.2.1のみです。
変更
- 外部サーバーとのタイムライン同期に用いるAPIを、
/timeline/chunk
から/chunks/itr
と/chunks/body
に変更しました。 - itrを求めるn+1クエリを変更しました。
- タイムラインをsortするアルゴリズムを変更しました。
追加
- 外部サーバーへのリアルタイムコネクションの要求数/実際の接続数を表すメトリクス
cc_timeline_outer_connections
を追加しました。 - timelineの読み込みに際し、itrステージ、bodyステージにおけるキャッシュ状況を表すメトリクス
cc_timeline_lookup_chunk_itr_total
、cc_timeline_load_chunk_bodies_total
を追加しました。
修正
- entityメトリクスが実際の値よりもどんどん大きくなっていってしまう問題を修正しました
- キャッシュがリセットされた際に、サーバーが再起動するまでメッセージ数などの各種リソース数のメトリクスが取得できなくなる問題を修正しました
v1.2.1
v1.2.0
v1.1.3 bug fix
修正
まだconcrnt.worldでは本格的に活用されていない機能ですが、タイムライン単位ではなくメッセージ単位の閲覧権限が正しく動作しない問題を修正しました
v1.1.1 fix default policy
このリリースではv1.1.0にあるいくつかのバグが修正されています
Bug Fixes
- メッセージの読み込みポリシーで、一般公開タイムラインの読み込み許可がオーバーライドよりも強く設定されていた問題を修正
- 一部条件でタイムラインが正しく解決・更新できない問題の修正