Res_odbc Crashes Asterisk

Home » Asterisk Users » Res_odbc Crashes Asterisk
Asterisk Users 3 Comments

I use realtime on my asterisk installation. I have always used mysql for my realtime connection but as mysql seems to be on the “soon to be deprecated” list of asterisk features I am trying to move to ODBC
(still using MariaDB/Mysql on backend). I find ODBC support in Asterisk very unstable. Just today my asterisk server (a test server and a production server) has crashed often or simply hangs because it says ODBC is disconnected. I can use the isql tool to query my database without any interruptions.

Is anyone using res_odbc for realtime in Asterisk 13? Both my test server and production server are CentOS 7.2 and I followed the procedure set by the Asterisk Wiki:
https://wiki.asterisk.org/wiki/display/AST/Setting+up+PJSIP+Realtime

I keep getting errors like this one:

asterisk:
/builddir/build/BUILD/mysql-connector-odbc-5.2.5-src/driver/desc.c:110:
desc_free_paramdata: Assertion `aprec’ failed.
[Feb 9 16:28:48] WARNING[3781]: res_odbc.c:1405 _ast_odbc_request_obj2:
SetConnectAttr (Txn isolation) returned an error: HY000: [MySQL][ODBC
5.2(w) Driver]Lost connection to MySQL server during query
[Feb 9 16:28:48] WARNING[3781]: res_config_odbc.c:117 custom_prepare:
SQL Prepare failed![SELECT * FROM ps_domain_aliases WHERE id = ?]
[Feb 9 16:28:48] WARNING[3781]: res_odbc.c:765 ast_odbc_sanity_check:
Connection is down attempting to reconnect… Aborted (core dumped)

Any pointers on working with ODBC and Asterisk?


Telecomunicaciones Abiertas de México S.A. de C.V. Carlos Chávez
+52 (55)9116-91161

3 thoughts on - Res_odbc Crashes Asterisk

  • Carlos Chavez wrote:

    Just as a clarification on the res_config_mysql status. It’s been extended support for quite awhile, meaning issues and such are taken care of by the community and not Digium. It hasn’t been deprecated and won’t be removed, we’re just not directly fixing issues in it.

    ODBC is made up of a few parts: res_odbc, the main ODBC library, and the connector. I know of Postgresql being heavily used and it has not seen these problems you appear to be having with MySQL. I’m not saying you need to switch but the problem seems to be with the ODBC MySQL connector itself, so feedback from people using that combination would be more valuable to you than everyone using ODBC. It would also be where you should focus your attention.

    Cheers,

  • We’ve had similar problems with realtime and ODBC on Asterisk 1.8 and 1.11. We found the issue to be caused by unixodbc and not Asterisk.

    When we had problems, it was with unixodbc 2.3.0 and 2.3.1. We’ve since downgraded to 2.2.14 and it’s been fairly smooth sailing since then.
    -H

    I use realtime on my asterisk installation. I have always used mysql for my realtime connection but as mysql seems to be on the “soon to be deprecated” list of asterisk features I am trying to move to ODBC
    (still using MariaDB/Mysql on backend). I find ODBC support in Asterisk very unstable. Just today my asterisk server (a test server and a production server) has crashed often or simply hangs because it says ODBC is disconnected. I can use the isql tool to query my database without any interruptions.

    Is anyone using res_odbc for realtime in Asterisk 13? Both my test server and production server are CentOS 7.2 and I followed the procedure set by the Asterisk Wiki:
    https://wiki.asterisk.org/wiki/display/AST/Setting+up+PJSIP+Realtime

    I keep getting errors like this one:

    asterisk:
    /builddir/build/BUILD/mysql-connector-odbc-5.2.5-src/driver/desc.c:110:
    desc_free_paramdata: Assertion `aprec’ failed.
    [Feb 9 16:28:48] WARNING[3781]: res_odbc.c:1405 _ast_odbc_request_obj2:
    SetConnectAttr (Txn isolation) returned an error: HY000: [MySQL][ODBC
    5.2(w) Driver]Lost connection to MySQL server during query
    [Feb 9 16:28:48] WARNING[3781]: res_config_odbc.c:117 custom_prepare:
    SQL Prepare failed![SELECT * FROM ps_domain_aliases WHERE id = ?]
    [Feb 9 16:28:48] WARNING[3781]: res_odbc.c:765 ast_odbc_sanity_check:
    Connection is down attempting to reconnect… Aborted (core dumped)

    Any pointers on working with ODBC and Asterisk?

  • Thank you. I will avoid ODBC for the moment and use Mysql for the realtime engine. Now the problem seems to be that Mysql complains that some fields (like qualify_timeout and qualify_frequency) are int(11) and it wants type char instead. Since I am using alembic and the table definitions that come with Asterisk I wonder why there is a problem.
    Why do the ODBC and Mysql engines require different type fields?