bitcoinj / bitcoinj/bitcoinj

Remove usage of Guava `Service` and subclasses in `ClientConnectionManager` and subclasses.

Open
#4,079 1 comment 0 reactions 0 assignees View on GitHub
Developer discussion Guava
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.