[Kamailio-Users] Error in database module

Schumann Sebastian Sebastian.Schumann at t-com.sk
Wed Jul 30 14:49:14 CEST 2008


Hi Daniel

Thanks for your mail. Apparently, I only checked the users list but on
the devel list there was already discussion about this. It seems mine
has also to do with the presence module, as the error occurs first time
after a publish has been received.

Strange is that after some errors for PUBLISH, e.g. REGISTER  is
performed normally and also the location table seems to be updated.

I attached parts of the detailed log file, hope you can get some more
information from it. I didn't find your patch in the mailing list
archives yet :-(

Thanks
Sebastian

-----Original Message-----
From: Daniel-Constantin Mierla [mailto:miconda at gmail.com] 
Sent: Wednesday, 30. July 2008 11:39
To: Schumann Sebastian
Cc: users at lists.openser.org
Subject: Re: [Kamailio-Users] Error in database module

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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: log.rar
Type: application/octet-stream
Size: 8753 bytes
Desc: log.rar
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20080730/2df0d265/attachment.obj>


More information about the sr-users mailing list