Sandor Molnar created KNOX-3513:
-----------------------------------

             Summary: Retry unresolved credential-store aliases for LDAP proxy 
backend passwords
                 Key: KNOX-3513
                 URL: https://issues.apache.org/jira/browse/KNOX-3513
             Project: Apache Knox
          Issue Type: Improvement
          Components: Server
    Affects Versions: 3.1.0
            Reporter: Sandor Molnar
            Assignee: Sandor Molnar
             Fix For: 3.1.0


Since KNOX-3497, {{KnoxLDAPServerManager#resolveBackendPasswordAliases}} 
resolves {{S\{ALIAS=…} / ${ALIAS=…}}} in {{{}bindPassword{}}}, 
{{systemPassword}} and {{trustStorePassword}} exactly once, when the 
interceptors are built. If the alias isn't in the gateway credential store yet, 
Knox logs "{{{}No value found in the gateway credential store for alias …",{}}} 
keeps the raw reference, and backend binds fail with {{INVALID_CREDENTIALS}} 
until something triggers a reload.

This happens in Kubernetes when the Secret and the CR are created together and 
Knox is already running. Knox reloads the CR 1–10s after it's synced, but the 
operator persists the alias about 4–5s after the Secret is created. So Knox 
often looks up the alias before it exists, and nothing makes it look again.

*Proposal*

When an alias lookup returns null, retry it with a cap instead of giving up 
after the first attempt:
 * Configurable in {{gateway-site.xml.}} Suggested defaults: 5 attempts, 2s 
delay.
 * Each retry must read the current credential store, not a cached negative 
result.
 * Log each retry at {{{}WARN{}}}. Log {{ERROR}} only after the last attempt 
fails, then fall back to today's behaviour.
 * Retries *must not block* gateway startup or reloads of other interceptors.
 * Literal (non-alias) values are unchanged.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to