You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by pe...@apache.org on 2022/04/04 12:33:13 UTC

[pulsar] 04/15: [pulsar-functions] fix some IOExceptions when create functions from package URL (#14553)

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

penghui pushed a commit to branch branch-2.8
in repository https://gitbox.apache.org/repos/asf/pulsar.git

commit 9e0b13fc4d862e9197e07bfe6cc34d57c07537f5
Author: Rui Fu <fr...@users.noreply.github.com>
AuthorDate: Wed Mar 16 19:01:27 2022 +0800

    [pulsar-functions] fix some IOExceptions when create functions from package URL (#14553)
    
    (cherry picked from commit f0d166f36e1fbd4df1e20ae2ccc7fcae822c17b4)
---
 .../java/org/apache/pulsar/client/admin/internal/PackagesImpl.java     | 3 ++-
 .../org/apache/pulsar/functions/worker/rest/api/FunctionsImpl.java     | 1 +
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/PackagesImpl.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/PackagesImpl.java
index 4c7fc4cf299..77749e6421b 100644
--- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/PackagesImpl.java
+++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/PackagesImpl.java
@@ -25,6 +25,7 @@ import java.io.InputStream;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
 import java.util.List;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutionException;
@@ -182,7 +183,7 @@ public class PackagesImpl extends ComponentResource implements Packages {
                         if (destinyPath.getParent() != null) {
                             Files.createDirectories(destinyPath.getParent());
                         }
-                        Files.copy(inputStream, destinyPath);
+                        Files.copy(inputStream, destinyPath, StandardCopyOption.REPLACE_EXISTING);
                         future.complete(null);
                     } catch (IOException e) {
                         future.completeExceptionally(e);
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 dba3645c3e5..b2d0f36787e 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
@@ -771,6 +771,7 @@ public class FunctionsImpl extends ComponentImpl implements Functions<PulsarWork
             // use the Nar extraction directory as a temporary directory for downloaded files
             tempDirectory = Paths.get(worker.getWorkerConfig().getNarExtractionDirectory());
         }
+        Files.createDirectories(tempDirectory);
         File file = Files.createTempFile(tempDirectory, "function", ".tmp").toFile();
         worker.getBrokerAdmin().packages().download(packageName, file.toString());
         return file;