[Kamailio-Users] Error in database module

Daniel-Constantin Mierla miconda at gmail.com
Wed Jul 30 11:39:21 CEST 2008


Hello Sebastian,

On 07/30/08 10:52, Schumann Sebastian wrote:
> Dear all
>  
> I use OpenSER with the perl extension to publish presence states for 
> non-SIMPLE/PUBLISH capable devices using an outbound proxy. My idea is 
> to send all SIP messages to an outbound-proxy, that forwards them to 
> the respective registrar/SIP proxy. The outbound proxy uses SIP 
> messages (INVITE, BYE, CANCEL...) as triggers to call a perl script 
> that publishes the presence state to a presence agent using PUA_MI.
>  
> Currently, registrar, presence agent and the publishing functionality 
> are hosted on one machine. But I think that should not have any impact 
> on the whole idea...
>  
> All what I wanted to do works fine so far, except that after some 
> time, I get MySQL errors. The Perl script does not use the database, 
> only from OpenSER script, actions are called. I posted below some of 
> the error messages I receive and after, the part of my config 
> performing database queries. Does anyone see a obvious mistake in 
> there? I tried OpenSER lastest branch and current trunk, both produce 
> the error after some time.
>  
> Thanks for your help!
>  
> Sebastian
>  
> Jul 30 11:07:30 [4329] ERROR:mysql:db_mysql_submit_query: driver 
> error: Commands out of sync; you can't run this command now
> Jul 30 11:07:30 [4329] ERROR:mysql:db_mysql_query: error while 
> submitting query
> Jul 30 11:07:30 [4329] ERROR:pua:db_update: while querying db table pua
> Jul 30 11:07:30 [4329] ERROR:mysql:db_mysql_submit_query: driver 
> error: Commands out of sync; you can't run this command now
> Jul 30 11:07:30 [4329] ERROR:mysql:db_mysql_query: error while 
> submitting query
> Jul 30 11:07:30 [4329] ERROR:xcap_client:query_xcap_update: in sql query
> Jul 30 11:07:30 [4329] ERROR:mysql:db_mysql_submit_query: driver 
> error: Commands out of sync; you can't run this command now
> Jul 30 11:07:30 [4329] ERROR:mysql:db_mysql_delete: error while 
> submitting query
> Jul 30 11:07:30 [4329] ERROR:presence:update_db_subs: deleting expired 
> information from database
> Jul 30 11:07:30 [4329] ERROR:mysql:db_mysql_submit_query: driver 
> error: Commands out of sync; you can't run this command now
> Jul 30 11:07:30 [4329] ERROR:mysql:db_mysql_query: error while 
> submitting query
> Jul 30 11:07:30 [4329] ERROR:presence:msg_watchers_clean: querying 
> database for expired messages
> Jul 30 11:07:30 [4329] ERROR:mysql:db_mysql_submit_query: driver 
> error: Commands out of sync; you can't run this command now
> Jul 30 11:07:30 [4329] ERROR:mysql:db_mysql_query: error while 
> submitting query
> Jul 30 11:07:30 [4329] ERROR:presence:msg_presentity_clean: querying 
> database for expired messages
> Jul 30 11:09:10 [4329] ERROR:mysql:db_mysql_submit_query: driver 
> error: Commands out of sync; you can't run this command now
> Jul 30 11:09:10 [4329] ERROR:mysql:db_mysql_query: error while 
> submitting query
> Jul 30 11:09:10 [4329] ERROR:pua:db_update: while querying db table pua
> Jul 30 11:09:10 [4329] ERROR:mysql:db_mysql_submit_query: driver 
> error: Commands out of sync; you can't run this command now
> Jul 30 11:09:10 [4329] ERROR:mysql:db_mysql_query: error while 
> submitting query
> Jul 30 11:09:10 [4329] ERROR:xcap_client:query_xcap_update: in sql query
> Jul 30 11:09:10 [4329] ERROR:mysql:db_mysql_submit_query: driver 
> error: Commands out of sync; you can't run this command now
> Jul 30 11:09:10 [4329] ERROR:mysql:db_mysql_delete: error while 
> submitting query
> Jul 30 11:09:10 [4329] ERROR:presence:update_db_subs: deleting expired 
> information from database
> Jul 30 11:09:10 [4329] ERROR:mysql:db_mysql_submit_query: driver 
> error: Commands out of sync; you can't run this command now
> Jul 30 11:09:10 [4329] ERROR:mysql:db_mysql_query: error while 
> submitting query
> Jul 30 11:09:10 [4329] ERROR:presence:msg_watchers_clean: querying 
> database for expired messages
> Jul 30 11:09:10 [4329] ERROR:mysql:db_mysql_submit_query: driver 
> error: Commands out of sync; you can't run this command now
> Jul 30 11:09:10 [4329] ERROR:mysql:db_mysql_query: error while 
> submitting query
> Jul 30 11:09:10 [4329] ERROR:presence:msg_presentity_clean: querying 
> database for expired messages
>  
> 203         if (uri==myself) {
> 204                 if (method=="REGISTER") {
> 205                         # Uncomment this if you want to use digest 
> authentication
> 206                         if (!www_authorize("IP", "subscriber")) {
> 207                                 www_challenge("IP", "0");
> 208                                 exit;
> 209                         };
> 210
> 211                         # query if dialog exists for registering URI
> 212                         avp_delete("*");
> 213                         if (avp_db_query("SELECT from_uri,
> 214                                                  to_uri
> 215                                           FROM dialog
> 216                                           WHERE from_uri='$tu' or 
> to_uri='$tu' or from_uri='$tu:5060' or to_uri='$tu:5060'")) {
> 217                                 #xlog("L_INFO", ">>> Dialog 
> active: caller=$avp(i:1) callee=$avp(i:2)\n");
> 218                         } else {
> 219                                 #xlog("L_INFO", ">>> No Dialog 
> active: avp_db_query() returned no records\n");
> 220                         };
> 221                         xlog("L_INFO", ">>>>>>>>> REGISTER 
> received ($tu)\n");
> 222                         if(!is_avp_set("$avp(i:1)")) { # no call 
> active for registering to_uri user
> 223                                 xlog("L_INFO", ">>>>>>>>> 
> PUBLISHED\n");
> 224                                 perl_exec("publish");
> 225                         } else {
> 226                                 xlog("L_INFO", ">>>>>>>>> NOT 
> PUBLISHED, call active\n");
> 227                         }
> 228                         save("location");
> 229                         exit;
> 230                 }
> 231
> 232                 if(is_method("SUBSCRIBE|PUBLISH")) {
> 233                         if(is_method("PUBLISH")) {
> 234                                 if($si == "IP") {
> 235                                         if (!t_newtran()) {
> 236                                                 sl_reply_error();
> 237                                                 exit;
> 238                                         };
> 239                                         handle_publish();
> 240                                         t_release();
> 241                                 } else {
> 242                                         sl_send_reply("488","Not 
> Acceptable Here");
> 243                                 }
> 244                         } else if(is_method("SUBSCRIBE")) {
> 245                                 if (!proxy_authorize("", 
> "subscriber")) {
> 246                                         proxy_challenge("", "1");
> 247                                         exit;
> 248                                 };
> 249                                 handle_subscribe();
> 250                                 t_release();
> 251                         };
> 252                         exit;
> 253                 };
> 252                         exit;
> 253                 };
> 254
> 255                 lookup("aliases");
> 256
> 257                 # native SIP destinations are handled using our 
> USRLOC DB
> 258                 if (!lookup("location")) {
> 259                         sl_send_reply("404", "Not Found");
> 260                         exit;
> 261                 } else {
> 262                         append_hf("P-hint: usrloc applied\r\n");
> 263                         if(method=="INVITE") {
> 264                                 # Store Dialog in db
> 265                                 setflag(5);
> 266                                 # Session timer
> 267                                 setflag(6);
> 268                                 if (sstCheckMin("1")) {
> 269                                         xlog("L_ERR", "422 Session 
> Timer Too Small reply sent.\n");
> 270                                         exit;
> 271                                 }
> 272                                 xlog("L_INFO", ">>>>>>>>> INVITE 
> received ($fu busy)\n");
> 273                                 perl_exec("publish");
> 274                         }
> 275                 };
> 276         };

there seems to be a module which does not free the DB result, maybe in 
some error case. Could you spot other error message before those 
messages in the openser logs, maybe you can get a hint? Not sure I 
remember correctly, but I think I sent a patch with some extra log 
messages to identify such situation. The affected process seems to be 
the timer.

Cheers,
Daniel

-- 
Daniel-Constantin Mierla
http://www.asipto.com





More information about the sr-users mailing list