[sr-dev] [SR-Users] dialog module with DB Backend

Daniel-Constantin Mierla miconda at gmail.com
Thu Mar 6 00:12:12 CET 2014


The dialog module checks for !=0 and the usrloc for <0. Returning 1 
makes no sense for the cassandra functions as it is not for a special 
case of successful result. It should be 0.

Cheers,
Daniel

On 05/03/14 22:46, jay binks wrote:
> Records were inserted, thats for sure..
>
> I have not checked usrloc, but I suspect it didnt rely on the return 
> code of the insert to anywhere near the same amount.
>
>
>
> On 5 March 2014 23:42, Carlos Ruiz Díaz <carlos.ruizdiaz at gmail.com 
> <mailto:carlos.ruizdiaz at gmail.com>> wrote:
>
>     Hi Jay,
>
>     I tried the module as is for the location service, and it worked
>     fine. Considering this, why was this part working if usrloc uses
>     the same DB API that was binding a buggy implementation?. It makes
>     me suspicious.
>
>     Did you make sure the records were actually inserted on the cluster?
>
>     Regards,
>     Carlos
>
>
>     On Wed, Mar 5, 2014 at 8:42 AM, Daniel-Constantin Mierla
>     <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>
>         Hello,
>
>         can you make the patch for master branch? I just backported
>         two patches that were in master branch but not yet in 4.1.
>
>         With this occasion, can you review if the other 'return 1'
>         expose the same issue? I noticed another one in
>         db_cassa_delete and in db_cassa_query.
>
>         Thanks,
>         Daniel
>
>
>         On 05/03/14 03:57, jay binks wrote:
>>         Just noticed the same thing in db_cassa_delete..
>>         patch updated to fix both
>>
>>         Jay
>>
>>
>>         On 5 March 2014 12:52, jay binks <jaybinks at gmail.com
>>         <mailto:jaybinks at gmail.com>> wrote:
>>
>>             Hi All,
>>
>>             so Ive done what Carlos suggested and swapped out my
>>             dialog db to Mysql rather than cassandra.
>>             All worked 100% as you would expect.
>>
>>             Right so the issue is db_cassandra .
>>
>>             I started testing and going through the code.
>>
>>             I found I had these lines, which was interesting &
>>             concerning.
>>             update_dialog_dbinfo_unsafe(): could not add another
>>             dialog to db
>>             I had been ignoring them, because the dialog was in the
>>             DB and I figured I would come back and figure that out later.
>>
>>             but this seems to have been key to this whole thing.
>>
>>             ends up that in dlg_db_handler.c dialog_dbf.insert was
>>             getting a 1 back from kamailio on the insert and a 0 back
>>             from mysql... WTF.. ok.
>>
>>             so I trace into db_cassa_insert which calls
>>             db_cassa_modify ..
>>             around line 1210 I can see this ..
>>
>>             CON_CASSA(_h)->con->batch_mutate(CFMap,
>>             oac::ConsistencyLevel::ONE);
>>             return 1;
>>
>>             wrapped in a try / catch block..
>>             seems db_cassandra wants to return 1 for success but
>>             kamailio ( or dialog module at least ) expects 0 for
>>             success .
>>
>>             so I change that to be return 0, and re-test.
>>             everything works as expected,  "could not add another
>>             dialog to db" stops coming up on my console,
>>             and dialogs are removed when calls hangup.
>>
>>             seems this 1 thing is enough to screw dialogs in
>>             cassandra ( and who knows what else ).
>>             This is the reason for my email though,   if we simply
>>             change that to 0, what else may break !??
>>
>>             however
>>             http://www.asipto.com/pub/kamailio-devel-guide/#c09f_insert
>>             clearly states that "0 if everything is OK"
>>             so this is clearly a bug that needs fixing.
>>
>>             Can I get someone with more experience to test this for
>>             me and possibly apply the attached patch !?
>>
>>             Jay
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>             On 25 February 2014 05:58, Daniel-Constantin Mierla
>>             <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>>             >
>>             > Hello,
>>             >
>>             > I pushed some patches to the master branch in order to
>>             remove the dialog from its associated profiles when it
>>             gets in terminated state. I encountered such issue (not
>>             that) recently, but I haven't gotten the time to get to
>>             it before.
>>             >
>>             > Then, the second patch is to not add dialogs in
>>             profiles when loading from database and the state is
>>             terminated (5).
>>             >
>>             > Here are the links to the patches:
>>             >
>>             > -
>>             http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=edf61acb57ed5e8ee0ca9ec1f796e43ce993be48
>>             > -
>>             http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=9b88eb7ee2d243882383a44f601baa21fd679cd5
>>             >
>>             > Should be straightforward to cherry pick to 4.1 (even
>>             4.0 I expect). If you test and all goes fine, I will
>>             backport -- here I had no time for real testing.
>>             >
>>             > I plan also to not add the dialogs in memory for state
>>             terminated, but destroy them at db load time. But this
>>             needs a bit of a review, to be sure that all necessary
>>             callbacks are executed.
>>             >
>>             > On the other hand, if the dialogs are not removed from
>>             db, might be an issue with the database driver (cassandra
>>             in this case, which is rather new module). Do you get any
>>             syslog errors from kamailio or database server? I expect
>>             that people would have reported such issue for other
>>             database engines so far. Still it might be an issue, just
>>             that was not noticed...
>>             >
>>             > Cheers,
>>             > Daniel
>>             >
>>             > On 24/02/14 11:19, jay binks wrote:
>>             >
>>             > So poking round the code for the dialog module....
>>             > Im not sure what im missing here.
>>             >
>>             >
>>             > get_profile_size dosnt care bout the state of a
>>             dialog... so you get ALL dialogs that are in the hash table.
>>             > ( which is interesting if you want to use dialog module
>>             to enforce channel limits etc )
>>             >
>>             > So you go... OK...  kamailio only expects to have
>>             "ACTIVE" dialogs in the hash table... kewl..
>>             > lets assume that to be the case.
>>             >
>>             > but then in dlg_db_handler.c , load_dialog_info_from_db
>>             loads all dialogs from the DB, regardless of state.
>>             > so all dialogs in the DB ( ones that didnt get deleted
>>             yet... but were in state 5 ) get re-created in kamailio
>>             > upon startup.
>>             >
>>             > what this means is...
>>             > ( assume starting with empty DB )
>>             >
>>             > I start kamailio, make some calls... they get synced to
>>             the DB.
>>             > I end the calls,  kamailio removes from dialogs module
>>             internal hash, but the sync to DB hasnt happened yet.
>>             >
>>             > I kill kamailio ( or crash .. whatever )....  restart
>>             kamailio and it re-loads all those dialogs
>>             > and thinks they are still active calls.
>>             >
>>             > Im SURE Im missing something here, because it seems to
>>             be VERY common to use dialogs for channel limiting..
>>             > maybe not so much using cassandra db behind the scenes,
>>             but as of yet ... Im still yet to find anything that
>>             makes me thing this is db_cassandra mis-behaving.
>>             >
>>             > if im wrong, please point me in the right direction.
>>             >
>>             > Jay
>>             >
>>             >
>>             >
>>             >
>>             > On 24 February 2014 17:54, jay binks
>>             <jaybinks at gmail.com <mailto:jaybinks at gmail.com>> wrote:
>>             >>
>>             >> Am I REALLY the only person who has ever run into this !?
>>             >>
>>             >>
>>             >> On 19 February 2014 14:08, jay binks
>>             <jaybinks at gmail.com <mailto:jaybinks at gmail.com>> wrote:
>>             >>>
>>             >>> Hi all, im using the dialog module with db_cassandra
>>             backend..
>>             >>> I dont believe this issue is related to cassandra,
>>             but its worth mentioning anyways.
>>             >>>
>>             >>> so... I run kamailio, make calls, see dialogs in the DB..
>>             >>> and I Can use "kamctl mi dlg_list" and see that
>>             dialogs go away when I hangup a call..
>>             >>>
>>             >>> When I query the DB Backend, I still see the queries,
>>             but they have a state of 5.
>>             >>> I Initially thought this was a bug, but it seems
>>             dialogs in state 5 get cleaned up after a period.
>>             >>> so I moved on.
>>             >>>
>>             >>> now , lets restart kamailio..
>>             >>> kamailio loads all dialogs on startup, after kamailio
>>             starts I call "kamctl mi dlg_list" again, and it shows
>>             all my dialogs from the DB.   they DO show as "State 5"
>>             >>> but for some reason, these dialogs appear to stick
>>             around for a long time, and the bigger issue it causes me
>>             is that my channel limiting ( using get_profile_size )
>>             seems to consider these dialogs ( in state 5 ) as being
>>             active calls.
>>             >>>
>>             >>> Please someone point me in the right direction... :)
>>             >>>
>>             >>> what am I doing wrong ?
>>             >>> ( or is this a bug somewhere )
>>             >>>
>>             >>> Sincerely
>>             >>>
>>             >>> Jay
>>             >>
>>             >>
>>             >>
>>             >>
>>             >> --
>>             >> Sincerely
>>             >>
>>             >> Jay
>>             >
>>             >
>>             >
>>             >
>>             > --
>>             > Sincerely
>>             >
>>             > Jay
>>             >
>>             >
>>             > _______________________________________________
>>             > sr-dev mailing list
>>             > sr-dev at lists.sip-router.org
>>             <mailto:sr-dev at lists.sip-router.org>
>>             > http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>>             >
>>             >
>>             > --
>>             > Daniel-Constantin Mierla - http://www.asipto.com
>>             > http://twitter.com/#!/miconda
>>             <http://twitter.com/#%21/miconda> -
>>             http://www.linkedin.com/in/miconda
>>             >
>>             >
>>             > _______________________________________________
>>             > SIP Express Router (SER) and Kamailio (OpenSER) -
>>             sr-users mailing list
>>             > sr-users at lists.sip-router.org
>>             <mailto:sr-users at lists.sip-router.org>
>>             >
>>             http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>             >
>>
>>
>>
>>             --
>>             Sincerely
>>
>>             Jay
>>
>>
>>
>>
>>         -- 
>>         Sincerely
>>
>>         Jay
>
>         -- 
>         Daniel-Constantin Mierla -http://www.asipto.com
>         http://twitter.com/#!/miconda  <http://twitter.com/#%21/miconda>  -http://www.linkedin.com/in/miconda
>
>
>
>
>     -- 
>     Carlos
>     http://caruizdiaz.com
>     http://ngvoice.com
>     +595981146623 <tel:%2B595981146623>
>
>
>
>
> -- 
> Sincerely
>
> Jay

-- 
Daniel-Constantin Mierla - http://www.asipto.com
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-dev/attachments/20140306/95692a7b/attachment-0001.html>


More information about the sr-dev mailing list