Hi Doug,

Douglas Garstang wrote:

I have a setup where we have three OpenSER 1.0.1 systems all referring to a 
common MySQL database. There are some very weird things happening...

I was regularly seeing errors from OpenSER that stated
Mar 23 10:05:27 artemis openser[11950]: submit_query: Duplicate entry 
'80014157--sip:[EMAIL PROTECTED]' for key 'PRIMARY'
Mar 23 10:05:27 artemis openser[11950]: db_insert: Error while submitting query
Mar 23 10:05:27 artemis openser[11950]: db_insert_ucontact(): Error while 
inserting contact
Mar 23 10:05:27 artemis openser[11950]: wb_timer: Error while inserting contact 
into database

When I ran an ngrep on port 3306 on MySQL I could clearly see the OpenSER 
select query where it looked for user 80014157. Here's an example of another 
one:

T 172.31.141.234:35385 -> 172.31.142.200:3306 [AP]
 ?....select password,rpid from subscriber where username='80014074'
# T 172.31.142.200:3306 -> 172.31.141.234:35385 [AP]
 [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> .
 rpid.rpid...........................vDEPuURM4eXEw..........
##
T 172.31.141.234:35385 -> 172.31.142.200:3306 [AP]
 H....insert into location 
(username,contact,expires,q,callid,cseq,flags,user_agent,received,socket,domain 
) values ('80014074',
 'sip:[EMAIL PROTECTED]','2006-03-23 17:39:11',-1.00     ,'[EMAIL 
PROTECTED]',20,0,'PolycomSoundPo
 intIP-SPIP_601-UA/1.6.3.0067',NULL,xxx.187.142.234_5060','ipt.oneeighty.com')
# T 172.31.142.200:3306 -> 172.31.141.234:35385 [AP]
 c....&.#23000Duplicate entry '80014074-ipt.oneeighty.com-sip:[EMAIL 
PROTECTED]' for key 'PRIMARY'

You can quite clearly see that MySQL does NOT return a row, and OpenSER happily 
goes and does an insert then. I can't understand why MySQL then complains about 
a duplicate key error. Why would it do this when the row wasn't found, and 
presumably the key doesn't exist?

your trace shows two queries:
1) a DB authentication
2) a usrloc updated.

based on the information from cache, openser knows if it should do an update or insert. the problem is if you use 2 opensers on same DB, each server, based on private cache, will know they have to do insert (the contact is not in cache and DB). and you will end with 2 duplicated inserts.

regards,
bogdan


_______________________________________________
Users mailing list
[email protected]
http://openser.org/cgi-bin/mailman/listinfo/users

Reply via email to