Is Record UDF calling thread safe?

If multi-threads call UDF function(with write-operation) on same record, there have internal locks or something else to protect the data?

Yes, records are locked during write operations (from either the client or from record UDF).

1 Like

Locked when writing operation. How about reading?

Calling as_operations_add_incr(ops, “bin”, 1) from client should be thread-safe.

But calling a lua function below thread-safe ? :

if aerospike:exists(rec) then

    local v = rec['bin']
    rec['bin'] = v + 1

	return aerospike:update(rec)
else
    ...    
end

Yes.

More info here:

Thanks. The link is helpful

I am recently doing a POC on UDP with a similar use case. Can someone explain how aersopike avoids race condition when multiple threads call this UDP on same record?

Ahead of executing a record UDF on a specified key a record lock is obtained. If other threads are trying to do the same they will queue up.