Remove usage of Guava `Service` and subclasses in `ClientConnectionManager` and subclasses.
- Dominant language
- Java
- Stars
- 5.2k
- Forks
- 2.6k
- Avg merge
- 10h 56m
- Merged PRs (30d)
- 18
Description
We have issues and/or under-review PRs to remove most/all other usages of Guava except `Service`, which is used by `ClientConnectionManager` and `WalletAppKit` (See Issue #3299)
PR #3796 "deprecated" (via comment not annotation) the use of `Service` in the `ClientConnectionManager` interface. However, I propose that we move ahead and try to remove usage of `Service` for `ClientConnectionManager` in the 0.18 release. It is a low-level interface and shouldn't be used by many applications.
(`WalletAppKit` is our "preferred" high-level API for the wallet, so changing it is tricker and may require formal `@Deprecation`. See Issue #3299)
I think it makes sense to try to re-implement (or replace) `ClientConnectionManager` before re-implementing `WalletAppKit`. This should also (probably) be done before:
* Issue #2101
* Issue #2794
* Resolving issues with quickly finding Bloom nodes -- see Issue #4080
* Work on Compact Block Filters
* Work on the new encrypted P2P
However, if we are able to simplify enough by refactoring away from Guava `Service` it may make some of those tasks easier.
Contributor guide
Research direction
Start by reviewing the ClientConnectionManager interface and its subclasses to map their usage of Guava Service. Compare that work with WalletAppKit and the related issues named in the report; done means ClientConnectionManager no longer depends on Service while its existing users and the planned networking work remain supported.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- networking
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100