These are chat archives for atomix/atomix

10th
Jun 2016
andreas-gilbert
@andreas-gilbert
Jun 10 2016 06:41 UTC
@kuujo I need a two-node cluster due hardware restrictions. But with AtomixClient i still need a third node - correct ?
Madan Jampani
@madjam
Jun 10 2016 18:11 UTC

There is one more bug fix in Copycat I'd like to see part of the next release. This one has to do with client behavior around session changes. When a client recovers after a session expiration there exists a race condition where the client transitions to CONNECTED state before the
replacement session is set on the client. So any logic that tries to use the client after this state transition but before the session switch happens will fail with a closed session error.

I'm currently on vacation until Sunday and therefore bbunable to open a PR for this.

jamiethermo
@jamiethermo
Jun 10 2016 19:14 UTC
I have a question about copycat. Are there any example of using it without the client library, where the process that is running copycat is handling state changes by listening to streams, or implementing a rest client directly? Basically I have a stateful application, with state in memory, but I want to be able to fail-over quickly or recover from a log if need be. Having a leader is fine (required even). That sound doable with copycat or should I be looking at something else? Thanks!
Jonathan Halterman
@jhalterman
Jun 10 2016 19:29 UTC
@jamiethermo It's hard to do away with a client since it manages sessions and the delivery of session events according to Copycat's guarantees. We've talked in the past about having a Confluent Platform style REST proxy that can proxy requests through a client to a server. One of the challenges is maintaining sessions though. Guarantees are given per session, which could mean needing something like sticky sessions in an HTTP server/proxy, and also, ideally, a way to deliver server events back to HTTP clients. I'm sure @kuujo can share some more thoughts...
jamiethermo
@jamiethermo
Jun 10 2016 19:32 UTC
Dont need any guarantees per session. Wont have any long lived sessions. I suppose my system could be the client and talk to a copycat server. But I'd rather just run one process on each machine.
Theres a lot of emphasis on the client order of execution which i dont need. If i dont need that is copycat total overkill then?
Jonathan Halterman
@jhalterman
Jun 10 2016 19:35 UTC
Possibly, depending on your needs. Ordering helps ensure that data isn't lost or accidentally overridden, such as if you have concurrent or nearly concurrent writes to the same bit of data.
/cc @kuujo
jamiethermo
@jamiethermo
Jun 10 2016 19:39 UTC
Ok. If I wanted to run my client in the same JVM, on the leader. Where do I need to hook in to bypass the network layer?
Launch it with a LocalConnection?