trafficserver-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Shu Kit Chan <chanshu...@gmail.com>
Subject Re: ts_lua error after using ts.add_package_path
Date Wed, 13 Mar 2019 17:11:34 GMT
Hopefully this would be the answer to your problem -
https://github.com/apache/trafficserver/issues/5158

Thanks.

Kit

On Mon, Mar 11, 2019 at 9:54 AM Eric Chaves <eric@uolet.com> wrote:
>
> Hi Shun, thanks for helping me out in this out-of-topic situation. I spent the weekend
reading about this error on the internet (starting with the links you shared) trying to figure
out what I could be doing wrong but with my limited knowledge on lua I wasn't able to figure
it out.
>
> The comments on luasocket issue's implies that this error could be due to a misconfigured
build whose symbols were not being linked/exported properly, so I tried to check the symbol
resolution for tslua.so using the command line 'nm -gC libexec/trafficserver/tslua.so | grep
lua_' using different build configs (with only luajit installed/not lua, without luajit, with
luajit path explicitly set, etc). In all builds the results were the same: every lua_* symbol
is marked as Undefined (39 symbols in total).
>
> I'm not sure if this means something since the tslua plugin does execute lua properly,
but this was as far as I got.
>
> I also tried to install luasocket from it's source code but it failed because it didn't
find some lua headers (ie lua.h, etc) which enforces that I'm somehow breaking the build but
I can't point my finger on anything. As far as I can tell I'm following the steps present
both at the docs and at trafficserve's confluence. I've also based my self on some 3rd part
dockerfiles at github.
>
> If have some spare time could you please take a look on my Dockerfile (https://github.com/ericchaves/ats-lua-playground/blob/master/trafficserver.dockerfile)
so see if you spot any mistakes that I may be doing (maybe I'm missing some required CC flag)?
Or if you could share your build steps (even if it's not dockerbased) so I can compare with
mine.
>
> If you can't help me any further for any reason, that's ok either. You have being of
great support no matter what. =)
>
> Regards,
>
> Em sex, 8 de mar de 2019 às 13:15, Shu Kit Chan <chanshukit@gmail.com> escreveu:
>>
>> I am not sure what's wrong with your setup.  i have used luasocket
>> before with no problem. perhaps this will shed some light ?
>>
>> https://github.com/diegonehab/luasocket/issues/158
>> https://github.com/diegonehab/luasocket/issues/87
>>
>> Thanks.
>>
>> Kit
>>
>> On Thu, Mar 7, 2019 at 6:59 AM Eric Chaves <eric@uolet.com> wrote:
>> >
>> > Nice!, It solved this error but  now I got the error "ERROR: [ts_lua] lua_pcall
failed: error loading module 'socket.core' from file '/opt/ats/lua_modules/lib/lua/5.1/socket/core.so':
/opt/ats/lua_modules/lib/lua/5.1/socket/core.so: undefined symbol: lua_gettop.
>> >
>> > Everything was built using lua 5.1. Any clues why I could be getting the undefined
symbol? Could I be missing some dependency?
>> >
>> > Em qua, 6 de mar de 2019 às 18:37, Shu Kit Chan <chanshukit@gmail.com>
escreveu:
>> >>
>> >> Try not to call "add_package_path" / "add_package_cpath" inside the
>> >> lua module .
>> >> Call them in the same lua file containing the do_remap() function and
>> >> see if your problem is solved.
>> >>
>> >> Kit
>> >>
>> >> On Wed, Mar 6, 2019 at 1:23 PM Eric Chaves <eric@uolet.com> wrote:
>> >> >
>> >> > Hi folks,
>> >> >
>> >> > This may be a little off-topic. Not sure if questions regarding lua
plugins/lua scripts should be asked here in the list. If so forgive me and please point me
the proper place to ask.
>> >> >
>> >> > I'm trying to learn TS lua script's. At first I just followed the sample
code for reverse host header presented in the lua_plugin docs by writing a module named my_module.lua
required inside a do_remap() with the following content:
>> >> >
>> >> > local my_module = {}
>> >> > function my_module.send_response()
>> >> >   ts.debug('executing my_module.send_response')
>> >> >   ts.client_response.header['Rhost'] = ts.ctx['rhost']
>> >> >   return 0
>> >> > end
>> >> > return my_module
>> >> >
>> >> > This works fine and after that I tried to add some code to connect
into a local redis instance using libs installed by luarocks (eg.: luarocks install --tree
/opt/ats/lua_modules luasocket)
>> >> >
>> >> >  I found some scripts at github that uses the ts.add_package_path to
include the new modules and based on them I added those two lines at the top of my_module.lua:
>> >> >
>> >> > ts.add_package_path('/opt/ats/lua_modules/share/lua/5.1/?.lua;/opt/ats/lua_modules/share/lua/5.1/?/init.lua')
>> >> > ts.add_package_cpath('/opt/ats/lua_modules/share/lua/5.1/?.so')
>> >> >
>> >> > By doing so, even without actually requiring any new module (ie no
other changes in my_module logic) when my do_remap tries require my_module, I got an error:
ERROR: [ts_lua] lua_pcall failed: /opt/ats/lua-plugins/my_module.lua:6: can't get the instance
conf
>> >> >
>> >> > So it's clear that I'm breaking something using the ts.add_package_path.
I've also tried to mangle with package.path variable with the same outcome.
>> >> >
>> >> > What am I doing wrong and how should I do to add those new packages?
>> >> >
>> >> > Cheers,
>> >> >
>> >> > Eric
>> >> >

Mime
View raw message