The default ordinal for Config Sources is wrong and when override via set-config-ordinal, some of them are not effected/FISH-5704
Description
Refer to the question posted at Payara Forum Google Group: https://groups.google.com/g/payara-forum/c/kJgNzZocYIE
Regarding to the Payara Technical Documentation: Microprofile: Config API which describes about the default ordinal and how to override by using the set-config-ordinal. I've tried to ensure it by writing a small code and executing against the Payara Micro version 5.2021.4 and found that there are two issues as the following: -
- The default
ordinalis wrong.
configName=Payara, configOrdinal=1000
configName=SystemProperty, configOrdinal=400
configName=Environment, configOrdinal=300
configName=JDBC, configOrdinal=190
configName=Cluster, configOrdinal=160
configName=Module, configOrdinal=150
configName=Application, configOrdinal=140
configName=Server, configOrdinal=130
configName=ServerConfig, configOrdinal=120
configName=JNDI, configOrdinal=115
configName=Domain, configOrdinal=110
configName=Password Alias, configOrdinal=105
configName=Properties, configOrdinal=100
configName=aws, configOrdinal=100 # <---- Expected to be 180
configName=azure, configOrdinal=100 # <---- Expected to be 180
configName=dynamodb, configOrdinal=100 # <---- Expected to be 180
configName=gcp, configOrdinal=100 # <---- Expected to be 180
configName=hashicorp, configOrdinal=100 # <---- Expected to be 180
configName=ldap, configOrdinal=100 # <---- Expected to be 180
configName=Directory, configOrdinal=90
- When try to override, some of them do not respect the newly setting.
# Preboot
set-config-ordinal --ordinal=999 --source=domain
set-config-ordinal --ordinal=998 --source=config
set-config-ordinal --ordinal=997 --source=server
set-config-ordinal --ordinal=996 --source=application
set-config-ordinal --ordinal=995 --source=module
set-config-ordinal --ordinal=994 --source=cluster
set-config-ordinal --ordinal=993 --source=jndi # <---- here
set-config-ordinal --ordinal=992 --source=secrets
set-config-ordinal --ordinal=991 --source=password
set-config-ordinal --ordinal=990 --source=jdbc
set-config-ordinal --ordinal=989 --source=cloud # <---- here
set-config-ordinal --ordinal=987 --source=ldap # <---- here
# The output
configName=Payara, configOrdinal=1000
configName=Domain, configOrdinal=999
configName=ServerConfig, configOrdinal=998
configName=Server, configOrdinal=997
configName=Application, configOrdinal=996
configName=Module, configOrdinal=995
configName=Cluster, configOrdinal=994
configName=Directory, configOrdinal=992
configName=Password Alias, configOrdinal=991
configName=JDBC, configOrdinal=990
configName=SystemProperty, configOrdinal=400
configName=Environment, configOrdinal=300
configName=JNDI, configOrdinal=115 # <----- expected 993
configName=Properties, configOrdinal=100
configName=aws, configOrdinal=100 # <----- expected 989
configName=azure, configOrdinal=100 # <----- expected 989
configName=dynamodb, configOrdinal=100 # <----- expected 989
configName=gcp, configOrdinal=100 # <----- expected 989
configName=hashicorp, configOrdinal=100 # <----- expected 989
configName=ldap, configOrdinal=100 # <----- expected 987
Expected Outcome
- The default
ordinalshould be as mentioned at the document. - When override via
preboot scriptby using theset-config-ordinal, theordinalshould be respected the newly setting values.
Current Outcome
-
The default
ordinalfor Cloud (aws,azure,dynamodb,gcpandhashicorp) is wrong as100. -
When override via
preboot scriptviaset-config-ordinal, the following are not effected.- JNDI
- All Cloud (
aws,azure,dynamodb,gcpandhashicorp) - LDAP
Steps to reproduce
public void getAllConfigSources() {
StringBuilder bldr = null;
try {
bldr = new StringBuilder();
for (final ConfigSource cs : ConfigProvider.getConfig().
getConfigSources()) {
bldr.append("configName=").
append(cs.getName()).
append(", ").
append("configOrdinal=").
append(cs.getOrdinal()).
append("\r\n");
}
System.out.println(bldr.toString());
} finally {
bldr = null;
}
}
The reproducer is at https://github.com/charleech/payara-evaluation/tree/master/payara-evaluation-config (The README will describe how to build and test.)
Environment
- Distribution: Payara Micro
5.2021.4#badassmicrofish (build 740) - JDK Version:
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.292-b10, mixed mode)
- Operating System:
- Windows
10 Home 21H1 - CentOS Linux release
7.7.1908 (Core)
- Windows
Hi @charleech,
I am able to reproduce this issue. I have raised an internal issue with JIRA FISH-5701. Thanks. It may take a while to fix the issue. You are free to submit a PR to fix this issue if you feel confident to do so.