Set read only Aerospike Cluster

Hi,

Is there a way I can disable writes on an existing Aerospike cluster without restarting the database?

Thanks

Set allow-nonxdr-writes to false.

Thank you for the response. I am not sure what the term means, but I ran the asinfo command to disable both xdr wrties and non-xdr writes but I was still able to insert through aql. Is that expected?

Just tested locally:

Before:

In [3]: import aerospike

In [4]: c = aerospike.Client(dict(hosts=[("174.22.0.1", 3000), ("174.22.0.2", 3000)])).connect()

In [5]: c.put(("test", "test", 1), dict(foo=1))
Out[5]: 0L

Set config:

asadm -e 'asinfo -v "set-config:context=namespace;id=test;allow-nonxdr-writes=false"'

After

In [6]: c.put(("test", "test", 1), dict(foo=1))
---------------------------------------------------------------------------
AlwaysForbidden                           Traceback (most recent call last)
<ipython-input-6-4a5fc2e2d687> in <module>()
----> 1 c.put(("test", "test", 1), dict(foo=1))

AlwaysForbidden: (10L, 'AEROSPIKE_ERR_ALWAYS_FORBIDDEN', 'src/main/client/put.c', 107, False)

I ran the above command followed by the same python code that you have written above. Does this only work in enterprise edition?

No, it should work on CE as well.

In [6]: c.put(("test", "test", 1), dict(foo=1))
---------------------------------------------------------------------------
AlwaysForbidden                           Traceback (most recent call last)
<ipython-input-6-4a5fc2e2d687> in <module>()
----> 1 c.put(("test", "test", 1), dict(foo=1))

AlwaysForbidden: (10L, 'AEROSPIKE_ERR_ALWAYS_FORBIDDEN', 'src/main/client/put.c', 107, False)

In [7]: c.info('build')
Out[7]: 
{'BB9010016AE4202': (None, '4.5.0.1-115-g2bf55f1\n'),
 'BB9020016AE4202': (None, '4.5.0.1-115-g2bf55f1\n'),
 'BB9030016AE4202': (None, '4.5.0.1-115-g2bf55f1\n')}

In [8]: c.info('edition')
Out[8]: 
{'BB9010016AE4202': (None, 'Aerospike Community Edition\n'),
 'BB9020016AE4202': (None, 'Aerospike Community Edition\n'),
 'BB9030016AE4202': (None, 'Aerospike Community Edition\n')}

We are running a heterogeneous cluster with versions (4.0.0.4 [4], 4.1.0.1 [1], 4.2.0.7 [1], 4.3.0.10 [1], 4.3.0.7 [1]). Not sure if the versions have anything to do with this. Very strange. Thanks for all the help though.

Run:

asadm -e "show config like xdr"

We have stopped the cluster now, can’t run this command on the old cluster. Thanks for your help in any case.