foxcpp / foxcpp/maddy

Enforce reasonable timeouts for all routines

オープン
#370 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Go
スター
6.1k
フォーク
327
PR マージ指標
30日以内にマージされた PR はありません

説明

As part of the goal to improve maddy robustness, context.Context should be used
consistently in all interfaces and reasonable timeouts for operations should be enforced
using these.

- [ ] SMTP check methods
- [ ] SMTP modifier methods
- [ ] IMAP commands (server)
- [ ] SMTP commands (server)
- [ ] Delivery target operations

With that considered, maddy should have as much operations as possible implemented
in a rollback-able way so composite operations could be cancelled due to timeout in one of
sub-operations.

Notable considerations:
- [ ] Delivery.AddRcpt should be revertable. At least last call should be.

With current implementation (non-revertable AddRcpt), it is possible that if multiple delivery targets are used
for one recipient, duplicate messages may be delivered in case of partial failures.

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

まず、issue で言及されている SMTP のチェックおよび変更メソッド、IMAP および SMTP サーバーコマンド、配信先に対する操作を一覧化します。次に、context.Context とキャンセルが現在これらのインターフェースをどのように流れているかを追跡し、各操作のタイムアウトおよびロールバックの動作を定義します。完了の条件は、Delivery.AddRcpt の直近の呼び出しを元に戻すことも含め、一覧化した操作を安全にキャンセルできることです。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
go
領域
backend
issue の種類
機能追加
難易度
5/5
見積もり時間
1週間以上
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
20/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。