Releases: totegamma/concurrent
v1.1.0 policy system implementation
v1.1.0 policy system implementation
仮実装だったポリシーシステムが本実装されました。これにより、タイムラインに投稿できるスキーマタイムの限定など、より細かいアクセス制御が可能になります。
修正
- 投稿先がホームしかない投稿にリアクション飛ばすとリアルタイムで更新されない問題が修正されました
v1.0.13 tweaks
このリリースにはいくつかの機能追加とバグ修正が含まれています。
アップデートに際し、特殊な対応は不要です。
追加
- configから利用するRedisのDB Indexが選択できるように設定を追加しました
- 環境変数でリッスンするポートを選択できるようにしました
修正
- 外のドメインのタイムラインをSemanticID Formatで参照したときにリアルタイム受信ができていなかった問題を修正しました
- 応答のないサーバーを記録しておくことで、クエリ中に応答のないサーバーが含まれていても利用可能な情報を即座に返すように変更しました。
その他
本リリースからDockerイメージだけでなく実行バイナリ単体がReleaseに付属するようになりました 🎉
v1.0.12 association bug fix
このリリースにはいくつかのバグ修正が含まれています。
アップデートに際し、特殊な対応は不要です。
修正
- 担当外Associationを受け取った際に、正しくdistributeが行われない問題を修正しました。
- これにより、concurnt.worldでは外部のユーザーの投稿へつけたAssociation(ふぁぼやリアクションなど)が自分のアクティビティリストに入らない問題が修正されます。
- ドメイン所有オブジェクトに対するコミットログが記録されない問題を修正しました
v1.0.9 fix commit-log duplication bug
修正
ユーザーによる各種投稿は一度redis streamに入り、その後日付別・ユーザー別でログファイルに書き出しが行われます。
が、この箇所でログポジションのハンドリングにバグがあり、これらのログが一部重複して記録されるようになっていた箇所を修正しました。
また、一部の外部ユーザーのコミットもファイルとして保存されていたバグも併せて修正しました。
アップデート対応
コンカレントにおける投稿データのコミットは冪等である為、重複状態を放置していても大きな問題にはなりませんが、気持ち悪く感じる場合は以下の手順でリセットすることができます。 (redisのデータが一度も失われていないことが前提となります。失われている場合は、気合で突き合わせする必要があります。)
- 旧バージョンのccapiを終了するかアクセスを遮断し、新規コミットが行われないようにします
- /var/lib/concrnt以下を消去します
- ccapiを新しいバージョンで起動します
この手順を踏むと、redis上のデータを重複なく再度ファイルに書き出すことができます。
一方で、外部ユーザーのコミットはredisにすでに格納されてしまっているため、このリセットを行ってもファイル自体は再度作成されてしまいますが、今後は追記が行われません。気になる場合は手動で削除(誤って在住ユーザーのログを消さないように!)しても問題ありません。
v1.0.3 First v1 release
v1系最初のリリースです。
v0系と互換がありません。すべて初期化し、構築する必要があります。
セットアップ方法は https://square.concrnt.net/operator/ にてまとめています。
v0.6.11 Add Export Endpoint
手動対応は必要ありません。
(おそらく)v0系最後のリリースです。
新規
自分のメッセージをエクスポートするエンドポイントを追加しました。
v0.6.8 Add Stream Reader Option
手動対応は必要ありません。
新規
SteramにReaderオプションを追加
(以前からconcurrent.worldにUIは出ていましたが)StreamにReaderオプションが設定できるようになりました。
Readerが空の時は、パブリックStreamになり、中にユーザーの配列を入れると、messageはそのユーザーのリクエストでしか返されなくなります。
v0.6.7 Tweak CharacterAPI
手動対応は必要ありません。
変更
Characterを取得するAPIの動作を変更
今までGET /charactersはauthorとschemaの2つのパラメーターのandによるクエリしかできませんでしたが、author指定のみ、schema指定のみでもクエリできるように変更しました。しかし、この変更は暫定的なものです(今後それぞれ別の専用のAPIパスに変更する可能性があります)
新規
CharacterをIDで取得・削除するAPIを追加
今までなぜか GET, DELETE /character/:id なAPIが存在していなかったので追加しました。
v0.6.6 SubkeySupport
手動migrationは必要ありません。そのままバージョンを上げることができます。
変更
認証
内部の認証周りのハンドリングが一新されています。
従来はcc-gatewayとcc-apiで二重にjwtをパースして解析していましたが、cc-gatewayで解析を行い、その結果をhttp headerで渡すといった方法に統一されています。
新しくauthモジュールに追加されたReceiveGatewayAuthPropagation middlewareで認証情報を受け取ることができます。(参考: cc-media-serverはこれを使った実装になっています)
Ackの署名形式
Ackの署名形式がAckだけ古い独自のものだったのを、SignedObject形式に統一しました。
現在新旧共に混在する状態になっています。古い形式の処遇に関しては検討中です。
Observability
ログの出力形式がフリースタイルからjsonに変更されています。
また、メトリクスも各リソースの数やソケットの接続数などカスタムなものが一部追加されています。
新規
サブキー
新しくサブキーの概念が実装されました
これは、証明書チェーンの概念を利用して、アドレスに紐づく秘密鍵を権威としてほかの鍵にそのアカウントの操作を移譲したうえでその正当性を第三者から検証可能にするものです。
簡単に言うと、今まで秘密鍵が1つバレると一発アウトの状態だったのが、身代わりをいくつも作れるようになりました。
サーバー側のAPIとしてはキーの作成・無効化・キー解決の取得、所持キー一覧の取得の4つのAPIが新しく追加されています。
また、ユーザーから投稿されたリソースの検証にもサブキーを適宜利用し検証が行えるようになっています。
v0.5.3 [ManualMigrationRequired]
migration手順
一度アップデート後のイメージで起動してautomigrationを走らせたのち、db以外を落としておく。
-- Entityのレコードを削減する準備
alter table acks drop constraint fk_entities_acker;
alter table acks drop constraint fk_entities_acking;
-- どうせ外部ユーザー情報は自動で取得されるので雑に削除
delete from entities where domain is not null and domain != '';
-- 必要情報をentity_metaに移動
insert into entity_meta (id, inviter, info) select id, inviter, meta as info from entities;
-- いらなくなったカラムを削除
alter table entities drop column domain;
alter table entities drop column certs;
alter table entities drop column meta;
alter table entities drop column inviter;
-- ackの状態を更新
update acks set valid = payload->>'type' = 'ack';
-- 外部ユーザー情報の取得を1から行う
update domains set last_scraped = 'epoch';