ListOperation usage

list
java

#1

Hi all,

I’m getting started with the ListOperation in the Java client, and the operations do not work as expected. Here are my code:

AerospikeClient client = new AerospikeClient("10.0.0.1", 3000);
Key key = new Key("test", "demo", "testlist");
Value vll = Value.get(123);
List<Value> itemList = new ArrayList<Value>();
itemList.add(Value.get("s11"));
itemList.add(Value.get("s22222"));
Bin bin01 = new Bin("bin3", Value.get(itemList));
client.put(null, key, bin01);
Record record0 = client.operate(null, key, Operation.put(new Bin("bin4", 90)), ListOperation.insertItems("bin6", 0, itemList) , Operation.get());
System.out.println("record0");
System.out.println(record0);
Record record1 = client.operate(null, key, ListOperation.append("bin3", vll), Operation.get());
System.out.println("record1");
System.out.println(record1);
itemList.add(Value.get("s3333333"));
itemList.add(Value.get("s4444444444"));
itemList.add(Value.get("s5555555555555555"));
Record record2 = client.operate(null, key,
        ListOperation.insertItems("bin3", 0, itemList), Operation.get()
);
System.out.println("record2");
System.out.println(record2);
Record record3 = client.get(null, key);
System.out.println("record3");
System.out.println(record3);

And here are the output:

record0 (gen:2),(exp:239021264),(bins:(bin3:[s11, s22222]),(bin4:90)) record1 (gen:3),(exp:239021264),(bins:(bin3:[s11, s22222]),(bin4:90)) record2 (gen:4),(exp:239021265),(bins:(bin3:[s11, s22222]),(bin4:90)) record3 (gen:4),(exp:239021265),(bins:(bin3:[s11, s22222]),(bin4:90))

It seems that all of the ListOperations used in my code were not applied. Am I using it wrong?

Thanks.


#2

Can you remove the ‘bin6’ operation and retry the rest of your code? Does not look like you are doing something obviously incorrect.


#3

I’ve removed the line, the result is still the same.


#4

There is a bare bones example here: https://github.com/aerospike/aerospike-client-java/blob/master/examples/src/com/aerospike/examples/OperateList.java

Can you reproduce that example?


#5

Running the example yields the following:

2017-06-30 08:53:33 SGT INFO OperateList Begin 2017-06-30 08:53:33 SGT INFO CDT list functions are not supported by the connected Aerospike server. 2017-06-30 08:53:33 SGT INFO OperateList End

Here are the features available on the database (notice that CDT list is not avaiable)

as_msg;replicas-read;replicas-prole;replicas-write;replicas-master;cluster-generation;partition-info;partition-generation;udf

How do I enable CDT list on the Aerospike server? I couldn’t find any instructions on http://www.aerospike.com/docs/guide/cdt-list.html or any related page.

Thanks.


#6

What is your server version?


#7

The server version is 3.3.21


#8

Going through release notes, I believe list operations were introduced in 3.7.0.1 - http://www.aerospike.com/download/server/notes.html and list-index in 3.8+ – so really you need to upgrade your server. See the release blog for 3.7 here: http://www.aerospike.com/blog/aerospike-3-7-0-release/


#9

Ah I see, thanks for your help!


#10

Can you close the item on stackoverflow? Thanks.