This is an automated email from the ASF dual-hosted git repository.

sanjeevrk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new 6e6e4e2  Secrets provider should be initialized for each new function 
(#6993)
6e6e4e2 is described below

commit 6e6e4e28b36717f2b11c69babd4b9d34140ab5b1
Author: Boyang Jerry Peng <jerry.boyang.p...@gmail.com>
AuthorDate: Fri May 22 20:40:58 2020 -0700

    Secrets provider should be initialized for each new function (#6993)
    
    * Secrets provider should be initialized for each new function
    
    * add comment
    
    Co-authored-by: Jerry Peng <jer...@splunk.com>
---
 .../pulsar/functions/runtime/thread/ThreadRuntimeFactory.java  | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git 
a/pulsar-functions/runtime/src/main/java/org/apache/pulsar/functions/runtime/thread/ThreadRuntimeFactory.java
 
b/pulsar-functions/runtime/src/main/java/org/apache/pulsar/functions/runtime/thread/ThreadRuntimeFactory.java
index cb82129..423d1f0 100644
--- 
a/pulsar-functions/runtime/src/main/java/org/apache/pulsar/functions/runtime/thread/ThreadRuntimeFactory.java
+++ 
b/pulsar-functions/runtime/src/main/java/org/apache/pulsar/functions/runtime/thread/ThreadRuntimeFactory.java
@@ -34,7 +34,6 @@ import org.apache.pulsar.functions.instance.InstanceConfig;
 import org.apache.pulsar.functions.runtime.RuntimeCustomizer;
 import org.apache.pulsar.functions.runtime.RuntimeFactory;
 import org.apache.pulsar.functions.runtime.RuntimeUtils;
-import org.apache.pulsar.functions.secretsprovider.ClearTextSecretsProvider;
 import org.apache.pulsar.functions.secretsprovider.SecretsProvider;
 import 
org.apache.pulsar.functions.secretsproviderconfigurator.SecretsProviderConfigurator;
 import org.apache.pulsar.functions.utils.Reflections;
@@ -58,13 +57,17 @@ public class ThreadRuntimeFactory implements RuntimeFactory 
{
     private FunctionCacheManager fnCache;
     private PulsarClient pulsarClient;
     private String storageServiceUrl;
-    private SecretsProvider secretsProvider;
+    private SecretsProvider defaultSecretsProvider;
     private CollectorRegistry collectorRegistry;
     private String narExtractionDirectory;
     private volatile boolean closed;
     private SecretsProviderConfigurator secretsProviderConfigurator;
     private ClassLoader rootClassLoader;
 
+    /**
+     * This constructor is used by other runtimes (e.g. ProcessRuntime and 
KubernetesRuntime) that rely on ThreadRuntime to actually run an instance of 
the function.
+     * When used by other runtimes, the arguments such as secretsProvider and 
rootClassLoader will be provided.
+     */
     public ThreadRuntimeFactory(String threadGroupName, String 
pulsarServiceUrl, String storageServiceUrl,
                                 AuthenticationConfig authConfig, 
SecretsProvider secretsProvider,
                                 CollectorRegistry collectorRegistry, String 
narExtractionDirectory,
@@ -112,7 +115,7 @@ public class ThreadRuntimeFactory implements RuntimeFactory 
{
 
         this.rootClassLoader = rootClassLoader;
         this.secretsProviderConfigurator = secretsProviderConfigurator;
-        this.secretsProvider = secretsProvider;
+        this.defaultSecretsProvider = secretsProvider;
         this.fnCache = new FunctionCacheManagerImpl(rootClassLoader);
         this.threadGroup = new ThreadGroup(threadGroupName);
         this.pulsarClient = pulsarClient;
@@ -139,6 +142,7 @@ public class ThreadRuntimeFactory implements RuntimeFactory 
{
     public ThreadRuntime createContainer(InstanceConfig instanceConfig, String 
jarFile,
                                          String originalCodeFileName,
                                          Long expectedHealthCheckInterval) {
+        SecretsProvider secretsProvider = defaultSecretsProvider;
         if (secretsProvider == null) {
             String secretsProviderClassName = 
secretsProviderConfigurator.getSecretsProviderClassName(instanceConfig.getFunctionDetails());
             secretsProvider = (SecretsProvider) 
Reflections.createInstance(secretsProviderClassName, this.rootClassLoader);

Reply via email to