Skip to content

feat(api): expose runtime parameters over admin rpc - #83

Open
317787106 wants to merge 6 commits into
feature/admin_rpcfrom
feature/admin_rpc_runtime_parameters
Open

feat(api): expose runtime parameters over admin rpc#83
317787106 wants to merge 6 commits into
feature/admin_rpcfrom
feature/admin_rpc_runtime_parameters

Conversation

@317787106

@317787106 317787106 commented Aug 7, 2026

Copy link
Copy Markdown
Owner

What does this PR do?

Adds the admin_getRuntimeParameters method on top of the Admin RPC and IPC transport introduced by #82.

  • Exports an explicit top-level @Exportable allowlist from the active runtime parameter implementation.
  • Excludes committee and governance defaults whose effective values are maintained by the database.
  • Returns top-level keys in field-name lexicographical order.
  • Uses explicit snapshots for Genesis, Storage, and P2P configuration instead of recursively exposing implementation objects.
  • Exports genesis account names as UTF-8 strings and account/witness addresses as configuration-compatible Base58Check strings.
  • Includes database option overrides, cache strategies, and configured Merkle roots in the Storage snapshot.
  • Excludes runtime-discovered P2P seed, active, and trust peers as well as the node ID.
  • Omits eventPluginConfig.dbConfig and recursively redacts secret-like fields; DNS credentials are explicitly redacted.
  • Builds and publishes dynamic node lists as complete snapshots so callers do not observe transient empty or partially updated values.

Why is this separate?

Runtime configuration export has a wider review surface than the Admin RPC transport itself: it defines a public allowlist, traverses nested configuration objects, filters secrets, and requires consistency while dynamic configuration is being reloaded. Keeping it in a stacked PR makes the transport changes in #82 easier to review independently.

Dependency

This PR is based on feature/admin_rpc and should be reviewed and merged after #82. Once #82 is merged, the base can be changed to develop.

Testing

  • CommonParameterExporterTest
  • DynamicArgsTest
  • RelayServiceTest
  • EffectiveCheckServiceTest
  • IpcClientTest
  • IpcServiceTest
  • checkstyleMain and checkstyleTest
  • Semgrep Java, security-audit, and OWASP Top Ten rulesets
  • Targeted FindSecBugs scan of changed production classes

All listed tests and checks pass locally on JDK 17 / aarch64. The known flaky IpcServiceTest.testStopClosesActiveClientSocket passed on Gradle retry.

@317787106
317787106 marked this pull request as ready for review August 7, 2026 09:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant