Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

ConfigKeys left unused while their read site still does raw _configDao.getConfiguration() map lookups

Open
#13,898 2 comments 0 reactions 1 assignee View on GitHub

@DaanHoogland is already working on this.

Since Aug 18, 2026.

Assessment

This issue has not been assessed yet.

Description

type:technical-debt

Found while writing ConfigKey-wiring unit tests for PR #13884 (issue #10752, phase out enum Config).

ManagementServerImpl.configure() (server/src/main/java/com/cloud/server/ManagementServerImpl.java:1141-1148) still reads two settings through the raw configuration map instead of their migrated ConfigKeys:

_configs = _configDao.getConfiguration();

final String value = _configs.get("event.purge.interval");
final int cleanup = NumbersUtil.parseInt(value, 60 * 60 * 24); // 1 day.

_purgeDelay = NumbersUtil.parseInt(_configs.get("event.purge.delay"), 0);

ManagementServer.EventPurgeInterval and ManagementServer.EventPurgeDelay both already exist on the interface — three lines below, AlertPurgeInterval/AlertPurgeDelay (the exact same purge-scheduling pattern) were correctly migrated to .value() in the same method, so these two are a clear miss rather than a deliberate choice.

This is a different variant from the pattern in #13893 (redundant/diverging hardcoded defaults passed to parseInt/parseLong around an already-migrated .value() call): here the read site was never migrated to .value() (or even to _configDao.getValue(key.key())) at all — it still goes through a raw Map<String,String> _configs = _configDao.getConfiguration() lookup by literal key string, bypassing the ConfigKey entirely. The earlier .value()-replacement sweep only searched for the _configDao.getValue(key.key()) call shape, so it structurally couldn't catch this one.

It also happens to carry the same kind of default-mismatch risk as #13893: EventPurgeDelay's registered default is "15", but the hardcoded fallback here is 0, and 0 is the sentinel that disables purging (if (_purgeDelay != 0) { schedule... }). So migrating this site isn't a pure no-op — it needs the same default-reconciliation judgment call as the #13893 cases before switching it over.

Only these two sites were found in ManagementServerImpl; this was spotted incidentally while scoping unit tests for the .value() migration, not through an exhaustive sweep — worth a repo-wide grep for other _configDao.getConfiguration()-backed raw map reads (_configs.get("literal.key")) that have a matching ConfigKey sitting unused nearby.

Dominant language
Java
Stars
3.1k
Forks
1.4k
Avg merge
6d 20h
Merged PRs (30d)
27

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from apache/cloudstack

All issues in apache/cloudstack

Similar issues

More Java issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.