Search code examples
goluaaerospikeaerospike-ce

Need help on creating a UDF, returning "Unable to create a new Lua state"


I need to ask a question on creating UDF on aerospike. My configuration is as below:

  • M1 Macbook Pro
  • Docker using latest aerospike

My application is running this code:

AerospikeClient.RegisterUDF(nil, []byte({UDF_BODY}), {UDF_FILENAME}+".lua", aerospike.LUA)

and it keeps on producing this error:

Error registering UDF in aerospike.     common_error="Registration failed: compile_error\nFile: \nLine: 0\nMessage: Unable to create a new Lua state"

Does anybody have any idea on how to resolve this error?

I searched the forum and I don't think there is anybody that have encountered the same issue as me.

Thanks


Solution

  • The error message itself comes from aerospike/aerospike-mod-lua/src/main/mod_lua.c#validate(), relayed by aerospike/aerospike-client-go/client.go#RegisterUDF()

    Considering the filename is empty in the error message, it makes sense it triggers from the code, because lua_open() returns null, which has been seen before as a linking option issue.
    In that page, lua_open() is a macro for luaL_newstate(), and this error could reflect the fact the M1 support for luajit is not yet fully completed.

    The OP David Budiman confirms in the comments:

    My teammates that are not using M1 macbook do not encounter this problem. I'll try to use another machine first