You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by mm...@apache.org on 2018/03/15 03:34:49 UTC

[incubator-pulsar] branch master updated: remove function package on function delete (#1385)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 5c31b2e  remove function package on function delete (#1385)
5c31b2e is described below

commit 5c31b2ec9bc48f55a042aaa28a005c40b1971885
Author: Boyang Jerry Peng <je...@gmail.com>
AuthorDate: Wed Mar 14 20:34:47 2018 -0700

    remove function package on function delete (#1385)
    
    * remove function package on function delete
    
    * using apache commons for deletion
    
    * refactoring
    
    * removing unnecessary import
    
    * removing unncessary dependency
---
 .../pulsar/functions/worker/FunctionActioner.java  | 39 ++++++++++++++++------
 1 file changed, 29 insertions(+), 10 deletions(-)

diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionActioner.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionActioner.java
index cc77e47..296e7d0 100644
--- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionActioner.java
+++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/FunctionActioner.java
@@ -18,11 +18,14 @@
  */
 package org.apache.pulsar.functions.worker;
 
+import java.io.IOException;
 import java.nio.file.FileAlreadyExistsException;
 import java.nio.file.Files;
 import java.nio.file.Paths;
+
 import lombok.*;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.distributedlog.api.namespace.Namespace;
 import org.apache.pulsar.functions.proto.Function;
@@ -112,13 +115,7 @@ public class FunctionActioner implements AutoCloseable {
                 functionMetaData.getFunctionConfig().getName(), instance.getInstanceId());
         File pkgDir = new File(
                 workerConfig.getDownloadDirectory(),
-                StringUtils.join(
-                        new String[]{
-                                functionMetaData.getFunctionConfig().getTenant(),
-                                functionMetaData.getFunctionConfig().getNamespace(),
-                                functionMetaData.getFunctionConfig().getName(),
-                        },
-                        File.separatorChar));
+                getDownloadPackagePath(functionMetaData));
         pkgDir.mkdirs();
 
         int instanceId = functionRuntimeInfo.getFunctionInstance().getInstanceId();
@@ -178,7 +175,7 @@ public class FunctionActioner implements AutoCloseable {
         runtimeSpawner.start();
     }
 
-    private boolean stopFunction(FunctionRuntimeInfo functionRuntimeInfo) {
+    private void stopFunction(FunctionRuntimeInfo functionRuntimeInfo) {
         Function.Instance instance = functionRuntimeInfo.getFunctionInstance();
         FunctionMetaData functionMetaData = instance.getFunctionMetaData();
         log.info("Stopping function {} - {}...",
@@ -186,8 +183,30 @@ public class FunctionActioner implements AutoCloseable {
         if (functionRuntimeInfo.getRuntimeSpawner() != null) {
             functionRuntimeInfo.getRuntimeSpawner().close();
             functionRuntimeInfo.setRuntimeSpawner(null);
-            return true;
         }
-        return false;
+
+        // clean up function package
+        File pkgDir = new File(
+                workerConfig.getDownloadDirectory(),
+                getDownloadPackagePath(functionMetaData));
+
+        if (pkgDir.exists()) {
+            try {
+                FileUtils.deleteDirectory(pkgDir);
+            } catch (IOException e) {
+                log.warn("Failed to delete package for function: {}",
+                        FunctionConfigUtils.getFullyQualifiedName(functionMetaData.getFunctionConfig()), e);
+            }
+        }
+    }
+
+    private String getDownloadPackagePath(FunctionMetaData functionMetaData) {
+        return StringUtils.join(
+                new String[]{
+                        functionMetaData.getFunctionConfig().getTenant(),
+                        functionMetaData.getFunctionConfig().getNamespace(),
+                        functionMetaData.getFunctionConfig().getName(),
+                },
+                File.separatorChar);
     }
 }

-- 
To stop receiving notification emails like this one, please contact
mmerli@apache.org.