In order to load settings from etcd within SettingsBuilder, we'll need a new source implementation.
Requirements are roughly:
- Limit requests to etcd by.
- Implementing a naive cache key based on constructor arguments instead of relying on anything from the etcd response.
- Implementing a cache TTL of 10 seconds for this source only.
- Rely on the existing cache mitigation in CachedSource that uses probabilistic early expiration. (We will want to verify the effectiveness of this approach and possibly experiment with different values for EtcdSource::getExpiryWeight().
- Reuses or achieves parity with loading logic in EtcdConfig.