Set ttl with UDF


by saterenko » Tue Jun 10, 2014 4:13 am

Is there way to set ttl with UDF script? I need to create record with ttl 60 sec, not default from config file.


Yes, this feature is added in Aerospike Server 3.3.12


Hi wchu,

I am attempting to set the ttyl via the java api without success. Was wondering if you can help me. I verified that my server is 3.3.12.

Here is my client code (it is using aerospike java api: 3.0.22):

public Object callUserDefinedFunction(WritePolicy policy,
                                      Key key,
                                      Value[] list,
                                      String luaName,
                                      String functionName)
                                      throws  AerospikeException {
      "EXPIRATION " + policy.expiration);
                return mAero.execute(policy, key, luaName,
                            functionName, list);

I log the expiration and its set properly: 2014-09-03 17:30:10 INFO UserStoreService:141 - EXPIRATION 5

The above function successfully calls my udf on the server and writes to the proper location, however it does not honor the expiration. I noticed that the execute method takes in a generic Policy type which does not have an expiration param.

thank you for your help



To set the ttl in a record, use the record.set_ttl() function in your UDF. The syntax is

record.set_ttl(rec, ttl)

where the ttl is in seconds. Use this function before updating or creating the record.




thanks! This is what I ended up using