Set read only Aerospike Cluster


#1

Hi,

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

Thanks


#2

Set allow-nonxdr-writes to false.


#3

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?


#4

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)

#5

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


#6

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')}

#7

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.


#8

Run:

asadm -e "show config like xdr"

#9

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