Jan,
No, it does not show the entry because it is expired.
What is the value
of flags field of that line ?
flags is set to 0 (like the other entries).
Situation like this can happen when there are some
problems connecting
the database, I would suggest you to wipe the line out. Let me know if
it happens again.
... and ...
--On 04 April 2004 20:47 +0200 Klaus Darilion
<klaus.mailinglists(a)pernau.at> wrote:
ser does only delete expired contact if they are in
the ram, furthermore
the new entry can't be inserted into the location table, as
(username,contact,domain) are a key, so the db insert fails.
I see 2 reasons:
- ser doesn't the location database at startup
- ser does delete the expired contact from RAM, but not from the db
Indeed - it seems ser has got into a state where the state has been
wiped in RAM, but not in the database.
I realise I can fix the symptom just by deleting the appropriate
line. However, this won't fix the underlying problem, which I
think is
a) ser shouldn't get into this state (probably inevitable if ser
crashes, and I think it could have got into this state from
me deliberately testing failover by being nasty to the boxes)
b) ser does not recover gracefully from this state (requires manual
intervention). I /think/ what is happening here (and I haven't
done a full code inspection) is ser tries to write into the
database, it fails because a line with the same (username,
domain, contact) 3-tuple is already there, but then it can
as that entry is already expired, it never seems to get purged,
and ser gets stuck.
I wonder if the solution is that if a database write fails, see if
an entry with the same 3-tuple is already there, if it is, check
(manually on expiry date) to see if it has expired, and if so,
delete it, and reinsert the original entry.
I'm sort of perplexed as to why this particular long-expired entry
hasn't just got deleted through expiry.
Alex