Check out the Issue Explorer
Looking to fund some work? You can submit a new Funded Issue here.
# Overview / Motivation
`ConnectionPool` manages the open connection we have, we might `Dial` and get a new connection which will be closed later we'll have another connection with the same peer and we decide to keep his.
this causes one of the initiators to cancel his procedure because the connection is stale. we need to figure out the connection is stale as soon as possible and maybe abstract a retry that tries a new connection or tries to locate another existing connection before giving up on the procedure.
# The Task
Implement retries on sending messages which consider connections closing meanwhile and retrying.
this aims to solves that a protocol that requests sending a message will not get a timeout if the connection is closed because of connections conflict. ( we will seamlessly retry sending on the other connection)
# Implementation Notes
TODO: Add links to relevant resources, specs, related issues, etc...
One possible solution is to supply connections only from `ConnectionPool` and wrap them in a way that tries finding a new connection on a message failure (at least once for now) before returning an error.
# Time Estimation
1.5 days (12 hours)
# Contribution Guidelines
Important: Issue assignment to developers will be by the order of their application and proficiency level according to the tasks complexity. We will not assign tasks to developers who have'nt introduced themselves on our Gitter [dev channel](https://gitter.im/spacemesh-os/Lobby)
1. Introduce yourself on go-spacemesh [dev chat channel](https://gitter.im/spacemesh-os/Lobby) - ask our team any question you may have about this task
2. Fork branch `develop` to your own repo and work in your repo
3. You must document all methods, enums and types with [godoc comments](https://blog.golang.org/godoc-documenting-go-code)
4. You must write go unit tests for all types and methods when submitting a component, and integration tests if you submit a feature
5. When ready for code review, submit a PR from your repo back to branch `develop`
6. Attach relevant issue to PR