#5 Improve cache logic to perform out-of-band updates
Closed: Fixed None Opened 15 years ago by sgallagh.

Currently, we only update the sysdb cache when the cache timeout has expired. This means that the client must wait until a cache refresh of the entry completes.

In order to reduce the frequency that we block the clients for refreshes, we will implement an out-of-band update. If the client requests data that is available in the cache, we will return it immediately; if the time between now and the timeout period is less than half of the timeout interval, we will trigger a cache update behind the scenes, so that the next time a request is made, the cache will be more recent.

In a busy system (requests are received at least twice as often as the cache times out), this will significantly reduce cache update delay.

In a slow system (requests are received less often than the cache timeout), there will be no difference between this approach and the current implementation.

The worst-case scenario (that of the busy system) is that we will make twice as many cache requests to the back-end provider.


I'd like to see this as an optional feature and probably disabled by default.
If someone sees minor delays as a problem they may decide to turn this option up, but by default this would only generate more load on the system and more traffic on the network unnecessarily. IMO.

Deferred for future optimization.

fixedin: =>
milestone: Iteration 2 => Deferred

Fields changed

milestone: Deferred => Iteration 6

Fields changed

status: new => assigned

Marking this bug as a blocker to 0.5.0 release.

priority: major => blocker

We've determined that to do this job correctly requires some refactoring of the nsssrv_cmd.c functions. This is a bigger job than is feasible in the 0.5.0 schedule, so I'm dropping the priority. It will be fixed immediately after 0.5.0.

component: SSSD => Data Provider
priority: blocker => major

Fields changed

milestone: SSSD 0.5.0 => SSSD 0.6.0

Fixed in ab66a19

HOWTO and manpages have been updated to include references to the new EntryCacheNoWaitRefreshTimeout.

When testing this feature, it is important to do so with enumerate = false, as the enumeration processing will hide this enhancement.

doc: => 1
docupdated: => 1
fixedin: => 0.6.0
resolution: => fixed
status: assigned => closed
tests: => 1
testsupdated: => 0

Fields changed

rhbz: => 0

Metadata Update from @sgallagh:
- Issue assigned to sgallagh
- Issue set to the milestone: SSSD 0.6.0

7 years ago

SSSD is moving from Pagure to Github. This means that new issues and pull requests
will be accepted only in SSSD's github repository.

This issue has been cloned to Github and is available here:
- https://github.com/SSSD/sssd/issues/1047

If you want to receive further updates on the issue, please navigate to the github issue
and click on subscribe button.

Thank you for understanding. We apologize for all inconvenience.

Login to comment on this ticket.

Metadata