[OpenSIPS-Users] lua_exec in timer route - OpenSIPS 3.1
johan
johan at democon.be
Fri Dec 4 08:27:44 EST 2020
then you are fine :-)
On 4/12/2020 09:26, Mark Allen wrote:
> Interestingly - TIMER already seems to use some form of dummy message
> to avoid problems. If I add the line...
>
> timer_route[checkNodeCache, 5] {
> xlog("TIMER_ROUTE");
> xlog("Message info: $fU, $tU, $td, $rm");
>
> ...what is logged is...
>
> Message info: <null>, <null>, <null>, DUMMY
>
> ...so LUA will be passed a (very simple) message it seems
>
>
>
> On Thu, 3 Dec 2020 at 15:57, Mark Allen <mark at allenclan.co.uk
> <mailto:mark at allenclan.co.uk>> wrote:
>
> LOL! Yes, I did understand, but it is an important distinction.
>
> On Thu, 3 Dec 2020 at 15:53, Ben Newlin <Ben.Newlin at genesys.com
> <mailto:Ben.Newlin at genesys.com>> wrote:
>
> It seems like you read that as I intended, but I want to
> clarify I meant to say I /wouldn’t/ feel safe assuming that
> this would work long term.
>
>
>
> Ben Newlin
>
>
>
> *From: *Users <users-bounces at lists.opensips.org
> <mailto:users-bounces at lists.opensips.org>> on behalf of Mark
> Allen <mark at allenclan.co.uk <mailto:mark at allenclan.co.uk>>
> *Date: *Thursday, December 3, 2020 at 10:40 AM
> *To: *OpenSIPS users mailling list <users at lists.opensips.org
> <mailto:users at lists.opensips.org>>
> *Subject: *Re: [OpenSIPS-Users] lua_exec in timer route -
> OpenSIPS 3.1
>
> > a memory leak or segfault after continued use
>
>
>
> Yes - it would be useful to know if this could result in
> problems down the road. Not sure how else I can run a timed
> job if I can't use the TIMER route though.
>
>
>
> On Thu, 3 Dec 2020 at 15:17, Ben Newlin
> <Ben.Newlin at genesys.com <mailto:Ben.Newlin at genesys.com>> wrote:
>
> Mark,
>
>
>
> My concern was less about you using the message object in
> LUA as it was with how robust OpenSIPS’ handling is if a
> message if expected to be there and memory is allocated
> and passed but there is no actual message due to this
> “trick”. Without digging into the actual code, I would
> feel safe assuming that this wouldn’t result in a memory
> leak or segfault after continued use.
>
>
>
> Ben Newlin
>
>
>
> *From: *Users <users-bounces at lists.opensips.org
> <mailto:users-bounces at lists.opensips.org>> on behalf of
> Mark Allen <mark at allenclan.co.uk
> <mailto:mark at allenclan.co.uk>>
> *Date: *Thursday, December 3, 2020 at 10:04 AM
> *To: *OpenSIPS users mailling list
> <users at lists.opensips.org <mailto:users at lists.opensips.org>>
> *Subject: *Re: [OpenSIPS-Users] lua_exec in timer route -
> OpenSIPS 3.1
>
> Thanks, Johan and Ben.
>
>
>
> Johan:
>
> I tried your suggested approach and (much to my surprise)
> it worked both for lua_exec and cache_remove_chunk. Thanks
> for that.
>
>
>
> Ben:
>
> I understand what you are saying for LUA. However, I think
> that if it's made clear that you do not have access to (or
> should not use) the message, the results should be
> predictable. It seems to work for me.
>
>
>
> My LUA function is reading in external data and doesn't
> make use of the message at all. Perhaps there might be a
> way to provide an empty message to LUA if it's invoked in
> TIMER routes to avoid possible problems? LUA and Python
> offer powerful extendablity to OpenSIPS, so it seems to me
> to be a bit of a shame to limit their use at startup or in
> timers if all that's needed is a tweak - or even just a
> warning in the documentation.
>
>
>
> As for the "cache_remove_chunk" - it's less clear why
> TIMER couldn't run this in a straightforward way as it's
> not dependent on the current message as far as I
> understand it.
>
>
>
>
>
> If anybody wants to try doing this - here's an example
> that worked for me in OpenSIPS 3.1...
>
>
>
> timer_route[refreshNodes, 30] {
> route(remove_chunk);
> route(cache_reload);
>
> }
>
>
>
>
>
>
>
> route[remove_chunk] {
> cache_remove_chunk("validNodes", "*");
> }
>
> route[cache_reload] {
> lua_exec("getValidNodes");
> for ($var(node) in $(avp(validNodes)[*])) {
> cache_store("local:validNodes", "$var(node)",
> "true");
> }
> }
>
>
>
>
>
>
>
> On Thu, 3 Dec 2020 at 14:20, Ben Newlin
> <Ben.Newlin at genesys.com <mailto:Ben.Newlin at genesys.com>>
> wrote:
>
> I wouldn’t recommend trying to bypass the restriction
> in this way. Both the lua and python exec modules were
> designed to operate on a SIP message, which is why
> they can only be called from routes that process
> messages. Calling it from time_route where there is no
> message, even if you could get it to work, could have
> unexpected and unpleasant results.
>
>
>
> From LUA module doc for lua_exec: “Calls a Lua
> function with passing it the current SIP message” [1].
>
>
>
> [1]
> https://opensips.org/docs/modules/3.1.x/lua.html#idp5933680
>
>
>
> Ben Newlin
>
>
>
> *From: *Users <users-bounces at lists.opensips.org
> <mailto:users-bounces at lists.opensips.org>> on behalf
> of Johan De Clercq <Johan at democon.be
> <mailto:Johan at democon.be>>
> *Date: *Thursday, December 3, 2020 at 6:55 AM
> *To: *OpenSIPS users mailling list
> <users at lists.opensips.org
> <mailto:users at lists.opensips.org>>
> *Subject: *Re: [OpenSIPS-Users] lua_exec in timer
> route - OpenSIPS 3.1
>
> what you can try, is to call another route in the time
> route.
>
> And then in that route, you execute the lua script.
>
> maybe (just a myabe) that will work.
>
>
>
> wkr,
>
>
>
> Op do 3 dec. 2020 om 12:23 schreef Mark Allen
> <mark at allenclan.co.uk <mailto:mark at allenclan.co.uk>>:
>
> Hi Johan
>
>
>
> In the documentation for 3.1 lua module -
> TIMER_ROUTE is not one of the routes available to
> lua_exec. If I include it in a TIMER route,
> OpenSIPS fails to start with syntax error and the
> log error is:
>
>
>
> CRITICAL:core:yyerror: parse error in
> /etc/opensips/opensips.cfg:265:19-20: Command
> <lua_exec> cannot be used in the block#012
>
>
>
> If I move the lua_exec command into main route{ it
> works fine
>
>
>
> I also encounter the problem running a
> cache_remove_chunk in a TIMER route although the
> documentation doesn't say that it's not valid for
> TIMER route. It fails on startup with the error:
>
>
>
> CRITICAL:core:yyerror: parse error in
> /etc/opensips/opensips.cfg:266:33-34: Command
> <cache_remove_chunk> cannot be used in the block#012
>
>
>
> Again - if I run the command in main route{ the
> command works fine
>
>
>
>
>
> cheers,
>
>
>
> Mark
>
>
>
> On Thu, 3 Dec 2020 at 11:01, Johan De Clercq
> <Johan at democon.be <mailto:Johan at democon.be>> wrote:
>
> It for sure does not run in async mode.
>
> Did you try executing a script in timer route ?
>
> What's the output in the log ?
>
>
>
> Op do 3 dec. 2020 om 11:56 schreef Mark Allen
> <mark at allenclan.co.uk
> <mailto:mark at allenclan.co.uk>>:
>
> Is there a way to run a lua_exec from a
> timer route?
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> <mailto:Users at lists.opensips.org>
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> <mailto:Users at lists.opensips.org>
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> <mailto:Users at lists.opensips.org>
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org <mailto:Users at lists.opensips.org>
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org <mailto:Users at lists.opensips.org>
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org <mailto:Users at lists.opensips.org>
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20201204/b3645869/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0xD7D896F7DDA70EC3.asc
Type: application/pgp-keys
Size: 2456 bytes
Desc: not available
URL: <http://lists.opensips.org/pipermail/users/attachments/20201204/b3645869/attachment-0001.key>
More information about the Users
mailing list