Hi folks,

I’m using OpenSIPs as a load balancer in an active/active setup. I’m trying to 
set up call re-homing when a node in the cluster goes down, largely following 
https://blog.opensips.org/2019/10/03/re-homing-your-calls-with-opensips-3-0/ . 
I’ve got separate shtags lb1 and lb2 for each node.

When the cluster down is detected, I am running a python script that sets the 
remaining node as active then aims to rehome the calls in progress. Currently, 
that works by getting dlg_list_ctx, then running dlg_send_sequential for each 
dialog with a shtag matching the down node 
(dialog[‘context’][‘values’][‘dlgX_shtag’].


That’s fine for a few calls, but fails when we get to a few hundred because the 
dlg_list_ctx throws an error:
Jul  9 09:47:00 ip-10-4-40-11 /usr/sbin/opensips[83438]: 
ERROR:core:print_mi_response: Failed to print JSON

Jul  9 09:47:00 ip-10-4-40-11 /usr/sbin/opensips[83438]: 
ERROR:mi_http:mi_json_answer_to_connection: failed to print json response


Any ideas recommendations on how to tackle this?

I could use dlg_list_ctx specifying an index/counter to complete in batches, 
but I’m not quite sure how the indexing works so there’s a worry we’d miss 
calls. E.g. we do calls 0-40 then 41-80 but if call 0 ends while processing 
0-40, does that mean call 41 becomes call 40 so it’s missed from the 41-80 
batch.

Probably the best solution I have at the moment is to query the DB directly to 
get the definitively list of call ids, then run dlg_list_ctx specifying and iID 
then dlg_send_sequential if appropriate. Or just don’t bother checking and run 
dlg_send_sequential on them all.

Any thoughts / suggestions?
Best,

‑‑‑‑‑
Ben Laing

He/Him
Senior Software Developer
Email: ben.la...@dals.co.uk
Website: www.dals.co.uk<http://www.dals.co.uk/>
Dals, Statham House, Talbot Rd, Stretford, Manchester, M32 0FP



Classified - General
_______________________________________________
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to