Github user aledsage commented on a diff in the pull request:

    https://github.com/apache/brooklyn-server/pull/390#discussion_r85981351
  
    --- Diff: 
camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/methods/BrooklynDslCommon.java
 ---
    @@ -525,15 +583,20 @@ public DslExternal(String providerName, String key) {
             }
     
             @Override
    +        public final Maybe<Object> getImmediately() {
    +            ManagementContextInternal managementContext = 
DslExternal.managementContext();
    +            return 
Maybe.<Object>of(managementContext.getExternalConfigProviderRegistry().getConfig(providerName,
 key));
    --- End diff --
    
    @neykov This is an interesting one! The 
`managementContext.getExternalConfigProviderRegistry().getConfig(...)` is 
calling a different getConfig whose javadoc simply says:
    
    ```
        /**
         * Searches the named {@link ExternalConfigSupplier} for the config 
value associated with the specified key.
         * Quietly returns <code>null</code> if no config exists for the 
specified key.
         * Throws {@link IllegalArgumentException} if no {@link 
ExternalConfigSupplier} exists for the passed name.
         */
    ```
    
    The existing implementation delegates to `ExternalConfigSupplier.get(key)`.
    
    There is no guidance on that whether the call could be blocking, or should 
return reasonably promptly.
    
    I'd assume it would call out to things like Vault, and would return the 
value that currently exists or null. Such calls will not be super-fast, but 
should not be blocked waiting for other entities either.
    
    I therefore think this is good enough, to just call getConfig without 
wrapping it in another task for timeout-purposes.
    
    If it's not good enough, then we should really change `DslExternal` back so 
that it doesn't even try to support `getImmediately()`. Or we could try to 
change the interface of `ExternalConfigSupplierRegistry` etc.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

Reply via email to