On 2012-10-08 09:15, Daniel-Constantin Mierla wrote:
Hello,
can you test with latest version in 3.3.x series (from git branch or
at least the packages for 3.3.1) -- there were many fixes since
3.3.0
was released -- just to be sure we don't hunt fixed issues.
Tested and duplicated the same behavior on the following nightly
builds:
Ubuntu (12.04.1) kamailio, kamailio-lua-modules i386
3.3.1+git20121008+precise1
Ubuntu (12.04.1) kamailio, kamailio-lua-modules i386
3.3.1+git20121008+wheezy1
I will analyze properly the details you sent in
the near future.
Thanks. I am looking forward to it.
-Andrew
> Cheers,
> Daniel
For the benefit of the mailing list archives, I have not been able to
duplicate this problem on Kamailio 3.3.3.
It looks like this commit fixed it:
On 10/5/12 7:54 PM, elactrum(a)jamailca.com wrote:
> On 2012-09-27 11:05, elactrum(a)jamailca.com wrote:
>> On 2012-09-27 10:19, Daniel-Constantin Mierla wrote:
>>> Hello,
>>>
>>> On 9/26/12 9:47 PM, elactrum(a)jamailca.com wrote:
>>>> Hi,
>>>>
>>>> I am using app_lua to frequently store some data in htable and
>>>> avp entries, using sr.pv.sets. When I read the values using
>>>> sr.pv.get immediately after writing them, they seem correct.
>>>> However, when I read them later from Lua, I have noticed that
>>>> sometimes the value is incorrect or nil. Am I doing something
>>>> wrong?
>>>>
>>>> The following code uses rtimer to duplicate the problem on
>>>> startup, printing the errors to syslog.
>>>>
>>>> Tested on version: kamailio 3.3.1 (i386/linux) 2d0f6f
>>>>
>>>> ###############
>>>> # kamailio.cfg
>>>> ###############
>>>> loadmodule "pv.so"
>>>> loadmodule "xlog.so"
>>>> loadmodule "htable.so"
>>>> loadmodule "rtimer.so"
>>>> loadmodule "app_lua"
>>>>
>>>> modparam("htable", "htable",
"status=>size=14;autoexpire=0;")
>>>>
>>>> modparam("rtimer", "timer",
"name=ta;interval=10;mode=1")
>>>> modparam("rtimer", "exec",
"timer=ta;route=LUA_TEST")
>>>>
>>>> # the following path may need to change depending on filesystem
>>>> setup
>>>> modparam("app_lua", "load",
"/etc/kamailio/kamailio.lua")
>>>>
>>>> route
>>>> {
>>>> route(LUA_TEST);
>>>> }
>>>>
>>>> route[LUA_TEST] {
>>>>
>>>> $var(lua_test_key) = $(pp{s.toupper}) + "::";
>>>>
lua_runstring("htable_test([[status=>$var(lua_test_key)]])");
>>>> lua_runstring("avp_test([[status=>$var(lua_test_key)]])");
>>>>
>>>> }
>>>>
>>>> ----------------
>>>> -- kamailio.lua
>>>> ----------------
>>>> -- Test of sr.pv operations in Lua
>>>>
>>>> function htable_test (namekey)
>>>> local pvar_prefix = "$sht("..namekey
>>>> pvar_test(pvar_prefix)
>>>> end
>>>>
>>>> function avp_test ( name )
>>>> local pvar_prefix = "$avp("..name
>>>> pvar_test(pvar_prefix)
>>>> end
>>>>
>>>>
>>>> function pvar_test ( pvar_prefix )
>>>>
>>>> for value = 10000, 10050 do
>>>> local pvar = pvar_prefix..value..")"
>>>> --sr.log("info", "Lua attempting to set
'"..pvar.."' to
>>>> value '"..value.."'")
>>>> sr.pv.sets(pvar, value)
>>>> end
>>>>
>>>> for value = 10000, 10050 do
>>>> -- now we check what was stored
>>>> local pvar = pvar_prefix..value..")"
>>>> local checkvar = sr.pv.get(pvar)
>>>> if ( tostring(checkvar) ~= tostring(value) ) then
>>>> sr.err(string.format("CHECK: Lua checking pvar
'%s'
>>>> and got value '%s' which is NOT '%s'",
>>>> tostring(pvar),
>>>> tostring(checkvar),
>>>> tostring(value)
>>>> ))
>>>> end
>>>>
>>>> end
>>>> end
>>>> -- end of kamailio.lua
>>>
>>> can you provide the log messages?
>>
>> Sorry, I should have included them with the initial posting. I
>> have
>> attached an example of the first seven executions of rtimer after
>> a
>> fresh startup. Each startup of kamailio results in slightly
>> different
>> error values, but the pattern seems similar.
>>
>> Please let me know if it would be good to send more logs or
>> anything else.
>>
>>
>>> Note that avps are destroyed after
>>> execution of the rtimer route - avps are attached to
>>> message/transaction. Hash table values should stay no matter
>>> where are
>>> set.
>>
>> Thanks for the reminder. I think in this case the test is valid,
>> though, since the avp values are written and read within a single
>> rtimer route.
>>
>>>
>>> Cheers,
>>> Daniel
>>
>> Thanks for the help!
>>
>> -Andrew
>
>
> I have now duplicated this on the following systems:
>
> Alpine Linux (2.4.5) - kamailio-3.3.0-r0@edge
> Ubuntu (12.04.1) - kamailio-3.3.0+precise1
> Ubuntu (12.04.1) - kamailio-3.3.0+wheezy1
>
>
> Only certain pseudovariables are affected:
>
> sr.pv.sets("$sht(name=>key)") fails
> sr.pv.sets("$avp(name)") fails
> sr.pv.sets("$xavp(name)") fails
> sr.pv.sets("$shv(name)") works
> sr.pv.sets("$var(name)") works
>
> Do you need any more information to track this problem?
>
>
> Thanks,
>
> -Andrew
>
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing
list
sr-users(a)lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users