Server OOM when passing large amounts of data to Record UDF




We have noticed that when repeatedly passing a large amount of data (e.g. > 1Mb of strings stored in a map) as arguments from a C/C++ application to a record UDF, the aerospike server quickly uses all available memory and is killed, even if the UDF script itself does nothing.

Disabling the Lua cache with mod-lua { cache-enabled false} appears to stop the memory growth, but this increases the time to apply the UDF. Interestingly, if we periodically re-register the UDF memory usage doesn’t grow without increasing UDF time much, but according to the documentation re-registering UDF functions during application run-time is not recommended.

Are there any known issues with passing large amounts of data to UDF functions, or perhaps alternate configuration settings we should use for this use-case (large data being passed).

Our tests are using the 3.9.0 docker image with default configuration, and the latest C client library.