Workflow middlewares don't raise error on workflow execution failure
まだ誰も着手していません。
評価
調査の方向性
worker.rb と metrics_workflow_middleware.rb から始めて、workflow middleware がどのように登録され、yield の周辺で失敗が現在どのように処理されているかを理解します。middleware を呼び出す workflow の実行経路をたどり、そこで失敗した実行をどのように検知できるかを確認します。middleware が失敗した実行に対して workflow_failed を発行し、成功した実行に対しては workflow_completed を維持できれば完了です。
索引モデルが issue の本文から書いたものです。
説明
I'd like to emit the metric workflow_failed when the workflow execution fails (replicating metrics emitted by other SDKs). To achieve that, I registered a workflow middleware in my worker. In my middleware, I rescue errors and emit this metric.
The problem is that the workflow middleware doesn't raise an error when the workflow execution fails. AFAIK, there is no way of knowing if the workflow execution failed in the context of a workflow middleware. Conversely, in the activity middleware, errors are raised so it's possible to emit the metric activity_exectuion_failed. How can I emit the workflow_failed metrics when the workflow execution fails?
Setup:
worker.rb:
class Worker < Temporal::Worker
def self.start
worker = Temporal::Worker.new
# configure...
worker.add_workflow_middleware(MetricsWorkflowMiddleware)
worker.start
end
end
metrics_workflow_middleware.rb:
class MetricsWorkflowMiddleware
def call(metadata)
yield
Statsd.increment('workflow_completed')
rescue StandardError
Statsd.increment('workflow_failed')
raise
end
end
- 主要言語
- Ruby
- スター
- 288
- フォーク
- 113
- 平均マージ
- 10日 15時間
- マージ済み PR(30日)
- 2
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
coinbase/temporal-ruby のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
coinbase/temporal-ruby#361 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 35/100
coinbase/temporal-ruby#341 ·
-
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
coinbase/temporal-ruby#328 · コメント 1 件 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 45/100
coinbase/temporal-ruby#326 · コメント 1 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
coinbase/temporal-ruby#324 · コメント 3 件 · リアクション 2 件 ·
coinbase/temporal-ruby の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
-
bug
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
riscv/riscv-unified-db#2626 ·
-
Component: GLib
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
-
ds-drift
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
we-promise/sure#3693 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
simp/pupmod-simp-simp#395 ·