in kamailio 4.0, what could cause these kind of error messages:
Aug 2 09:31:04 voip /usr/sbin/sip-proxy[1779]: ERROR: usrloc [ucontact.c:842]: db_update_ucontact_ruid(): updating record in database failed - empty ruid Aug 2 09:31:04 voip /usr/sbin/sip-proxy[1779]: ERROR: usrloc [urecord.c:363]: wb_timer(): updating contact in db failed Aug 2 09:32:04 voip /usr/sbin/sip-proxy[1779]: ERROR: usrloc [ucontact.c:842]: db_update_ucontact_ruid(): updating record in database failed - empty ruid Aug 2 09:32:04 voip /usr/sbin/sip-proxy[1779]: ERROR: usrloc [urecord.c:363]: wb_timer(): updating contact in db failed
relevant usrloc params are:
modparam("usrloc", "db_mode", 1) modparam("usrloc", "db_ops_ruid", 1) modparam("usrloc", "db_check_update", 1) modparam("usrloc", "timer_procs", 2)
how is it possible that ruid in memory record is empty?
when db_mode=1, why kamailio does try to update (rather than delete) a record in database by timer?
-- juha
On 8/7/13 8:35 AM, Juha Heinanen wrote:
in kamailio 4.0, what could cause these kind of error messages:
Aug 2 09:31:04 voip /usr/sbin/sip-proxy[1779]: ERROR: usrloc [ucontact.c:842]: db_update_ucontact_ruid(): updating record in database failed - empty ruid Aug 2 09:31:04 voip /usr/sbin/sip-proxy[1779]: ERROR: usrloc [urecord.c:363]: wb_timer(): updating contact in db failed Aug 2 09:32:04 voip /usr/sbin/sip-proxy[1779]: ERROR: usrloc [ucontact.c:842]: db_update_ucontact_ruid(): updating record in database failed - empty ruid Aug 2 09:32:04 voip /usr/sbin/sip-proxy[1779]: ERROR: usrloc [urecord.c:363]: wb_timer(): updating contact in db failed
relevant usrloc params are:
modparam("usrloc", "db_mode", 1) modparam("usrloc", "db_ops_ruid", 1) modparam("usrloc", "db_check_update", 1) modparam("usrloc", "timer_procs", 2)
how is it possible that ruid in memory record is empty?
when db_mode=1, why kamailio does try to update (rather than delete) a record in database by timer?
is this with latest branch 4.0? Do you add contacts via mi/rpc or they are added only by sip registrations?
Cheers, Daniel
Daniel-Constantin Mierla writes:
is this with latest branch 4.0? Do you add contacts via mi/rpc or they are added only by sip registrations?
i got the error with latest branch. contacts are added both with mi commands and registrations.
it turned out that there was one contact added by registration from linksys phone that had empty ruid field in its db record. that should have been an impossible thing to happen, but it did.
the empty ruid message could have resulted from that record. unfortunately the error message does not include username/domain of the empty ruid contact and i thus cannot tell for sure.
i still don't understand why timer based updates are done when db_mode is 1.
-- juha
On 8/12/13 1:21 PM, Juha Heinanen wrote:
Daniel-Constantin Mierla writes:
is this with latest branch 4.0? Do you add contacts via mi/rpc or they are added only by sip registrations?
i got the error with latest branch. contacts are added both with mi commands and registrations.
it turned out that there was one contact added by registration from linksys phone that had empty ruid field in its db record. that should have been an impossible thing to happen, but it did.
the empty ruid message could have resulted from that record. unfortunately the error message does not include username/domain of the empty ruid contact and i thus cannot tell for sure.
For the moment I added some safety checks for empty ruid in order to catch it quicker and the log messages print the aor for such cases. Otherwise I couldn't spot the reason for empty ruid. Maybe next time we'll have more details based on these updates.
i still don't understand why timer based updates are done when db_mode is 1.
I looked in the code and it seems that the timer is still used even for db_mode=1 to cover the cases when real time db ops fail (so the are retried on timer -- they would be fine first time, nothing should happen on timer).
Cheers, Daniel
Daniel-Constantin Mierla writes:
For the moment I added some safety checks for empty ruid in order to catch it quicker and the log messages print the aor for such cases. Otherwise I couldn't spot the reason for empty ruid. Maybe next time we'll have more details based on these updates.
ok, i'll keep on watching if i again get an empty ruid.
I looked in the code and it seems that the timer is still used even for db_mode=1 to cover the cases when real time db ops fail (so the are retried on timer -- they would be fine first time, nothing should happen on timer).
thanks for the explanation,
-- juha