[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