< Previous by Date Date Index Next by Date >
< Previous in Thread Thread Index  

Re: [reSIProcate] Cleaning up in memory registration database


Expired contacts are removed via the RegistrationPersistenceManager::removeContact interface.  If you are using the ServerRegistration classes, then DUM only cleans up expired registered contacts when a new registration is formed for a particular aor  (see code in ServerRegistration::accept).  If you are using repro then the registrations are also cleaned out of the in memory database when:

1.       Someone routes a message to the AOR, and an expired contact is detected:  LocationServer::process

2.       Someone views the registrations web page, and an expired contact is detected:  WebAdmin::buildRegistrationsSubPage

 

To get cleanup to happen in a more timely fashion, it would be possible to build logic that would:

1.       Fire a timer when a contact is supposed to expire, and clean it up immediately.

2.       Fire a single timer periodically that would remove all expired contacts since the last run.

 

Scott

 

From: resiprocate-devel-bounces@xxxxxxxxxxxxxxx [mailto:resiprocate-devel-bounces@xxxxxxxxxxxxxxx] On Behalf Of Archana
Sent: November 4, 2008 1:06 AM
To: resiprocate-devel@xxxxxxxxxxxxxxx
Subject: [reSIProcate] Cleaning up in memory registration database

 

Hi All,
I am using resiprocate 1.3 release.
The entry is made in the Inmemory RegistrationDatabase while sending 200 OK to REGISTER.
And this entry is removed while sending 200 OK to DEREGISTER.
But for the entries for which we don't get DEREGISTER, entry will still be there is the map.

I see findNotExpired() is used to find if the entry is expired for particular AOR. But don't see any function which will go thr' all the entries and removes the expired ones.
Does the DUM thread takes resposibility of cleaning up all expired entries from the map?
If no can anybody suggest me how to achieve this (consider map size is very huge around 50K)?

 

Thanks,

Archana