[asterisk-bugs] [JIRA] (ASTERISK-25218) res_config_pgsql freezes asterisk at startup

Rusty Newton (JIRA) noreply at issues.asterisk.org
Wed Jul 1 13:38:33 CDT 2015


     [ https://issues.asterisk.org/jira/browse/ASTERISK-25218?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Rusty Newton updated ASTERISK-25218:
------------------------------------

    Assignee: Roman
      Status: Waiting for Feedback  (was: Triage)

The res_config_pgsql module is under Extended Support. This means that the broader Asterisk community supports the module and not the core team.

If you want the fix to make it into the next release, the best thing to do is submit a patch with your proposed fix. See the [Patch Contribution Process|https://wiki.asterisk.org/wiki/display/AST/Patch+Contribution+Process].

Otherwise it'll be up to another community member to submit a patch and push it through the peer-review process. 

> res_config_pgsql freezes asterisk at startup
> --------------------------------------------
>
>                 Key: ASTERISK-25218
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-25218
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Resources/res_config_pgsql
>    Affects Versions: 13.4.0
>         Environment: postgresql server 9.4.4
> asterisk 13.4.0
> ubuntu server 14.04.02 LTS
> sip accounts & sip peers & queue_members configured as realtime with Postgresql datasource
>            Reporter: Roman
>            Assignee: Roman
>
> i have production server with about 400 sip accounts with short registration timeout for each (less or equals to 60 seconds).
> and sometimes when i restart the asterisk server i see when * loads chan_sip or app_queue module then start process is freezes and nothing happens at all.
> only "kill -9 pid" can help me to stop the process.
> then i run gdb and run bt:
> #5  0x00007f0855fe3add in _pgsql_exec (result=0x7fff241941a0,
>     sql=0x1da3e28 "SELECT a.attname, t.typname, a.attlen, a.attnotnull, d.adsrc, a.atttypmod FROM (((pg_catalog.pg_class c INNER JOIN pg_catalog.pg_namespace n ON n.oid = c.re          lnamespace AND c.relname = 'queue_members' A"..., tablename=0x7fff24194430 "queue_members", database=0x7f08561f0700 <dbname> "voip") at res_config_pgsql.c:161
> This "init table" request (function find_table) running infinitely
> After reading lot of debug logs i see that right after init table request some of my sip accounts transmit a register message to the server and asterisk makes database request for select data. But init table answer not received by the module yet. Looking at source code of module res_config_pgsql i can see global variable PGconn *pgsqlConn and main function which uses this variable - pgsql_exec, for concurrence execution uses mutex pgsql_lock.
> but issue has function find_table because he calls function pgsql_exec without locking the connection mutex
> after adding lock to the find_table function the issue is gone
> i hope this issue will be fixed in the next releases



--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list