These are chat archives for atomix/atomix

Jul 2016
Jordan Halterman
Jul 14 2016 00:05
That probably means the join is being done inside the bread that also completes the CompletableFuture. There are two threads in the CopycatClient, the I/O and event threads. The I/O thread is used for requests and responses, and the event thread is used for events. The event thread can be blocked e.g. if you receive an event and then make a blocking request. In that case Copycat will detect that a future is blocking the thread and complete it on the I/O thread instead. But the same is not true for the I/O thread. If some callback is called on the I/O thread you can't block within that callback. There are just current limitations to where you can block just by the nature of threads. We could start threads just to complete futures, but we'd lose determinism and potentially have to create more threads to complete more blocking futures. There's also some potential for deadlock depending on what the state machine is doing.
Ugh typing on my phone
thread* not bread
Evan Lindsay
Jul 14 2016 00:06
ok, just was curious as to what exactly was happening.
Jordan Halterman
Jul 14 2016 00:09
That's the same thing that's done with asynchronous callbacks in ZooKeeper according to their documentation