Skip to content

Releases: totegamma/concurrent

v1.6.0

26 Nov 10:44
Compare
Choose a tag to compare

追加

通知サービスの追加

通知を有効化するには、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

21 Oct 11:11
Compare
Choose a tag to compare

アップデート方法

本アップデートはアップデートに伴い特にコマンド等を必要としませんが、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]

14 Oct 08:17
Compare
Choose a tag to compare

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]

14 Oct 06:23
Compare
Choose a tag to compare

[新規採用は非推奨] 代わりに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:/#

対応が完了していれば、
データ管理の更新をリクエストー>ちょっと待ってからリロードボタンを押す→エクスポート
で、それっぽいデータ(自分の全投稿なのでそこそこ大きいデータ)が振ってくるはずです。
image

v1.3.3

23 Sep 03:28
Compare
Choose a tag to compare

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/:idAPIでCSIDも解決できるようになりました

v1.3.0

06 Sep 14:42
6095dfa
Compare
Choose a tag to compare

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_totalcc_timeline_load_chunk_bodies_totalを追加しました。

修正

  • entityメトリクスが実際の値よりもどんどん大きくなっていってしまう問題を修正しました
  • キャッシュがリセットされた際に、サーバーが再起動するまでメッセージ数などの各種リソース数のメトリクスが取得できなくなる問題を修正しました

v1.2.1

31 Aug 07:51
Compare
Choose a tag to compare

Concrntでは現在タイムラインのキャッシュ効率をより向上させているバージョン1.3の開発を進めていますが、このバージョンv1.2.1では1.3系と互換性を持たせるためのサーバー間通信用のAPIが追加されています。

修正

  • レスポンスタイムのメトリクスがwebsocketの通信時間も含んでおり、たまに外れ値を含んでしまう問題を修正しました

v1.2.0

24 Aug 03:27
Compare
Choose a tag to compare

追加

query APIの追加

1つのタイムラインを特定のユーザー・投稿タイプでフィルターして取得できるAPIを追加
投稿タイプでのフィルターが適用されるのは、本アップデート適用後の投稿からになるので早めのアップデートをおすすめします。

cc_timeline_realtime_connectionsメトリクスの追加

現在のリアルタイムセッション数を表すメトリクスを追加しました

v1.1.3 bug fix

21 Aug 17:40
Compare
Choose a tag to compare

修正

まだconcrnt.worldでは本格的に活用されていない機能ですが、タイムライン単位ではなくメッセージ単位の閲覧権限が正しく動作しない問題を修正しました

v1.1.1 fix default policy

20 Jul 14:20
Compare
Choose a tag to compare

このリリースではv1.1.0にあるいくつかのバグが修正されています

Bug Fixes

  • メッセージの読み込みポリシーで、一般公開タイムラインの読み込み許可がオーバーライドよりも強く設定されていた問題を修正
  • 一部条件でタイムラインが正しく解決・更新できない問題の修正