trafficserver-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Eric Chaves <e...@uolet.com>
Subject Re: ts_lua error after using ts.add_package_path
Date Mon, 11 Mar 2019 16:53:54 GMT
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