Payara icon indicating copy to clipboard operation
Payara copied to clipboard

The default ordinal for Config Sources is wrong and when override via set-config-ordinal, some of them are not effected/FISH-5704

Open charleech opened this issue 4 years ago • 1 comments

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 ordinal is 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 ordinal should be as mentioned at the document.
  • When override via preboot script by using the set-config-ordinal, the ordinal should be respected the newly setting values.

Current Outcome

  • The default ordinal for Cloud (aws, azure, dynamodb, gcp and hashicorp) is wrong as 100.

  • When override via preboot script via set-config-ordinal, the following are not effected.

    • JNDI
    • All Cloud (aws, azure, dynamodb, gcp and hashicorp)
    • 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)

charleech avatar Aug 19 '21 12:08 charleech

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.

shub8968 avatar Aug 31 '21 15:08 shub8968