tree cc78f590ac65e6b777711da8dc96d4c41b95d048
parent aab69373db6152ea98e7627f816fa3d777d5fe46
author Luca Milanesio <luca.milanesio@gmail.com> 1712510399 -0700
committer Luca Milanesio <luca.milanesio@gmail.com> 1712553988 +0000

Load replication configuration only once

Reuse the same instance across requests in ReplicationConfigImpl.
This avoids reloading the configuration from disk continuously.

Previously, the config was retrieved on-demand with the Provider<>.get()
paradigm. However, the Provider<>.get() would trigger the creation of a
new instance of the Config every time it is invoked, causing the full
scan and parsing of the replication configs.

On GerritHub.io, the processing of all replication configs (12k files)
would take around 5 minutes, causing a catastrophic overload of the CPU
and preventing the plugin that use ReplicationConfigImpl (replication
and pull-replication) to even start.

With regards to the configVersion, the description of the interface has
been amended to reflect the expected behaviour to report the
*latest actual* version on the storage, regardless of the in-memory copy.

The AutoReloadConfigDectorator relies on the configVersion to reflect
the storage version for triggering a configuration reload by forcibly
re-creating the config resources and therefore triggering the reload and
parsing of the replication configs from the underlying storage.

AutoReloadConfigDecorator should not reload the configuration again
in his constructor because the AutoReloadRunnable has already loaded
the initial state and therefore can reuse that one as valid starting
point.

Change-Id: I6f9c3a35d1ecbfa87f3daeeb464face0c6b6400e
