Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Arrow 2.0 Resilience #2876

Closed
wants to merge 8 commits into from
Closed

Arrow 2.0 Resilience #2876

wants to merge 8 commits into from

Conversation

serras
Copy link
Member

@serras serras commented Dec 28, 2022

According to our plan (laid our in #2778), we want to split a few classes to a new library, targeting resilience.

  • Split CircuitBreaker and Schedule into its own package
  • Provide Kotlin-native implementation of Resilience4j's core modules
    • Bulkhead
    • RateLimiter
    • TimeLimiter

@serras serras requested review from raulraja and nomisRev December 28, 2022 10:48
@serras serras mentioned this pull request Dec 28, 2022
20 tasks
@serras serras requested a review from i-walker December 28, 2022 10:57
@nomisRev
Copy link
Member

nomisRev commented Jan 2, 2023

I think we can/should do this in 1.x.x directly, it doesn't impact any of the existing binaries and that allows us to easily deprecate / migrate in 1.x.x. WDYT?

I discussed some of these types with @raulraja in the past, but at the time we felt that these need some kind-of distributed state 🤔

 - [ ] Bulkhead
 - [ ] RateLimiter
 - [ ] TimeLimiter

Some features I am missing currently:

  • CircuitBreaker is sliding-window reset, and perhaps some other reset mechanism.
  • Remove dependent type type machinery from Schedule + improve test coverage / fix outstanding bugs.

@serras
Copy link
Member Author

serras commented Jan 6, 2023

I'm fine with any choice you make, I just made the list because in one of the Arrow meetings we discussed being on par with other resilience libraries, but in pure Kotlin.

I'm not entirely sure about back-porting this to 1.x, since we cannot deprecate a package in such a simple way as we do with types. But if you prefer to do so to make transition easier, I'm happy to back-port it.

@nomisRev
Copy link
Member

nomisRev commented Jan 6, 2023

I'm fine with any choice you make, I just made the list because in one of the Arrow meetings we discussed being on par with other resilience libraries, but in pure Kotlin.

yes, that’s awesome. Thank you so much 🙏 Just wanted to open the discussion ☺️

I'm not entirely sure about back-porting this to 1.x, since we cannot deprecate a package in such a simple way as we do with types. But if you prefer to do so to make transition easier, I'm happy to back-port it.

Right, I was thinking to deprecate the types with a message saying “Add Resilience dependency, and change package”. Could even add a ReplaceWith.

Since it’s non-breaking, it might be better to give a grace period with deprecation. WDYT?

@serras serras mentioned this pull request Jan 9, 2023
@serras
Copy link
Member Author

serras commented Jan 9, 2023

Superseded by #2885

@serras serras closed this Jan 9, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants