WIP Changed Service interface
Service could be much simplified. We shouldn't be masking race conditions by letting the caller call Start/Stop willy nilly. If one needs to rely on such patterns, it's probably because one has racy buggy software.
Now that we know better, lets refactor and test Tendermint to see how racy it is.
We don't use Restart as far as I know.
@odeke-em I like the idea of protecting everything. What do you think about just removing SetLogger and SetServiceCore from the interface. Both need to be passed into the constructor and then it can only be started and stopped.
Just noting that we'll want to expose the quit chan somehow. Maybe Quit() <- struct{}
@greg-szabo let's add this to next release (not 0.16) and discuss on monday
damn we forgot to talk about this. maybe we do need to use an organization level kanban @greg-szabo @jolesbi
@greg-szabo can you put it on the tendermint meeting agenda for next week? alternatively, someone can set up a call to discuss. #zoomzoom 🚗
We should move the Service to Tendermint. It's the only consumer AFAIK.
Same with the timers!
this PR is now captured in https://github.com/tendermint/tendermint/issues/1882 but let's leave it open for now so the branch doesn't get deleted, or close and delete if obsolete