Hi, I'm experimenting with spidermonkey for JavaScript call control, the basics seem fine and I'm now trying to connect to an existing Firebird database, the Firebird odbc lib is installed ok as is unixODBC and I can confirm this and access the db no problem with isql, something strange happens though when I connect in spidermonkey, basically the odbc connection is made successfully, but then as soon as I call either exec or query the odbc connection starts to drop and re-connect continuously, the isql output is below isql -v test +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> select first 1 * from pool_phones +---------------------+------------+ | GSMNO | ORGNO | +---------------------+------------+ | 0712345678 | 1 | +---------------------+------------+ SQLRowCount returns 1 1 rows fetched SQL> however the following test code calling the same query use("ODBC"); var db = new ODBC("test","SYSDBA","masterkey"); db.connect(); db.query("select first 1 * from pool_phones"); db.nextRow(); row = db.getData(); console_log("INFO","HELLO " + row["GSMNO"] + "\n"); exit(); gives the following output and then just loops disconnecting and reconnecting until I shutdown freeswitch 2008-02-18 23:26:03 [DEBUG] switch_core_state_machine.c:144 switch_core_standard_on_execute() sofia/default/1000@192.168.0.7:5060 <mailto:sofia/default/1000@192.168.0.7:5060> Execute javascript(/usr/scripts/test1.js) 2008-02-18 23:26:03 [DEBUG] mod_spidermonkey.c:3150 js_api_use() Loading ODBC 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:145 switch_odbc_handle_connect() Connecting test 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:174 switch_odbc_handle_connect() Connected to [test] 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:95 switch_odbc_handle_disconnect() Disconnected 0 from [test] 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:142 switch_odbc_handle_connect() Re-connecting test 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:145 switch_odbc_handle_connect() Connecting test 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:174 switch_odbc_handle_connect() Connected to [test] 2008-02-18 23:26:03 [CRIT] switch_odbc.c:234 db_is_up() The sql server is not responding for DSN test [] 2008-02-18 23:26:03 [INFO] switch_odbc.c:239 db_is_up() The connection has been re-established ... Any ideas much appreciated Thanks Steve
I spotted this error a few months ago, and to my shame did not let everyone know. I have since archived the project so cannot point you to the actual code. However, the problem is that it assumes the name of the Firebird Driver (FB64?) to set a boolean, so that it handle the connection test differently. When looking at the actual code, I actually felt that the connection test was redundant, as all it did was a select from a system table. This meant it was doing two queries for everyone required. (One to see if it could do a query, and then one to do it). I therefore commented the connection test function out. regards David Revill ----- Original Message ----- From: Steven Brown To: freeswitch-users@lists.freeswitch.org Sent: Monday, February 18, 2008 11:34 PM Subject: [Freeswitch-users] Spidermonkey ODBC Hi, I'm experimenting with spidermonkey for JavaScript call control, the basics seem fine and I'm now trying to connect to an existing Firebird database, the Firebird odbc lib is installed ok as is unixODBC and I can confirm this and access the db no problem with isql, something strange happens though when I connect in spidermonkey, basically the odbc connection is made successfully, but then as soon as I call either exec or query the odbc connection starts to drop and re-connect continuously, the isql output is below isql -v test +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> select first 1 * from pool_phones +---------------------+------------+ | GSMNO | ORGNO | +---------------------+------------+ | 0712345678 | 1 | +---------------------+------------+ SQLRowCount returns 1 1 rows fetched SQL> however the following test code calling the same query use("ODBC"); var db = new ODBC("test","SYSDBA","masterkey"); db.connect(); db.query("select first 1 * from pool_phones"); db.nextRow(); row = db.getData(); console_log("INFO","HELLO " + row["GSMNO"] + "\n"); exit(); gives the following output and then just loops disconnecting and reconnecting until I shutdown freeswitch 2008-02-18 23:26:03 [DEBUG] switch_core_state_machine.c:144 switch_core_standard_on_execute() sofia/default/1000@192.168.0.7:5060 Execute javascript(/usr/scripts/test1.js) 2008-02-18 23:26:03 [DEBUG] mod_spidermonkey.c:3150 js_api_use() Loading ODBC 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:145 switch_odbc_handle_connect() Connecting test 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:174 switch_odbc_handle_connect() Connected to [test] 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:95 switch_odbc_handle_disconnect() Disconnected 0 from [test] 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:142 switch_odbc_handle_connect() Re-connecting test 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:145 switch_odbc_handle_connect() Connecting test 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:174 switch_odbc_handle_connect() Connected to [test] 2008-02-18 23:26:03 [CRIT] switch_odbc.c:234 db_is_up() The sql server is not responding for DSN test [] 2008-02-18 23:26:03 [INFO] switch_odbc.c:239 db_is_up() The connection has been re-established ... Any ideas much appreciated Thanks Steve ------------------------------------------------------------------------------ _______________________________________________ Freeswitch-users mailing list Freeswitch-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
The problem is in switch_odbc.c function db_is_up. It assumes that the variable is_firebird is true, but the setting of this variable assumes that the Firebird driver name has 'FIREBIRD', 'FB64' or 'FB32' in it. I commented out the code in db_is_up and just returned a true value, as on closer inspection could not see the point of this function. David Revill ----- Original Message ----- From: David Revill To: freeswitch-users@lists.freeswitch.org Sent: Tuesday, February 19, 2008 8:58 AM Subject: Re: [Freeswitch-users] Spidermonkey ODBC I spotted this error a few months ago, and to my shame did not let everyone know. I have since archived the project so cannot point you to the actual code. However, the problem is that it assumes the name of the Firebird Driver (FB64?) to set a boolean, so that it handle the connection test differently. When looking at the actual code, I actually felt that the connection test was redundant, as all it did was a select from a system table. This meant it was doing two queries for everyone required. (One to see if it could do a query, and then one to do it). I therefore commented the connection test function out. regards David Revill ----- Original Message ----- From: Steven Brown To: freeswitch-users@lists.freeswitch.org Sent: Monday, February 18, 2008 11:34 PM Subject: [Freeswitch-users] Spidermonkey ODBC Hi, I'm experimenting with spidermonkey for JavaScript call control, the basics seem fine and I'm now trying to connect to an existing Firebird database, the Firebird odbc lib is installed ok as is unixODBC and I can confirm this and access the db no problem with isql, something strange happens though when I connect in spidermonkey, basically the odbc connection is made successfully, but then as soon as I call either exec or query the odbc connection starts to drop and re-connect continuously, the isql output is below isql -v test +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> select first 1 * from pool_phones +---------------------+------------+ | GSMNO | ORGNO | +---------------------+------------+ | 0712345678 | 1 | +---------------------+------------+ SQLRowCount returns 1 1 rows fetched SQL> however the following test code calling the same query use("ODBC"); var db = new ODBC("test","SYSDBA","masterkey"); db.connect(); db.query("select first 1 * from pool_phones"); db.nextRow(); row = db.getData(); console_log("INFO","HELLO " + row["GSMNO"] + "\n"); exit(); gives the following output and then just loops disconnecting and reconnecting until I shutdown freeswitch 2008-02-18 23:26:03 [DEBUG] switch_core_state_machine.c:144 switch_core_standard_on_execute() sofia/default/1000@192.168.0.7:5060 Execute javascript(/usr/scripts/test1.js) 2008-02-18 23:26:03 [DEBUG] mod_spidermonkey.c:3150 js_api_use() Loading ODBC 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:145 switch_odbc_handle_connect() Connecting test 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:174 switch_odbc_handle_connect() Connected to [test] 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:95 switch_odbc_handle_disconnect() Disconnected 0 from [test] 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:142 switch_odbc_handle_connect() Re-connecting test 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:145 switch_odbc_handle_connect() Connecting test 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:174 switch_odbc_handle_connect() Connected to [test] 2008-02-18 23:26:03 [CRIT] switch_odbc.c:234 db_is_up() The sql server is not responding for DSN test [] 2008-02-18 23:26:03 [INFO] switch_odbc.c:239 db_is_up() The connection has been re-established ... Any ideas much appreciated Thanks Steve ---------------------------------------------------------------------------- _______________________________________________ Freeswitch-users mailing list Freeswitch-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org ------------------------------------------------------------------------------ _______________________________________________ Freeswitch-users mailing list Freeswitch-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
I did that code a couple of months ago. The function was added since connections are closed if they are idle too long, and they were not reconnected again if that happened. On Feb 19, 2008 11:22 AM, David Revill <davidrevill@datarun.co.uk> wrote:
The problem is in switch_odbc.c function db_is_up. It assumes that the variable is_firebird is true, but the setting of this variable assumes that the Firebird driver name has 'FIREBIRD', 'FB64' or 'FB32' in it.
I commented out the code in db_is_up and just returned a true value, as on closer inspection could not see the point of this function.
David Revill
----- Original Message ----- *From:* David Revill <davidrevill@datarun.co.uk> *To:* freeswitch-users@lists.freeswitch.org *Sent:* Tuesday, February 19, 2008 8:58 AM *Subject:* Re: [Freeswitch-users] Spidermonkey ODBC
I spotted this error a few months ago, and to my shame did not let everyone know. I have since archived the project so cannot point you to the actual code. However, the problem is that it assumes the name of the Firebird Driver (FB64?) to set a boolean, so that it handle the connection test differently.
When looking at the actual code, I actually felt that the connection test was redundant, as all it did was a select from a system table. This meant it was doing two queries for everyone required. (One to see if it could do a query, and then one to do it). I therefore commented the connection test function out.
regards
David Revill
----- Original Message ----- *From:* Steven Brown <steven.brown@justfone.com> *To:* freeswitch-users@lists.freeswitch.org *Sent:* Monday, February 18, 2008 11:34 PM *Subject:* [Freeswitch-users] Spidermonkey ODBC
Hi,
I'm experimenting with spidermonkey for JavaScript call control, the basics seem fine and I'm now trying to connect to an existing Firebird database, the Firebird odbc lib is installed ok as is unixODBC and I can confirm this and access the db no problem with isql, something strange happens though when I connect in spidermonkey, basically the odbc connection is made successfully, but then as soon as I call either exec or query the odbc connection starts to drop and re-connect continuously,
the isql output is below
isql -v test +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> select first 1 * from pool_phones +---------------------+------------+ | GSMNO | ORGNO | +---------------------+------------+ | 0712345678 | 1 | +---------------------+------------+ SQLRowCount returns 1 1 rows fetched SQL> however the following test code calling the same query
use("ODBC"); var db = new ODBC("test","SYSDBA","masterkey"); db.connect(); db.query("select first 1 * from pool_phones"); db.nextRow(); row = db.getData(); console_log("INFO","HELLO " + row["GSMNO"] + "\n"); exit();
gives the following output and then just loops disconnecting and reconnecting until I shutdown freeswitch 2008-02-18 23:26:03 [DEBUG] switch_core_state_machine.c:144 switch_core_standard_on_execute() sofia/default/1000@192.168.0.7:5060Execute javascript(/usr/scripts/test1.js) 2008-02-18 23:26:03 [DEBUG] mod_spidermonkey.c:3150 js_api_use() Loading ODBC 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:145 switch_odbc_handle_connect() Connecting test 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:174 switch_odbc_handle_connect() Connected to [test] 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:95 switch_odbc_handle_disconnect() Disconnected 0 from [test] 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:142 switch_odbc_handle_connect() Re-connecting test 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:145 switch_odbc_handle_connect() Connecting test 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:174 switch_odbc_handle_connect() Connected to [test] 2008-02-18 23:26:03 [CRIT] switch_odbc.c:234 db_is_up() The sql server is not responding for DSN test [] 2008-02-18 23:26:03 [INFO] switch_odbc.c:239 db_is_up() The connection has been re-established ...
Any ideas much appreciated
Thanks
Steve
------------------------------
_______________________________________________ Freeswitch-users mailing list Freeswitch-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
------------------------------
_______________________________________________ Freeswitch-users mailing list Freeswitch-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
_______________________________________________ Freeswitch-users mailing list Freeswitch-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
That's a fair point, but db_is_up is only called in 2 places and the attempted re-connect could be done if the exec'd query fails. That way it would not be dependant on the name of the driver. In my application, the database was queried at the beginning of the script and the connection closed. It was explicitly re-connected at the end to post data, so the connection timeout was not an issue. ----- Original Message ----- From: Jonas Gauffin To: freeswitch-users@lists.freeswitch.org Sent: Tuesday, February 19, 2008 10:35 AM Subject: Re: [Freeswitch-users] Spidermonkey ODBC I did that code a couple of months ago. The function was added since connections are closed if they are idle too long, and they were not reconnected again if that happened. On Feb 19, 2008 11:22 AM, David Revill <davidrevill@datarun.co.uk> wrote: The problem is in switch_odbc.c function db_is_up. It assumes that the variable is_firebird is true, but the setting of this variable assumes that the Firebird driver name has 'FIREBIRD', 'FB64' or 'FB32' in it. I commented out the code in db_is_up and just returned a true value, as on closer inspection could not see the point of this function. David Revill ----- Original Message ----- From: David Revill To: freeswitch-users@lists.freeswitch.org Sent: Tuesday, February 19, 2008 8:58 AM Subject: Re: [Freeswitch-users] Spidermonkey ODBC I spotted this error a few months ago, and to my shame did not let everyone know. I have since archived the project so cannot point you to the actual code. However, the problem is that it assumes the name of the Firebird Driver (FB64?) to set a boolean, so that it handle the connection test differently. When looking at the actual code, I actually felt that the connection test was redundant, as all it did was a select from a system table. This meant it was doing two queries for everyone required. (One to see if it could do a query, and then one to do it). I therefore commented the connection test function out. regards David Revill ----- Original Message ----- From: Steven Brown To: freeswitch-users@lists.freeswitch.org Sent: Monday, February 18, 2008 11:34 PM Subject: [Freeswitch-users] Spidermonkey ODBC Hi, I'm experimenting with spidermonkey for JavaScript call control, the basics seem fine and I'm now trying to connect to an existing Firebird database, the Firebird odbc lib is installed ok as is unixODBC and I can confirm this and access the db no problem with isql, something strange happens though when I connect in spidermonkey, basically the odbc connection is made successfully, but then as soon as I call either exec or query the odbc connection starts to drop and re-connect continuously, the isql output is below isql -v test +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> select first 1 * from pool_phones +---------------------+------------+ | GSMNO | ORGNO | +---------------------+------------+ | 0712345678 | 1 | +---------------------+------------+ SQLRowCount returns 1 1 rows fetched SQL> however the following test code calling the same query use("ODBC"); var db = new ODBC("test","SYSDBA","masterkey"); db.connect(); db.query("select first 1 * from pool_phones"); db.nextRow(); row = db.getData(); console_log("INFO","HELLO " + row["GSMNO"] + "\n"); exit(); gives the following output and then just loops disconnecting and reconnecting until I shutdown freeswitch 2008-02-18 23:26:03 [DEBUG] switch_core_state_machine.c:144 switch_core_standard_on_execute() sofia/default/1000@192.168.0.7:5060 Execute javascript(/usr/scripts/test1.js) 2008-02-18 23:26:03 [DEBUG] mod_spidermonkey.c:3150 js_api_use() Loading ODBC 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:145 switch_odbc_handle_connect() Connecting test 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:174 switch_odbc_handle_connect() Connected to [test] 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:95 switch_odbc_handle_disconnect() Disconnected 0 from [test] 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:142 switch_odbc_handle_connect() Re-connecting test 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:145 switch_odbc_handle_connect() Connecting test 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:174 switch_odbc_handle_connect() Connected to [test] 2008-02-18 23:26:03 [CRIT] switch_odbc.c:234 db_is_up() The sql server is not responding for DSN test [] 2008-02-18 23:26:03 [INFO] switch_odbc.c:239 db_is_up() The connection has been re-established ... Any ideas much appreciated Thanks Steve ------------------------------------------------------------------------ _______________________________________________ Freeswitch-users mailing list Freeswitch-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org -------------------------------------------------------------------------- _______________________________________________ Freeswitch-users mailing list Freeswitch-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org _______________________________________________ Freeswitch-users mailing list Freeswitch-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org ------------------------------------------------------------------------------ _______________________________________________ Freeswitch-users mailing list Freeswitch-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
I''ve only tested it with firebird on windows. As you said, your driver name doesnt match any of the names I used to detect if it's firebird. The problem is that most databases supports "SELECT 1" as a query. It will always be successful if the the connection is up. However, firebird did not support "SELECT 1" and therefore i did query the system database instead. If the firebird check fails, it will try to invoke "SELECT 1", and on firebird that query will fail. And the failure is interpreted as the connection is down, and therefore it tries to reconnect. That's probably why you get that error. If you have any other idea on how I can detect if it's a firebird db, please let me know and i'll fix the odbc code. On Feb 19, 2008 1:05 PM, David Revill <davidrevill@datarun.co.uk> wrote:
That's a fair point, but db_is_up is only called in 2 places and the attempted re-connect could be done if the exec'd query fails. That way it would not be dependant on the name of the driver.
In my application, the database was queried at the beginning of the script and the connection closed. It was explicitly re-connected at the end to post data, so the connection timeout was not an issue.
----- Original Message ----- *From:* Jonas Gauffin <jonas.gauffin@gmail.com> *To:* freeswitch-users@lists.freeswitch.org *Sent:* Tuesday, February 19, 2008 10:35 AM *Subject:* Re: [Freeswitch-users] Spidermonkey ODBC
I did that code a couple of months ago. The function was added since connections are closed if they are idle too long, and they were not reconnected again if that happened.
On Feb 19, 2008 11:22 AM, David Revill <davidrevill@datarun.co.uk> wrote:
The problem is in switch_odbc.c function db_is_up. It assumes that the variable is_firebird is true, but the setting of this variable assumes that the Firebird driver name has 'FIREBIRD', 'FB64' or 'FB32' in it.
I commented out the code in db_is_up and just returned a true value, as on closer inspection could not see the point of this function.
David Revill
----- Original Message ----- *From:* David Revill <davidrevill@datarun.co.uk> *To:* freeswitch-users@lists.freeswitch.org *Sent:* Tuesday, February 19, 2008 8:58 AM *Subject:* Re: [Freeswitch-users] Spidermonkey ODBC
I spotted this error a few months ago, and to my shame did not let everyone know. I have since archived the project so cannot point you to the actual code. However, the problem is that it assumes the name of the Firebird Driver (FB64?) to set a boolean, so that it handle the connection test differently.
When looking at the actual code, I actually felt that the connection test was redundant, as all it did was a select from a system table. This meant it was doing two queries for everyone required. (One to see if it could do a query, and then one to do it). I therefore commented the connection test function out.
regards
David Revill
----- Original Message ----- *From:* Steven Brown <steven.brown@justfone.com> *To:* freeswitch-users@lists.freeswitch.org *Sent:* Monday, February 18, 2008 11:34 PM *Subject:* [Freeswitch-users] Spidermonkey ODBC
Hi,
I'm experimenting with spidermonkey for JavaScript call control, the basics seem fine and I'm now trying to connect to an existing Firebird database, the Firebird odbc lib is installed ok as is unixODBC and I can confirm this and access the db no problem with isql, something strange happens though when I connect in spidermonkey, basically the odbc connection is made successfully, but then as soon as I call either exec or query the odbc connection starts to drop and re-connect continuously,
the isql output is below
isql -v test +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> select first 1 * from pool_phones +---------------------+------------+ | GSMNO | ORGNO | +---------------------+------------+ | 0712345678 | 1 | +---------------------+------------+ SQLRowCount returns 1 1 rows fetched SQL> however the following test code calling the same query
use("ODBC"); var db = new ODBC("test","SYSDBA","masterkey"); db.connect(); db.query("select first 1 * from pool_phones"); db.nextRow(); row = db.getData(); console_log("INFO","HELLO " + row["GSMNO"] + "\n"); exit();
gives the following output and then just loops disconnecting and reconnecting until I shutdown freeswitch 2008-02-18 23:26:03 [DEBUG] switch_core_state_machine.c:144 switch_core_standard_on_execute() sofia/default/1000@192.168.0.7:5060Execute javascript(/usr/scripts/test1.js) 2008-02-18 23:26:03 [DEBUG] mod_spidermonkey.c:3150 js_api_use() Loading ODBC 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:145 switch_odbc_handle_connect() Connecting test 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:174 switch_odbc_handle_connect() Connected to [test] 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:95 switch_odbc_handle_disconnect() Disconnected 0 from [test] 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:142 switch_odbc_handle_connect() Re-connecting test 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:145 switch_odbc_handle_connect() Connecting test 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:174 switch_odbc_handle_connect() Connected to [test] 2008-02-18 23:26:03 [CRIT] switch_odbc.c:234 db_is_up() The sql server is not responding for DSN test [] 2008-02-18 23:26:03 [INFO] switch_odbc.c:239 db_is_up() The connection has been re-established ...
Any ideas much appreciated
Thanks
Steve
------------------------------
_______________________________________________ Freeswitch-users mailing list Freeswitch-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
------------------------------
_______________________________________________ Freeswitch-users mailing list Freeswitch-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
_______________________________________________ Freeswitch-users mailing list Freeswitch-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
------------------------------
_______________________________________________ Freeswitch-users mailing list Freeswitch-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
_______________________________________________ Freeswitch-users mailing list Freeswitch-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
One way to detect firebird would be to put the 'Select first 1 * from RDB$relations' into switch_odbc_handle_connect. If it succeeds then it is Firebird. A better query might be 'select * from rdb$database' as the system table rdb$database only ever has 1 record. ----- Original Message ----- From: Jonas Gauffin To: freeswitch-users@lists.freeswitch.org Sent: Tuesday, February 19, 2008 12:18 PM Subject: Re: [Freeswitch-users] Spidermonkey ODBC I''ve only tested it with firebird on windows. As you said, your driver name doesnt match any of the names I used to detect if it's firebird. The problem is that most databases supports "SELECT 1" as a query. It will always be successful if the the connection is up. However, firebird did not support "SELECT 1" and therefore i did query the system database instead. If the firebird check fails, it will try to invoke "SELECT 1", and on firebird that query will fail. And the failure is interpreted as the connection is down, and therefore it tries to reconnect. That's probably why you get that error. If you have any other idea on how I can detect if it's a firebird db, please let me know and i'll fix the odbc code. On Feb 19, 2008 1:05 PM, David Revill <davidrevill@datarun.co.uk> wrote: That's a fair point, but db_is_up is only called in 2 places and the attempted re-connect could be done if the exec'd query fails. That way it would not be dependant on the name of the driver. In my application, the database was queried at the beginning of the script and the connection closed. It was explicitly re-connected at the end to post data, so the connection timeout was not an issue. ----- Original Message ----- From: Jonas Gauffin To: freeswitch-users@lists.freeswitch.org Sent: Tuesday, February 19, 2008 10:35 AM Subject: Re: [Freeswitch-users] Spidermonkey ODBC I did that code a couple of months ago. The function was added since connections are closed if they are idle too long, and they were not reconnected again if that happened. On Feb 19, 2008 11:22 AM, David Revill <davidrevill@datarun.co.uk> wrote: The problem is in switch_odbc.c function db_is_up. It assumes that the variable is_firebird is true, but the setting of this variable assumes that the Firebird driver name has 'FIREBIRD', 'FB64' or 'FB32' in it. I commented out the code in db_is_up and just returned a true value, as on closer inspection could not see the point of this function. David Revill ----- Original Message ----- From: David Revill To: freeswitch-users@lists.freeswitch.org Sent: Tuesday, February 19, 2008 8:58 AM Subject: Re: [Freeswitch-users] Spidermonkey ODBC I spotted this error a few months ago, and to my shame did not let everyone know. I have since archived the project so cannot point you to the actual code. However, the problem is that it assumes the name of the Firebird Driver (FB64?) to set a boolean, so that it handle the connection test differently. When looking at the actual code, I actually felt that the connection test was redundant, as all it did was a select from a system table. This meant it was doing two queries for everyone required. (One to see if it could do a query, and then one to do it). I therefore commented the connection test function out. regards David Revill ----- Original Message ----- From: Steven Brown To: freeswitch-users@lists.freeswitch.org Sent: Monday, February 18, 2008 11:34 PM Subject: [Freeswitch-users] Spidermonkey ODBC Hi, I'm experimenting with spidermonkey for JavaScript call control, the basics seem fine and I'm now trying to connect to an existing Firebird database, the Firebird odbc lib is installed ok as is unixODBC and I can confirm this and access the db no problem with isql, something strange happens though when I connect in spidermonkey, basically the odbc connection is made successfully, but then as soon as I call either exec or query the odbc connection starts to drop and re-connect continuously, the isql output is below isql -v test +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> select first 1 * from pool_phones +---------------------+------------+ | GSMNO | ORGNO | +---------------------+------------+ | 0712345678 | 1 | +---------------------+------------+ SQLRowCount returns 1 1 rows fetched SQL> however the following test code calling the same query use("ODBC"); var db = new ODBC("test","SYSDBA","masterkey"); db.connect(); db.query("select first 1 * from pool_phones"); db.nextRow(); row = db.getData(); console_log("INFO","HELLO " + row["GSMNO"] + "\n"); exit(); gives the following output and then just loops disconnecting and reconnecting until I shutdown freeswitch 2008-02-18 23:26:03 [DEBUG] switch_core_state_machine.c:144 switch_core_standard_on_execute() sofia/default/1000@192.168.0.7:5060 Execute javascript(/usr/scripts/test1.js) 2008-02-18 23:26:03 [DEBUG] mod_spidermonkey.c:3150 js_api_use() Loading ODBC 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:145 switch_odbc_handle_connect() Connecting test 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:174 switch_odbc_handle_connect() Connected to [test] 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:95 switch_odbc_handle_disconnect() Disconnected 0 from [test] 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:142 switch_odbc_handle_connect() Re-connecting test 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:145 switch_odbc_handle_connect() Connecting test 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:174 switch_odbc_handle_connect() Connected to [test] 2008-02-18 23:26:03 [CRIT] switch_odbc.c:234 db_is_up() The sql server is not responding for DSN test [] 2008-02-18 23:26:03 [INFO] switch_odbc.c:239 db_is_up() The connection has been re-established ... Any ideas much appreciated Thanks Steve -------------------------------------------------------------------- _______________________________________________ Freeswitch-users mailing list Freeswitch-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org ---------------------------------------------------------------------- _______________________________________________ Freeswitch-users mailing list Freeswitch-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org _______________________________________________ Freeswitch-users mailing list Freeswitch-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org -------------------------------------------------------------------------- _______________________________________________ Freeswitch-users mailing list Freeswitch-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org _______________________________________________ Freeswitch-users mailing list Freeswitch-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org ------------------------------------------------------------------------------ _______________________________________________ Freeswitch-users mailing list Freeswitch-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
participants (3)
-
David Revill
-
Jonas Gauffin
-
Steven Brown