[SR-Users] usrloc, timer process and cache cleanup
Daniel-Constantin Mierla
miconda at gmail.com
Fri Dec 23 00:28:54 CET 2011
On 12/22/11 8:02 PM, Ovidiu Sas wrote:
>> Right, that has to be done, but there are some cases when db can become
>> inconsistent, due to database unavailability, and then some trick have to be
>> done at db layer, example:
>>
>> - db is unavailable, phone unregisters, contact deleted from memory but not
>> from database
>> - phone register again, usrloc will try insert and will fail - in this case
>> it should be update if insert fails (or replace)
> If the phone registers again, it should be a brand new entry
> (different Call-ID, CSeq and so on).
> The leftover entry on the db will be cleanup on a server restart.
According to sip specs, the key is the contact address, thus operations
are done on (aor, contact). In kamailio you can configure to match using
call id (plus path) as well, but is not the default since it breaks the
specs.
>
>> The other way around could happen when mistakenly deleting/changing records in db, which should not happen, but Murphy says opposite.
> If someone is messing with the db, kamailio shouldn't try to correct
> admin mistakes.
It was just an example, I haven't gone to all corner cases that can
happen from human or (self or different) application errors. There were
couple of similar reports in the past, related to conflicts of
insert/update, update/insert, delete/update a.s.o. cases, so I proposed
to go for a portable solution, not for one which valid to a db driver
only -- configurable or not, is different thing than the specific topic.
> I think that the replace solution should be a last resort.
> If implemented, should be configurable. I would rather see the
> original issue instead of being masked and let it trigger other issues
> later on which would be more difficult to debug.
I think the goal is to have coherent, consistent and persistent records
in location table, so that lookup is always valid and restarts don't
lose records. In no case you get any feedback implicitly, this is either
about logging or malfunctioning. Perhaps is better to get a log message
to investigate and have all keep going, than the second.
Cheers,
Daniel
> --
> Daniel-Constantin Mierla -- http://www.asipto.com
> http://linkedin.com/in/miconda -- http://twitter.com/miconda
More information about the sr-users
mailing list