GenerationSynchronizer now stores cached state for up to 1 year.

Review Request #14797 — Created Feb. 3, 2026 and updated — Latest diff uploaded

Information

Djblets
release-5.x

Reviewers

When GenerationSynchronizer put new state in cache, it used the
default expiration time for the cache backend. This is only 5 minutes by
default, unless customized in the cache settings, and then it may be up
to the actual cache server.

For a common setup, this means that the synchronizer may be invalidated
and generation bumped as often as every 5 minutes, leading to spurious
state reloads. Not always a true problem, but it can increase the
likelihood or frequency of side effects of some operations (such as
during extension reloading) when under heavy traffic.

We now set an explicit expiration time of 1 year. This can be controlled
when constructing the synchronizer, though it's unlikely the default
would need to be changed outside of load testing.

Unit tests pass.

Verified that the synchronizer was no longer expiring after 5 minutes in
local memory tests.

Also tested manually with shorter intervals and monitored events.

Commits

Files