Hello,

I did a new tuning, skipping reconnect in submit query if connection is ok - the result might be broken due to other reasons and will be reported when fetching it. If you can try again and report, would be appreciated.

Thanks,
Daniel

On 1/18/11 11:34 AM, Javier Gallart wrote:
Hi Daniel


I tested the patch but the mtree module fails to start:
Jan 18 04:15:55 kam-test ./kamailio[4616]: DEBUG: <core> [db.c:202]: using db bind api for db_postgres Jan 18 04:15:55 kam-test ./kamailio[4616]: DEBUG: <core> [db.c:285]: connection 0x931768 not found in pool Jan 18 04:15:55 kam-test ./kamailio[4616]: DEBUG: db_postgres [km_pg_con.c:51]: db_id = 0x931768 Jan 18 04:15:55 kam-test ./kamailio[4616]: DEBUG: db_postgres [km_pg_con.c:64]: 0x9319b8=pkg_malloc(72) Jan 18 04:15:55 kam-test ./kamailio[4616]: DEBUG: db_postgres [km_pg_con.c:76]: opening connection: postgres://xxxx:xxxx@79.170.68.171/routing <http://xxxx:xxxx@79.170.68.171/routing> Jan 18 04:15:55 kam-test ./kamailio[4616]: DEBUG: db_postgres [km_pg_con.c:80]: PQsetdbLogin(0x2259780) Jan 18 04:15:55 kam-test ./kamailio[4616]: DEBUG: mtree [mtree_mod.c:255]: database connection opened successfully Jan 18 04:15:55 kam-test ./kamailio[4616]: WARNING: db_postgres [km_dbase.c:161]: postgres result check failed with code 7 (PGRES_FATAL_ERROR) Jan 18 04:15:55 kam-test ./kamailio[4616]: WARNING: db_postgres [km_dbase.c:165]: postgres query command failed, connection status 0, error [] Jan 18 04:15:55 kam-test ./kamailio[4616]: WARNING: db_postgres [km_dbase.c:165]: postgres query command failed, connection status 0, error [another command is already in progress#012] Jan 18 04:15:55 kam-test ./kamailio[4616]: WARNING: db_postgres [km_dbase.c:165]: postgres query command failed, connection status 0, error [another command is already in progress#012] Jan 18 04:15:55 kam-test ./kamailio[4616]: ERROR: db_postgres [km_dbase.c:173]: 0x931660 PQsendQuery Error: another command is already in progress#012 Query: select tname,tprefix,tvalue from mtree order by tname Jan 18 04:15:55 kam-test ./kamailio[4616]: ERROR: <core> [db_query.c:101]: error while submitting query Jan 18 04:15:55 kam-test ./kamailio[4616]: ERROR: mtree [mtree_mod.c:626]: Error while querying db Jan 18 04:15:55 kam-test ./kamailio[4616]: ERROR: mtree [mtree_mod.c:296]: cannot load trees from database Jan 18 04:15:55 kam-test ./kamailio[4616]: DEBUG: <core> [db_pool.c:102]: removing connection from the pool Jan 18 04:15:55 kam-test ./kamailio[4616]: DEBUG: db_postgres [km_pg_con.c:124]: PQfinish(0x2259780) Jan 18 04:15:55 kam-test ./kamailio[4616]: DEBUG: db_postgres [km_pg_con.c:128]: pkg_free(0x9319b8) Jan 18 04:15:55 kam-test ./kamailio[4616]: ERROR: <core> [sr_module.c:875]: init_mod(): Error while initializing module mtree (/usr/local/kamailio.20110117/lib/kamailio/modules/mtree.so)

I don't see an easy way to fix this, because even after the server restart, PQsendQuery will return 1, and therefore db_postgres_fetch_result is executed and fails. I will keep looking into this, for now it's not a big issue since we know that the second attempt works fine....


Thanks

Javi

On Sun, Jan 16, 2011 at 11:09 PM, Daniel-Constantin Mierla <mico...@gmail.com <mailto:mico...@gmail.com>> wrote:

    Hello,

    made a commit to fix in such case, when the broken connection is
    reported after doing actually the query, attempting to reconnect
    then. Let me know if works now.

    Cheers,
    Daniel


    On 1/16/11 6:17 PM, Javier Gallart wrote:
    Hi Daniel,

    I'm using postgres 8.4 at the server and libpq5 library for the
    client. I've been testing again and the problem is that after a
    db restart (no matter if done through a service restart or having
    t down for some  time), the PQstatus(CON_CONNECTION(_con))
    function returns a CONNECTION_OK and therefore it doesn't try to
    reconnect. It's on the second attempt of the mt_reload that it
    returns the correct CONNECTION_BAD value, and reconnection at
    that point works perfectly well.

    First attempt after db restart (I've added a dbg message if we
    get a CONNECTION_OK):

    Jan 16 12:03:00 kam-test ./kamailio[22214]: DEBUG: db_postgres
    [km_dbase.c:129]: connection OK
    Jan 16 12:03:00 kam-test ./kamailio[22214]: DEBUG: db_postgres
    [km_dbase.c:155]: sending query ok: 0x92f888 - [select
    tname,tprefix,tvalue from mtree  order by tname]
    Jan 16 12:03:00 kam-test ./kamailio[22214]: DEBUG: <core>
    [db_res.c:118]: allocate 48 bytes for result set at 0x94cd08
    Jan 16 12:03:00 kam-test ./kamailio[22214]: DEBUG: db_postgres
    [km_dbase.c:222]: 0x92f888 PQresultStatus(PGRES_FATAL_ERROR)
    PQgetResult(0x1a30d10)
    Jan 16 12:03:00 kam-test ./kamailio[22214]: ERROR: db_postgres
    [km_dbase.c:238]: 0x92f888 - invalid query, execution aborted
    Jan 16 12:03:00 kam-test ./kamailio[22214]: ERROR: db_postgres
    [km_dbase.c:239]: 0x92f888 - PQresultStatus(PGRES_FATAL_ERROR)
    Jan 16 12:03:00 kam-test ./kamailio[22214]: ERROR: db_postgres
    [km_dbase.c:240]: 0x92f888: server closed the connection
    unexpectedly#012#011This probably means the server terminated
    abnormally#012#011before or while processing the request.#012

    Second attempt:

    Jan 16 12:03:08 kam-test ./kamailio[22214]: DEBUG: db_postgres
    [km_dbase.c:132]: connection reset
    Jan 16 12:03:08 kam-test ./kamailio[22214]: DEBUG: db_postgres
    [km_dbase.c:315]: PQclear(0x1a30d10) result set
    Jan 16 12:03:08 kam-test ./kamailio[22214]: DEBUG: db_postgres
    [km_dbase.c:155]: sending query ok: 0x92f888 - [select
    tname,tprefix,tvalue from mtree  order by tname]

    Thanks!

    Javi



    On Fri, Jan 14, 2011 at 11:42 AM, Daniel-Constantin Mierla
    <mico...@gmail.com <mailto:mico...@gmail.com>> wrote:

        Hello,

        what version of postgres and postgres client library are you
        using?

        According to the docs from devel manual, this is the function
        that should be used to reconnect:

        |PQreset|
            Resets the communication channel to the server.

            void PQreset(PGconn *conn);

            This function will close the connection to the server and
            attempt to reestablish a new connection to the same
            server, using all the same parameters previously used.
            This may be useful for error recovery if a working
            connection is lost.

        You may see more here:
        
http://www.network-theory.co.uk/docs/postgresql/vol2/DatabaseConnectionControlFunctions.html

        Somehow seems not to work in this case. Can you try also with
        a shorter down time for postgres server, like a normal
        restart? Would be intrested to see if the client side loses
        somehow connection parameters due to long time unconnected.

        Cheers,
        Daniel


        On 1/14/11 11:15 AM, Javier Gallart wrote:
        Hi Daniel


        this is my test:

        1- Kamailio starts and correctly loads the mtree
        2- I make whatever modification in the tree and reload with
        mt_reload
        Jan 14 04:19:06 kam-test ./kamailio[31205]: DEBUG:
        db_postgres [km_dbase.c:153]: sending query ok: 0x92f880 -
        [select tname,tprefix,tvalue from mtree  order by tname]
        Jan 14 04:19:06 kam-test ./kamailio[31205]: DEBUG: <core>
        [db_res.c:118]: allocate 48 bytes for result set at 0x94cd00
        Jan 14 04:19:06 kam-test ./kamailio[31205]: DEBUG:
        db_postgres [km_dbase.c:220]: 0x92f880
        PQresultStatus(PGRES_TUPLES_OK) PQgetResult(0x29f05f0)
        Jan 14 04:19:06 kam-test ./kamailio[31205]: DEBUG:
        db_postgres [km_res.c:108]: 3 columns returned from the query
        Jan 14 04:19:06 kam-test ./kamailio[31205]: DEBUG: <core>
        [db_res.c:155]: allocate 24 bytes for result names at 0x94cc60
        [....]
        Jan 14 04:19:06 kam-test ./kamailio[31205]: DEBUG:
        db_postgres [km_res.c:267]: freeing row buffer at 0x94c940
        Jan 14 04:19:06 kam-test ./kamailio[31205]: DEBUG: mtree
        [mtree.c:738]: adding new tname [1]
        Jan 14 04:19:06 kam-test ./kamailio[31205]: DEBUG: <core>
        [db_res.c:54]: freeing 3 rows
        [...]
        Jan 14 04:19:06 kam-test ./kamailio[31205]: DEBUG: <core>
        [db_res.c:94]: freeing result names at 0x94cc60
        Jan 14 04:19:06 kam-test ./kamailio[31205]: DEBUG: <core>
        [db_res.c:99]: freeing result types at 0x94cbc0
        Jan 14 04:19:06 kam-test ./kamailio[31205]: DEBUG: <core>
        [db_res.c:136]: freeing result set at 0x94cd00
        Jan 14 04:19:06 kam-test ./kamailio[31205]: DEBUG:
        db_postgres [km_dbase.c:313]: PQclear(0x29f05f0) result set

        3. Postgres DB restarts (either through restart, or
        /stop/wait a minute/start)
        No log is written in Kamailio when this happens.

        4.- I try again to reload the tree, and these are the logs:
        Jan 14 04:21:42 kam-test ./kamailio[31205]: DEBUG:
        db_postgres [km_dbase.c:153]: sending query ok: 0x92f880 -
        [select tname,tprefix,tvalue from mtree  order by tname]
        Jan 14 04:21:42 kam-test ./kamailio[31205]: DEBUG: <core>
        [db_res.c:118]: allocate 48 bytes for result set at 0x94cd00
        Jan 14 04:21:42 kam-test ./kamailio[31205]: DEBUG:
        db_postgres [km_dbase.c:220]: 0x92f880
        PQresultStatus(PGRES_FATAL_ERROR) PQgetResult(0x29ef0a0)
        Jan 14 04:21:42 kam-test ./kamailio[31205]: ERROR:
        db_postgres [km_dbase.c:236]: 0x92f880 - invalid query,
        execution aborted
        Jan 14 04:21:42 kam-test ./kamailio[31205]: ERROR:
        db_postgres [km_dbase.c:237]: 0x92f880 -
        PQresultStatus(PGRES_FATAL_ERROR)
        Jan 14 04:21:42 kam-test ./kamailio[31205]: ERROR:
        db_postgres [km_dbase.c:238]: 0x92f880: server closed the
        connection unexpectedly#012#011This probably means the
        server terminated abnormally#012#011before or while
        processing the request.#012
        Jan 14 04:21:42 kam-test ./kamailio[31205]: DEBUG: <core>
        [db_res.c:81]: freeing 0 columns
        Jan 14 04:21:42 kam-test ./kamailio[31205]: DEBUG: <core>
        [db_res.c:136]: freeing result set at 0x94cd00
        Jan 14 04:21:42 kam-test ./kamailio[31205]: ERROR: mtree
        [mtree_mod.c:633]: Error while fetching result
        Jan 14 04:21:42 kam-test ./kamailio[31205]: ERROR:
        db_postgres [km_dbase.c:329]: invalid parameter value
        Jan 14 04:21:42 kam-test ./kamailio[31205]: ERROR: mtree
        [mtree_mod.c:744]: cannot re-load info from database

        Thanks in advance


        Regards

        Javi

        On Thu, Jan 13, 2011 at 1:56 PM, Daniel-Constantin Mierla
        <mico...@gmail.com <mailto:mico...@gmail.com>> wrote:

            Can you send the log messages (debug=3) for that moment
            (restart of pg server and making a new call/registration)?

            Daniel


            On 1/13/11 12:00 PM, Javier Gallart wrote:
            Hi Daniel

            I have just tested it and I'm getting the same results.
            This is the kamailio version I'm testing:
            root@kam-test:/usr/local/kamailio/sbin# ./kamailio -V
            version: kamailio 3.2.0-dev2 (x86_64/linux) 35568f

            Thanks!

            Javi


            On Tue, Jan 4, 2011 at 3:46 PM, Javier Gallart
            <jgalla...@gmail.com <mailto:jgalla...@gmail.com>> wrote:

                Hi list

                we have been testing the mtree module. We do
                periodical reloads of the mtree table with the "mi
                mt_reload" command through xmlrpc. It works fine
                except when the db is restarted. If we manually
                restart the db and then try the mt_reload commands
                we get this error:
                Jan  4 09:13:17
                server /usr/local/kamailio-3.1.1/sbin/kamailio[28534]:
                ERROR: db_postgres [km_dbase.c:152]: 0xa6a490
                PQsendQuery Error: server closed the connection
                unexpectedly#012#011This probably means the server
                terminated abnormally#012#011before or while
                processing the request.#012 Query: select
                partition,prefix,route from trees  order by partition
                Jan  4 09:13:17 server
                /usr/local/kamailio-3.1.1/sbin/kamailio[28534]:
                ERROR: <core> [db_query.c:101]: error while
                submitting query
                Jan  4 09:13:17 server
                /usr/local/kamailio-3.1.1/sbin/kamailio[28534]:
                ERROR: mtree [mtree_mod.c:622]: Error while querying db
                Jan  4 09:13:17 server
                /usr/local/kamailio-3.1.1/sbin/kamailio[28534]:
                ERROR: mtree [mtree_mod.c:738]: cannot re-load info
                from database

                Is there a way to reconnect to the db before
                sending that command?

                Thanks in advance

                Regards

                Javi



            _______________________________________________
            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

-- Daniel-Constantin Mierla
            Kamailio (OpenSER) Advanced Training
            Jan 24-26, 2011, Irvine, CA, USA
            http://www.asipto.com



        _______________________________________________
        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

-- Daniel-Constantin Mierla
        Kamailio (OpenSER) Advanced Training
        Jan 24-26, 2011, Irvine, CA, USA
        http://www.asipto.com



-- Daniel-Constantin Mierla
    Kamailio (OpenSER) Advanced Training
    Jan 24-26, 2011, Irvine, CA, USA
    http://www.asipto.com



_______________________________________________
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

--
Daniel-Constantin Mierla
Kamailio (OpenSER) Advanced Training
Jan 24-26, 2011, Irvine, CA, USA
http://www.asipto.com

_______________________________________________
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