You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by si...@apache.org on 2018/09/17 08:03:10 UTC

[incubator-pulsar] branch master updated: Preserve filename of the original function submission (#2588)

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

sijie 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 a123380  Preserve filename of the original function submission (#2588)
a123380 is described below

commit a123380327fbe95eef1066c4c456020c19136e07
Author: Sanjeev Kulkarni <sa...@gmail.com>
AuthorDate: Mon Sep 17 01:03:06 2018 -0700

    Preserve filename of the original function submission (#2588)
    
    ### Motivation
    
    When we submit a function, currently we don't note down the original filename that was uploaded from the client. For regular java functions this works fine. For python workers we manage by doing tricks wrt tricks like filename using classnames. However when we add things like wheel support, the filename encodes information that cannot be discarded away.
    This pr preserves that filename
---
 pulsar-functions/proto/src/main/proto/Function.proto              | 1 +
 .../org/apache/pulsar/functions/utils/FunctionDetailsUtils.java   | 8 +++++++-
 .../java/org/apache/pulsar/functions/worker/FunctionActioner.java | 2 +-
 .../apache/pulsar/functions/worker/rest/api/FunctionsImpl.java    | 6 ++++++
 4 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/pulsar-functions/proto/src/main/proto/Function.proto b/pulsar-functions/proto/src/main/proto/Function.proto
index 6e969ae..a76cf8d 100644
--- a/pulsar-functions/proto/src/main/proto/Function.proto
+++ b/pulsar-functions/proto/src/main/proto/Function.proto
@@ -116,6 +116,7 @@ message SinkSpec {
 
 message PackageLocationMetaData {
     string packagePath = 1;
+    string originalFileName = 2;
 }
 
 message FunctionMetaData {
diff --git a/pulsar-functions/utils/src/main/java/org/apache/pulsar/functions/utils/FunctionDetailsUtils.java b/pulsar-functions/utils/src/main/java/org/apache/pulsar/functions/utils/FunctionDetailsUtils.java
index 5ecdd4f..a9787ba 100644
--- a/pulsar-functions/utils/src/main/java/org/apache/pulsar/functions/utils/FunctionDetailsUtils.java
+++ b/pulsar-functions/utils/src/main/java/org/apache/pulsar/functions/utils/FunctionDetailsUtils.java
@@ -19,6 +19,8 @@
 
 package org.apache.pulsar.functions.utils;
 
+import org.apache.commons.lang.StringUtils;
+import org.apache.pulsar.functions.proto.Function;
 import org.apache.pulsar.functions.proto.Function.FunctionDetails;
 
 public class FunctionDetailsUtils {
@@ -43,7 +45,11 @@ public class FunctionDetailsUtils {
         return fullyQualifiedName.split("/")[2];
     }
 
-    public static String getDownloadFileName(FunctionDetails FunctionDetails) {
+    public static String getDownloadFileName(FunctionDetails FunctionDetails,
+                                             Function.PackageLocationMetaData packageLocation) {
+        if (!StringUtils.isEmpty(packageLocation.getOriginalFileName())) {
+            return packageLocation.getOriginalFileName();
+        }
         String[] hierarchy = FunctionDetails.getClassName().split("\\.");
         String fileName;
         if (hierarchy.length <= 0) {
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 f5a7e96..724d80c 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
@@ -156,7 +156,7 @@ public class FunctionActioner implements AutoCloseable {
 
             pkgFile = new File(
                     pkgDir,
-                    new File(FunctionDetailsUtils.getDownloadFileName(functionMetaData.getFunctionDetails())).getName());
+                    new File(FunctionDetailsUtils.getDownloadFileName(functionMetaData.getFunctionDetails(), functionMetaData.getPackageLocation())).getName());
             downloadFile(pkgFile, isPkgUrlProvided, functionMetaData, instanceId);
         }
 
diff --git a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImpl.java b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImpl.java
index df82c0d..8bb9194 100644
--- a/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImpl.java
+++ b/pulsar-functions/worker/src/main/java/org/apache/pulsar/functions/worker/rest/api/FunctionsImpl.java
@@ -170,6 +170,9 @@ public class FunctionsImpl {
         } else {
             packageLocationMetaDataBuilder.setPackagePath(isPkgUrlProvided ? functionPkgUrl
                     : createPackagePath(tenant, namespace, functionName, fileDetail.getFileName()));
+            if (!isPkgUrlProvided) {
+                packageLocationMetaDataBuilder.setOriginalFileName(fileDetail.getFileName());
+            }
         }
 
         functionMetaDataBuilder.setPackageLocation(packageLocationMetaDataBuilder);
@@ -234,6 +237,9 @@ public class FunctionsImpl {
         } else {
             packageLocationMetaDataBuilder.setPackagePath(isPkgUrlProvided ? functionPkgUrl
                     : createPackagePath(tenant, namespace, functionName, fileDetail.getFileName()));
+            if (!isPkgUrlProvided) {
+                packageLocationMetaDataBuilder.setOriginalFileName(fileDetail.getFileName());
+            }
         }
 
         functionMetaDataBuilder.setPackageLocation(packageLocationMetaDataBuilder);