etcd-io / etcd-io/etcd

Evaluate & potentially replace `https://github.com/soheilhy/cmux`

Open
#18,032 9 comments 0 reactions 0 assignees View on GitHub
priority/important-longterm stage/tracked type/feature
Dominant language
Go
Stars
52.3k
Forks
10.5k
Avg merge
2d 21h
Merged PRs (30d)
43

Description

### What would you like to be added?

etcdserver depends on https://github.com/soheilhy/cmux to receive both gRPC and REST connections on the same TCP listener/port. But the library isn't well maintained; note it hasn't been updated for more than 3 years at the time of writing this ticket. It also has issue working with HTTP/2, please refer to [soheilhy/cmux/issues](https://github.com/soheilhy/cmux/issues).

We should evaluate & summarize the problems the library has, and
- either try to find an alternative solution.
- or completely separate gRPC and REST/HTTP connections;

I expect someone with more network expertise could drive this effort.

### Why is this needed?

See above

Contributor guide

Open the contributing guide

Research direction

Start by reviewing how etcdserver uses soheilhy/cmux to share a TCP listener, then examine the linked cmux issues for HTTP/2 problems. Done means documenting the library's problems and recommending either a viable alternative or separate gRPC and REST/HTTP connections, with implementation scope identified.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
distributed-systems, 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.