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.ruizd...@gmail.com <mailto:carlos.ruizd...@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
    <mico...@gmail.com <mailto:mico...@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 <jaybi...@gmail.com
        <mailto:jaybi...@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
            <mico...@gmail.com <mailto:mico...@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
            <jaybi...@gmail.com <mailto:jaybi...@gmail.com>> wrote:
            >>
            >> Am I REALLY the only person who has ever run into this !?
            >>
            >>
            >> On 19 February 2014 14:08, jay binks
            <jaybi...@gmail.com <mailto:jaybi...@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-...@lists.sip-router.org
            <mailto:sr-...@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@lists.sip-router.org
            <mailto:sr-users@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

_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

Reply via email to