Patches item #2020657, was opened at 2008-07-17 16:26
Message generated for change (Tracker Item Submitted) made by Item Submitter
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=743022&aid=2020657&group_id=139143

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: modules
Group: None
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: Stanislaw Pitucha (viraptor)
Assigned to: Nobody/Anonymous (nobody)
Summary: atomic location update

Initial Comment:
If someone runs more than 1 openser host with shared `location` table in 
DB_ONLY mode, there's a possibility that one host will delete expired 
record/contact while another host retrieves it and tries to update (resulting 
in 0 rows updated). This patch adds 'db_atomic' option to usrloc module, which 
switches to using update_ucontact_atomic (and because of that, insert/update 
function instead of standard insert) in ul_mi and registrar/save.
It works only when db_mode==3 (DB_ONLY) and db_atomic==1. It needs a database 
schema change - making username+domain+contact (+callid if matching mode 
includes callid) a unique key, instead of standard index.

In mysql it results in running:
INSERT INTO location ... ON DUPLICATE KEY UPDATE ...
instead of normal SELECT FROM + INSERT/UPDATE

Patch is for an older version of 1.3, but seems to be trivially portable to 
trunk. Unfortunately I don't have proper environment to test that.

One issue I know of is that ul callbacks are not supported properly. Before db 
update it's not known if event was UL_CONTACT_INSERT, or UL_CONTACT_UPDATE, so 
I left it as ..._INSERT

As far as I can tell, patch worked reliably for couple of days without issues.

Stanisaw Pitucha

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=743022&aid=2020657&group_id=139143

_______________________________________________
Devel mailing list
Devel@lists.openser.org
http://lists.openser.org/cgi-bin/mailman/listinfo/devel

Reply via email to