-
Notifications
You must be signed in to change notification settings - Fork 189
Description
While working on #1066 and the integration tests for the roles, I noticed a few technical debts that would need to be addressed in a future refactor:
** Note that the goal of this issue is to document the different problems within the roles code, but we are not planning to resolve them until we are done with #845.
The following points are related almost always to all of the roles:
-
Problem:
async-channelis used withintokiocontext which can result in an unexpected bugs
Solution: usetokiochannels https://tokio.rs/tokio/tutorial/channels -
Problem: Some struct(s) function(s) have weird signatures like
self_: &Arc<Mutex<Self>>
Solution: Wrap only the properties that need to be mutated in aMutex -
Problem: An internal
Muteximplementation is used
Solution: use https://docs.rs/tokio/latest/tokio/sync/struct.Mutex.html instead -
Problem: Duplicate code between the different roles. Some roles need
Downstreamservice, others needUpstream. Usually this is just a server.
Solution: use a common definition forUpstream,Downstreamacross theroleswhere possible -
Problem: Config properties are not clear and not grouped in structs
Solution: Group properties into structs with more clear names -
Problem: Roles have more responsibilities than needed. For example the
poolrole is required to connect to theTemplateProviderinstead of receiving theTemplateProviderconnection as an input.
Solution: Minimize code insiderole::startfunctions across the different roles to only do whats that role is responsible for.