You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The current implementation of circuit breaking is fragile and obscure. Currently, It follows a functional approach, and we just wrap the Start method of a component to subscribe for a specific fraud type and also give its Stop method, so that once fraud happens, the component is automatically stopped.
Instead, we should introduce a new component, something like FraudLifecycler, with an API that allows registering callbacks for fraud events of a specific type. This will:
Detangle the logic
Separate the lifecycle context from the start context
Enable responsiveness for its internal events
The text was updated successfully, but these errors were encountered:
This PR solves two problems:
* Updates FX and fixes issues we observed in [the
PR](#1801)
* Fixes#2041
Surprisingly, those two problems were related, so I decided to fix them
once and for all. The issue with FX happens after [this
change](uber-go/fx#983). The outcome of this
change is summarized:
> In other words, lifecycle hook annotations can no longer pull in extra
> dependencies outside of things on which
> the annotated constructor is dependent, results that the annotated
> constructor provides, context.Context
> object which is injected by Lifecycle, and the Lifecycle object itself.
Our current code does pull extra dependencies in the service having
`modfraud.Lifecycle` on them, like
[DASer](https://github.com/celestiaorg/celestia-node/blob/main/nodebuilder/das/module.go#L47).
Specifically, it pulls FraudService, and this is no longer allowed. This
forces us to rewrite the fraud lifecycling and here is the solution,
which additionally satisfies #2041.
This also unblocks
#2040, which is now
implemented in celestiaorg/go-fraud#1
I tried to split FX update and the refactor into two diff PRs. However,
the solution does not work with the old FX version, so we have to couple
those.
The chain here is that I needed a new version of FX that fixes
`OnStart/OnStop` hooks, and updating created the whole story. The PR
that does clean-ups basing on new version of FX will com right after.
The current implementation of circuit breaking is fragile and obscure. Currently, It follows a functional approach, and we just wrap the Start method of a component to subscribe for a specific fraud type and also give its Stop method, so that once fraud happens, the component is automatically stopped.
fraudserve.Service
should stop joined PubSub topics onStop
#2040Instead, we should introduce a new component, something like
FraudLifecycler
, with an API that allows registering callbacks for fraud events of a specific type. This will:The text was updated successfully, but these errors were encountered: