Evaluate & potentially replace `https://github.com/soheilhy/cmux`
- 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
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