[SR-Users] $jsonrpl(body) empty or malfunctioned during higher traffic

Daniel-Constantin Mierla miconda at gmail.com
Tue Nov 5 10:33:18 CET 2019


Hello,

as I wrote in another email, the master branch should have a solution
for it (hoping people that are interested in this matter will provide
feedback to my email in order to decide how to proceed further and
improve based on the real needs) -- for reference, the link to that email:

  - https://lists.kamailio.org/pipermail/sr-users/2019-October/107210.html

However, here is a new idea that can be used with existing deployments
(likely needing 5.1.x at least): use an embedded scripting language to
pass the data from $jsonrpl(body) to evapi_relay(). For example,
app_jsdt doesn't have external dependency and you can make a small JS
script to be executed inline from kamailio.cfg routing blocks with
jsdt_run() or jsdt_runstring():

  -
https://www.kamailio.org/docs/modules/devel/modules/app_jsdt.html#app_jsdt.f.jsdt_run

The KEMI function for evapi_relay():

  -
http://kamailio.org/docs/tutorials/devel/kamailio-kemi-framework/modules/#ksrevapirelay

So, the js script can even be like one line:

KSR.evapi.relay(KSR.pv.gete("$jsonrpl(body) ");

In this way, the internal pv buffer should not be used for transferring
the content of $jsonrpl(body) to the parameter of evapi_relay().

If someone tries this solution, I would be curious about the results.

Cheers,
Daniel

On 30.10.19 15:56, Sergiu Pojoga wrote:
> Hi Michal,
>
> I've already encountered this same problem and got an answer from
> Daniel. Check below link.
>
> https://lists.kamailio.org/pipermail/sr-users/2019-October/107092.html 
>
> Cheers. 
>
> On Wed, Oct 30, 2019 at 9:57 AM Daniel-Constantin Mierla
> <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>
>     Hello,
>
>     how often are you requesting the list of all dialogs (what is the
>     n in that every n seconds)? Is it done using a single evapi
>     connection, or are there many of them?
>
>     And to clarify, is the error ("cannot serialize event") happening
>     when there is no call or when there are too many? Is not clear for
>     me given that you follow with what you expect to be when nobody is
>     calling ...
>
>     Cheers,
>     Daniel
>
>     On 30.10.19 14:26, Michal Škuta wrote:
>>     Hello, Kamailio community,
>>     we are implementing evapi communication to our Kamailio server.
>>     We have implemented and tested it on our testing server.
>>     Everything was working OK.
>>
>>     Now we are testing it on our production servers with a lot more
>>     calls and we have some problems here.
>>     Every n seconds we are requesting from Kamailio list of all
>>     dialogs. And this list of dialogs (from jsonrpc *dlg.list*) is
>>     sent to evapi connection.
>>     Here is a snippet of our *Kamailio code*:
>>
>>     route[CGR_DLG_LIST]
>>     {
>>             xlog("L_INFO", "XLOG: $ci [CGR_DLG_LIST] Requested dialog
>>     list");
>>             # CGRateS connection is still alive, set check to true
>>             $sht(cgrconn=>check) = 1;
>>             if $sht(cgrconn=>cgr) == $null {
>>                     sl_send_reply("503","Charging controller
>>     unreachable");
>>                     exit;
>>             }
>>             jsonrpc_exec('{"jsonrpc":"2.0","id":1,
>>     "method":"dlg.list","params":[]}');
>>             xlog("L_INFO", "XLOG: $ci [CGR_DLG_LIST] Test1:
>>     $jsonrpl(body)");
>>
>>             evapi_relay("{\"event\":\"CGR_DLG_LIST_REPLY\",
>>                             \"jsonrpl_body\":$jsonrpl(body)}");
>>     }
>>
>>     During a higher number of calls Kamailio is generating ERROR
>>     messages from evapi module. Here is the syslog:
>>
>>     Oct 30 12:02:15 kam-prod
>>     /opt/ipgate/kamailio/sbin/kamailio[19512]: INFO: <script>: XLOG:
>>     123 [CGR_DLG_LIST] Requested dialog list
>>     Oct 30 12:02:15 kam-prod
>>     /opt/ipgate/kamailio/sbin/kamailio[19512]: INFO: <script>:
>>     Oct 30 12:02:15 kam-prod
>>     /opt/ipgate/kamailio/sbin/kamailio[19512]: DEBUG: evapi
>>     [evapi_dispatch.c:740]: _evapi_relay(): relaying event data [
>>     Oct 30 12:02:15 kam-prod
>>     /opt/ipgate/kamailio/sbin/kamailio[19512]: ERROR: evapi
>>     [evapi_dispatch.c:764]: _evapi_relay(): cannot serialize event
>>     Oct 30 12:02:15 kam-prod
>>     /opt/ipgate/kamailio/sbin/kamailio[19512]: ERROR: evapi
>>     [evapi_mod.c:265]: w_evapi_relay(): failed to relay event:
>>
>>     *We are expecting something like this when nobody is calling*
>>     Oct 30 14:12:22 kam-test
>>     /opt/ipgate/kamailio/sbin/kamailio[32090]: INFO: <script>: XLOG:
>>     123 [CGR_DLG_LIST] Requested dialog list
>>     Oct 30 14:12:22 kam-test
>>     /opt/ipgate/kamailio/sbin/kamailio[32090]: INFO: <script>: XLOG:
>>     123 [CGR_DLG_LIST] Test1: {
>>     #011"jsonrpc":#011"2.0",
>>     #011"result":#011[],
>>     #011"id":#0111
>>     }
>>     Oct 30 14:12:22 kam-test
>>     /opt/ipgate/kamailio/sbin/kamailio[32090]: DEBUG: evapi
>>     [evapi_dispatch.c:740]: _evapi_relay(): relaying event data
>>     [{"event":"CGR_DLG_LIST_REPLY",
>>     #011#011#011"jsonrpl_body":{
>>     #011"jsonrpc":#011"2.0",
>>     #011"result":#011[],
>>     #011"id":#0111
>>     }}] (96)
>>     Oct 30 14:12:22 kam-test
>>     /opt/ipgate/kamailio/sbin/kamailio[32090]: DEBUG: evapi
>>     [evapi_dispatch.c:778]: _evapi_relay(): sending [0x169ff674]
>>     [96:{"event":"CGR_DLG_LIST_REPLY",
>>     #011#011#011"jsonrpl_body":{
>>     #011"jsonrpc":#011"2.0",
>>     #011"result":#011[],
>>     #011"id":#0111
>>     }},] (100)
>>     Oct 30 14:12:22 kam-test
>>     /opt/ipgate/kamailio/sbin/kamailio[32090]: DEBUG: evapi
>>     [evapi_dispatch.c:789]: _evapi_relay(): dispatching [0x169ff674]
>>     [96:{"event":"CGR_DLG_LIST_REPLY",
>>     #011#011#011"jsonrpl_body":{
>>     #011"jsonrpc":#011"2.0",
>>     #011"result":#011[],
>>     #011"id":#0111
>>     }},] (100)
>>
>>
>>     We enabled debug messages for module evapi and are trying to
>>     understand where is the problem. To make this work to this state
>>     we needed to increase the *pv_buffer* to really big size (2097152).
>>     It looks like $jsonrpl(body) is not ready and everything concated
>>     with it is not working.
>>
>>     ||Any help or suggestion is welcomed. ||
>>     ||Sincerely Michal||
>>
>>
>>
>>
>>     _______________________________________________
>>     Kamailio (SER) - Users Mailing List
>>     sr-users at lists.kamailio.org <mailto:sr-users at lists.kamailio.org>
>>     https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>
>     -- 
>     Daniel-Constantin Mierla -- www.asipto.com <http://www.asipto.com>
>     www.twitter.com/miconda <http://www.twitter.com/miconda> -- www.linkedin.com/in/miconda <http://www.linkedin.com/in/miconda>
>     Kamailio World Conference - April 27-29, 2020, in Berlin -- www.kamailioworld.com <http://www.kamailioworld.com>
>
>     _______________________________________________
>     Kamailio (SER) - Users Mailing List
>     sr-users at lists.kamailio.org <mailto:sr-users at lists.kamailio.org>
>     https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>
>
> _______________________________________________
> Kamailio (SER) - Users Mailing List
> sr-users at lists.kamailio.org
> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users

-- 
Daniel-Constantin Mierla -- www.asipto.com
www.twitter.com/miconda -- www.linkedin.com/in/miconda
Kamailio World Conference - April 27-29, 2020, in Berlin -- www.kamailioworld.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20191105/0bdcb083/attachment.html>


More information about the sr-users mailing list