These are chat archives for atomix/atomix

9th
Apr 2018
Jordan Halterman
@kuujo
Apr 09 2018 00:54

@dualscyther Copycat did use reflection, but it’s really just magic over a StateMachineExecutor which has methods for registering state machine operations. Now there’s a configure method in Atomix state machines that you can find in any primitive:
https://github.com/atomix/atomix/blob/master/core/src/main/java/io/atomix/core/map/impl/ConsistentMapService.java

Basically, operations are identified by enum values, and enum values are mapped to methods in the configure method.

Jordan Halterman
@kuujo
Apr 09 2018 04:11
@dualscyther also I’d love to see the BFT work
Johno Crawford
@johnou
Apr 09 2018 07:31
@kuujo first time I see the CI OOM
03:52:10.212 [netty-messaging-event-epoll-client-3] ERROR i.a.m.impl.NettyMessagingService - Exception inside channel handling pipeline.
java.lang.OutOfMemoryError: GC overhead limit exceeded
Daniel Tam
@dualscyther
Apr 09 2018 13:32
cheers @kuujo ! I'm currently doing it for a thesis project due in about 3 months time, at which point I'll be releasing the source code. The plan is to develop minimal capabilities + API so that it can be used by the Corda platform. This way I can compare performance with BFT-SMaRt and Copycat, the two libraries currently used by Corda
it will implement DBFT, a new BFT algorithm which is not based on PBFT.
http://csrg.redbellyblockchain.io/doc/ConsensusRedBellyBlockchain.pdf
Crain, Tyler, Vincent Gramoli, Mikel Larrea, and Michel Raynal. "(Leader/Randomization/Signature)-free Byzantine Consensus for Consortium Blockchains." arXiv preprint arXiv:1702.03068 (2017).
Johno Crawford
@johnou
Apr 09 2018 13:35
bit of a shame you aren't using atomix 2 but I guess the state machine could probably be ported over easilyish
Daniel Tam
@dualscyther
Apr 09 2018 13:45
using atomix 2 for which part exactly? I'm essentially trying to build a library just to implement consensus. So I won't be worrying about serialization, transport or durability except for testing purposes at this stage. I was planning on using Catalyst for transport as a dependency injection sort of thing. Thoughts?
Johno Crawford
@johnou
Apr 09 2018 13:52
oh right nvm then :)
Johno Crawford
@johnou
Apr 09 2018 20:28
@kuujo this one?
[ERROR] testClusterService(io.atomix.cluster.impl.DefaultClusterServiceTest) Time elapsed: 3.069 s <<< FAILURE!
java.lang.AssertionError: expected:<5> but was:<4>
at io.atomix.cluster.impl.DefaultClusterServiceTest.testClusterService(DefaultClusterServiceTest.java:167)
Jordan Halterman
@kuujo
Apr 09 2018 21:20
Yeah just fixed it
I’m actually in the process of rewriting the failure detection algorithm since we’ve been getting a lot of false positives in production. So probably will replace a lot of the ClusterService some time this week
Johno Crawford
@johnou
Apr 09 2018 21:21
from scratch or maybe we can borrow from akka?
Jordan Halterman
@kuujo
Apr 09 2018 21:30
Not using phi accrual... switching to SWIM
And borrowing from HashiCorp
We’ll see how it goes
Johno Crawford
@johnou
Apr 09 2018 21:31
:+1:
Johno Crawford
@johnou
Apr 09 2018 23:19
@kuujo good to close this one, right? atomix/atomix#397