Where communities thrive

  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
Repo info
  • Jul 21 11:54
    johnou closed #1079
  • Jul 21 11:54
    johnou commented #1079
  • Jul 21 11:35
    sirinath commented #1079
  • Jul 21 11:27
    johnou closed #1078
  • Jul 21 11:27
    johnou commented #1078
  • Jul 21 11:20
    johnou commented #1079
  • Jul 21 09:57
    sirinath opened #1079
  • Jul 13 17:02
    doctorpangloss edited #1077
  • Jul 13 01:54
    markxiaotao opened #1078
  • Jul 06 06:45
    doctorpangloss edited #1077
  • Jul 06 06:45
    doctorpangloss edited #1077
  • Jul 06 06:42
    doctorpangloss edited #1077
  • Jul 06 06:35
    doctorpangloss edited #1077
  • Jul 06 06:35
    doctorpangloss edited #1077
  • Jul 06 06:34
    doctorpangloss edited #1077
  • Jul 06 06:32
    doctorpangloss edited #1077
  • Jul 06 05:24
    doctorpangloss opened #1077
  • Jul 01 12:33
    saravanandls commented #1018
  • Jul 01 10:07
    peterkong752 commented #1050
  • Jun 26 12:29
    aggarwal-ankur-238 edited #1074
@kuujo sir,I feel the custom primitive some overdesign. config,buider,proxy,sync,async....,it's too much interface need to be implement...
Lukasz Antoniak

Hi Team! I am trying to replace ZooKeeper with Atomix. We use ZooKeeper as strongly consistent store to persist cluster state and notify nodes when peers are joining or leaving the cluster. Strong consistency implies usage of Raft. For development and unit-testing purpose, I have tried to setup single node Raft cluster. Unfortunately, atomix.start().join() never completes.

cluster {
  clusterId: "atomix"
  node {
    id: member1
    address: "localhost:5001"
  multicast {
    enabled: true
  discovery {
    type: multicast

managementGroup {
  type: raft
  partitions: 1
  members: [member1]
  storage {
    directory: "/tmp/atomix/mgmt"
    # memory or disk
    level: memory

partitionGroups.raft {
  type: raft
  partitions: 1
  members: [member1]
  storage {
    directory: "/tmp/atomix/pg"
    # memory or disk
    level: memory

Any hints?

Lukasz Antoniak

Actually one time it was hanging, and now I receive message about port binding. I have verified with lsof that nothing listens on 5001. After changing the port to any random value, issue still persists.

[2018-12-16 09:04:21,204] INFO RaftServer{raft-partition-1}{role=CANDIDATE} - Starting election (io.atomix.protocols.raft.roles.CandidateRole:165)
[2018-12-16 09:04:21,205] INFO RaftServer{raft-partition-1} - Transitioning to LEADER (io.atomix.protocols.raft.impl.RaftContext:170)
[2018-12-16 09:04:21,206] INFO RaftServer{raft-partition-1} - Found leader member1 (io.atomix.protocols.raft.impl.RaftContext:170)
[2018-12-16 09:04:21,209] INFO Started (io.atomix.protocols.raft.partition.RaftPartitionGroup:210)
[2018-12-16 09:04:21,209] INFO Started (io.atomix.primitive.partition.impl.DefaultPartitionService:196)
[2018-12-16 09:04:21,559] INFO Started (io.atomix.core.impl.CoreTransactionService:384)
[2018-12-16 09:04:21,559] INFO Started (io.atomix.core.impl.CorePrimitivesService:360)
[2018-12-16 09:04:22,512] INFO 3.0.8 (revision 5b38cc built on 2018-11-13 15:47:34)
[2018-12-16 09:04:22,521] WARN Failed to bind TCP server to port due to {} (io.atomix.cluster.messaging.impl.NettyMessagingService:558) Address already in use

I have tried versions 3.0.6, 3.0.8 and 3.1.0-beta2.

Lukasz Antoniak
Argh, many apologies. I have hooked up Atomix in place where I create ZK client and it turned out to be twice in unit-tests. All works fine!
Lukasz Antoniak
Hi team! Any plans to support ephemeral entries in AtomicDocumentTree?
jose igancio hernandez velasco
hi, I'm trying to connect an onos node to an atomix cluster by changing the cluster.json without restarting the onos service. Onos detects the change in the file but does not make the new connection.
Is it possible to do this without having to stop the onos service?
Jordan Halterman
Nope it’s not possible. In past releases we detected the configuration change and restarted the container, but that proved to be pretty buggy. There’s not really a difference between how that was done and just stopping, configuring, and restarting the node though.

Please join Slack!

We are no longer monitoring this channel, which is why nobody’s getting responses. Gitter has never been very easy to monitor, so we moved to Slack. The following link is a permanent invite to the Slack workspace:
Hey! I'm trying to startup a cluster with two computer in the same LAN but, dispite in the same machine the cluster works, in two computer nothing seems to starts. The console prints multiple time Connection timeout... What can I do?
Vikram G Palakurthi
Hello everyone, first thanks for the great api. I am trying to refer docs and all of the links point to http which is being blocked since I am behind the corporate proxy. Can the website be updated so it could use the right protocol, thanks.
Hello everyone. I'm working on a project that needs to replicate a map to several host and maintain serializable consistency level. Atomix seems to be a prefect tool for this. In our scenario, read is frequent (2w qps on average on a 3 node cluster) and write is rare ( 1 qps at maxium ). Are there any benchmark of Atomix's performance with regard to r/w qps ? or any suggestions on whether should I use Atomix in this senario?

we want to deploy atomix cluster in kubernetes . we tried with helm but atomix pods are failing k8s-admin@k8s-master:~/atomix-helm$ kubectl describe pod test2-atomix-0
Name: test2-atomix-0
Namespace: default
Priority: 0
PriorityClassName: <none>
Node: <none>
Labels: app=test2-atomix
Annotations: <none>
Status: Pending
Controlled By: StatefulSet/test2-atomix
Init Containers:
Image: ubuntu:16.04
Port: <none>
Host Port: <none>
/scripts/ --nodes=$ATOMIX_NODES > /config/
/config from system-config (rw)
/scripts from init-scripts (rw)
/var/run/secrets/ from default-token-498sp (ro)
Image: atomix/atomix:3.0.6
Ports: 5678/TCP, 5679/TCP
Host Ports: 0/TCP, 0/TCP
cpu: 500m
memory: 512Mi
Liveness: http-get http://:5678/v1/status delay=60s timeout=10s period=10s #success=1 #failure=3
Readiness: http-get http://:5678/v1/status delay=10s timeout=10s period=10s #success=1 #failure=6
/etc/atomix/system from system-config (rw)
/etc/atomix/user from user-config (rw)
/var/lib/atomix from data (rw)
/var/run/secrets/ from default-token-498sp (ro)
Type Status
PodScheduled False
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: data-test2-atomix-0
ReadOnly: false
Type: ConfigMap (a volume populated by a ConfigMap)
Name: test2-atomix-init-scripts
Optional: false
Type: ConfigMap (a volume populated by a ConfigMap)
Name: test2-atomix-config
Optional: false
Type: EmptyDir (a temporary directory that shares a pod's lifetime)
SizeLimit: <unset>
Type: Secret (a volume populated by a Secret)
SecretName: default-token-498sp
Optional: false
QoS Class: Burstable
Node-Selectors: <none>
Tolerations: for 300s for 300s
Type Reason Age From Message

Warning FailedScheduling 82s (x30 over 41m) default-scheduler pod has unbound immediate PersistentVolumeClaims
But Persistent volume claim is in pending state k8s-admin@k8s-master:~/atomix-helm$ kubectl get pvc data-test2-atomix-0
data-test2-atomix-0 Pending

Johno Crawford

Please join Slack!

We are no longer monitoring this channel, which is why nobody’s getting responses. Gitter has never been very easy to monitor, so we moved to Slack. The following link is a permanent invite to the Slack workspace:


In order to form a ONOS cluster with we must create an Atomix cluster first. My all three Atomix nodes and three ONOS nodes are same 3 physical hosts.

I am facing problems running Atomix cluster. The first Atomix node is running correctly and displaying following outputs:

13:39:55.911 [main] INFO io.atomix.core.Atomix - 3.0.7 (revision 9e8e73 built on 2018-10-11 18:07:26)

13:39:56.241 [netty-messaging-event-epoll-server-0] INFO i.a.c.m.impl.NettyMessagingService - TCP server listening for connections on
13:39:56.243 [netty-messaging-event-epoll-server-0] INFO i.a.c.m.impl.NettyMessagingService - Started
13:39:56.306 [atomix-bootstrap-heartbeat-receiver] INFO i.a.c.d.BootstrapDiscoveryProvider - Joined
13:39:56.306 [atomix-bootstrap-heartbeat-receiver] INFO i.a.c.i.DefaultClusterMembershipService - atomix-1 - Member activated: Member{id=atomix-1, address=, properties={}}
13:39:56.308 [atomix-bootstrap-heartbeat-receiver] INFO i.a.c.i.DefaultClusterMembershipService - Started
13:39:56.309 [atomix-cluster-0] INFO i.a.c.m.i.DefaultClusterCommunicationService - Started
13:39:56.311 [atomix-cluster-0] INFO i.a.c.m.i.DefaultClusterEventService - Started
13:39:56.318 [atomix-0] INFO i.a.p.p.i.DefaultPartitionGroupMembershipService - Started
13:39:56.337 [atomix-0] INFO i.a.p.p.i.HashBasedPrimaryElectionService - Started
13:39:56.371 [atomix-0] INFO i.a.p.r.p.impl.RaftPartitionServer - Starting server for partition PartitionId{id=1, group=system}
13:39:56.577 [raft-server-system-partition-1] INFO i.a.protocols.raft.impl.RaftContext - RaftServer{system-partition-1} - Transitioning to FOLLOWER
13:40:00.157 [raft-server-system-partition-1] WARN i.a.p.raft.roles.FollowerRole - RaftServer{system-partition-1}{role=FOLLOWER} -
13:40:00.158 [raft-server-system-partition-1] WARN i.a.p.raft.roles.FollowerRole - RaftServer{system-partition-1}{role=FOLLOWER} -

The problem is getting occured while running second and third Atomix nodes. While running those two nodes Atomix log displays "Failed to acquire storage lock; ensure each Raft server is configured with a distinct storage directory". Full logs are given below:

13:54:13.743 [main] INFO io.atomix.core.Atomix - 3.0.7 (revision 9e8e73 built on 2018-10-11 18:07:26)

13:54:13.984 [netty-messaging-event-epoll-server-0] INFO i.a.c.m.impl.NettyMessagingService - TCP server listening for connections on
13:54:13.985 [netty-messaging-event-epoll-server-0] INFO i.a.c.m.impl.NettyMessagingService - Started
13:54:14.342 [atomix-bootstrap-heartbeat-receiver] INFO i.a.c.d.BootstrapDiscoveryProvider - Joined
13:54:14.343 [atomix-bootstrap-heartbeat-receiver] INFO i.a.c.i.DefaultClusterMembershipService - atomix-2 - Member activated: Member{id=atomix-2, address=, properties={}}
13:54:14.345 [atomix-bootstrap-heartbeat-receiver] INFO i.a.c.i.DefaultClusterMembershipService - Started
13:54:14.345 [atomix-cluster-0] INFO i.a.c.m.i.DefaultClusterCommunicationService - Started
13:54:14.348 [atomix-cluster-0] INFO i.a.c.m.i.DefaultClusterEventService - Started
13:54:14.464 [atomix-cluster-heartbeat-sender] INFO i.a.c.i.DefaultClusterMembershipService - atomix-1 - Member updated: Member{id=atomix-1, address=, properties={}}
13:54:14.622 [atomix-partition-group-membership-service-0] INFO i.a.p.p.i.DefaultPartitionGroupMembershipService - Started
13:54:14.638 [atomix-partition-group-membership-service-0] INFO i.a.p.p.i.HashBasedPrimaryElectionService - Started
13:54:14.673 [atomix-partition-group-membership-service-0] INFO i.a.p.r.p.impl.RaftPartitionServer - Starting server for partition PartitionId{id=1, group=system}
Exception in thread "main" java.util.concurrent.CompletionException: Failed to acquire storage lock; ensure each Raft server is configured with a distinct storage directory

Emil Kirschner
joined slack but not getting any replies either….
Basanth Gowda
Hello - This is Basanth, I am new to Atomix, though I have been following it for little more than a year..
Was wondering, if there is a way to run Atomix on a single JVM for distributed Map. we will run with multiple JVM's in production, but should be able to get it running on desktops
Matthew Burghoffer
@johnou the slack invite link is no longer valid - is it possible to make a new one (and put the link somewhere accessible for others)?
Marc Sernatinger
Is there info on the slack server somewhere?
Came by this chat via and didn't see any mention of a Slack
Hello, @kuujo , I am playing around with Atomix for a week, it is amazing. It's a lot of work effort. Thank you for providing such a great sutff.
Hi All, I am trying to create a distributed map
    MultiRaftProtocol protocol = MultiRaftProtocol.builder()
    Map<String, String> map = atomix.<String, String>mapBuilder("my-map")
but i always get NullPointerExecption in the build step, any idea what is missing
@damianoneill @santhoshTpixler - do you have slack intivitation link ?
@kuujo - could you please share slack invitation link , as old link is not active ?
@jhalterman - do you have invitation link to slack community for atomix
I just got this link from Slack so it should work
@kuujo - thanks.
hey all!
Hi, I'm new to atomix. Is rollingUpgrade is supported in atomix cluster ?
Xun Liu
hi @kuujo
I developed a service atomix-java-3.0-server with atomix-java-3.0 version,
Can I use atomix-go-client to connect to atomix-java-3.0-server?
Paranshu Singhal
[ec2-user@ip-172-31-17-190 atomix-sample-3.0.8]$ ./bin/atomix-agent
Exception in thread "main" java.lang.NullPointerException
        at io.atomix.cluster.messaging.impl.NettyBroadcastService$Builder.withLocalAddress(
        at io.atomix.cluster.AtomixCluster.buildBroadcastService(
        at io.atomix.cluster.AtomixCluster.<init>(
        at io.atomix.core.Atomix.<init>(
        at io.atomix.agent.AtomixAgent.buildAtomix(
        at io.atomix.agent.AtomixAgent.main(
Anybody know anything about this?
Paranshu Singhal
Solved it.
Junbo Ruan
@kuujo can i add one node in runtime without changing configuration file & restarting?
@paranshu-singhal how you solved the << Exception in thread "main" java.lang.NullPointerException >> error. please help
does anybody want to shed some light on the status of atomix? Last time I asked I was told to wait for atomix3... is atomix3 stable yet?
anybody in here?
What's the atomix-log?
Berke Sökhan
They sat they dont monitor this channel at the top, but the slack link they gave seems to be expired
Max Xandeco
Hey There, I can't find my way on something here from the documentation, I have deployed atomix on kubernetes, and would like to "connect"
to that cluster to make use of an AtomicIdGenerator, can't find a way to do that. maybe I have completly misunderstood how atomix works?
I am able to bootstrap a "embedded" cluster locally and use from there, but can't find any way to connect to this k8s setup. 🤔
Max Xandeco
What I was looking was to start my application, and somehow set the discovery address to the k8s service, and my app would be able to "join" that cluster, that is already set and running in k8s.
how to join slack workspace?
hi? Which version is productive ready ? atomix3.1.8 ?
my question is abt expiringmap
is it possible to keep entries which don't expire as i'm using variable expiration map?
basically i want to keep both entries - some which expire and some which don't