diff --git a/conf/broker.conf b/conf/broker.conf index bf0a49eba3320..c3a64520d12c9 100644 --- a/conf/broker.conf +++ b/conf/broker.conf @@ -1190,6 +1190,6 @@ packagesManagementStorageProvider=org.apache.pulsar.packages.management.storage. packagesReplicas=1 # The bookkeeper ledger root path -packagesManagementLedgerRootPath=/ledger +packagesManagementLedgerRootPath=/ledgers ### --- Packages management service configuration variables (end) --- ### diff --git a/conf/standalone.conf b/conf/standalone.conf index 7df5adae45092..30e5688ff1cd7 100644 --- a/conf/standalone.conf +++ b/conf/standalone.conf @@ -910,6 +910,6 @@ packagesManagementStorageProvider=org.apache.pulsar.packages.management.storage. packagesReplicas=1 # The bookkeeper ledger root path -packagesManagementLedgerRootPath=/ledger +packagesManagementLedgerRootPath=/ledgers ### --- Packages management service configuration variables (end) --- ### diff --git a/pulsar-package-management/core/src/main/java/org/apache/pulsar/packages/management/core/impl/PackagesManagementImpl.java b/pulsar-package-management/core/src/main/java/org/apache/pulsar/packages/management/core/impl/PackagesManagementImpl.java index 9bbeccbe41932..cbc6f27b49a2c 100644 --- a/pulsar-package-management/core/src/main/java/org/apache/pulsar/packages/management/core/impl/PackagesManagementImpl.java +++ b/pulsar-package-management/core/src/main/java/org/apache/pulsar/packages/management/core/impl/PackagesManagementImpl.java @@ -134,10 +134,8 @@ public CompletableFuture upload(PackageName packageName, PackageMetadata m return CompletableFuture.allOf( checkMetadataExistsAndThrowException(packageName), checkPackageExistsAndThrowException(packageName) - ).thenCompose(ignore -> CompletableFuture.allOf( - writeMeta(packageName, metadata), - storage.writeAsync(packagePath(packageName), inputStream)) - ); + ).thenCompose(ignore -> writeMeta(packageName, metadata)) + .thenCompose(ignore -> storage.writeAsync(packagePath(packageName), inputStream)); } @Override diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/cli/PackagesCliTest.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/cli/PackagesCliTest.java index 3792a12b19e67..89d8d9825124d 100644 --- a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/cli/PackagesCliTest.java +++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/cli/PackagesCliTest.java @@ -18,6 +18,7 @@ */ package org.apache.pulsar.tests.integration.cli; +import org.apache.pulsar.tests.integration.containers.BrokerContainer; import org.apache.pulsar.tests.integration.docker.ContainerExecResult; import org.apache.pulsar.tests.integration.topologies.PulsarCluster; import org.apache.pulsar.tests.integration.topologies.PulsarClusterSpec; @@ -60,18 +61,17 @@ public void teardown() { private Map getPackagesManagementServiceEnvs() { Map envs = new HashMap<>(); envs.put("enablePackagesManagement", "true"); + envs.put("packagesManagementLedgerRootPath", "/ledgers"); return envs; } - @Test(timeOut = 60000 * 10) + @Test(timeOut = 60000 * 5) public void testPackagesOperationsWithoutUploadingPackages() throws Exception { ContainerExecResult result = runPackagesCommand("list", "--type", "function", "public/default"); assertEquals(result.getExitCode(), 0); - assertTrue(result.getStdout().isEmpty()); result = runPackagesCommand("list-versions", "function://public/default/test"); assertEquals(result.getExitCode(), 0); - assertTrue(result.getStdout().isEmpty()); try { result = runPackagesCommand("download", "function://public/default/test@v1", "--path", "test-admin"); @@ -81,14 +81,24 @@ public void testPackagesOperationsWithoutUploadingPackages() throws Exception { } } - // TODO: the upload command has some problem when uploading packages, enable this tests when issue - // https://github.com/apache/pulsar/issues/8874 is fixed. + @Test(timeOut = 60000 * 8) public void testPackagesOperationsWithUploadingPackages() throws Exception { String testPackageName = "function://public/default/test@v1"; ContainerExecResult result = runPackagesCommand("upload", "--description", "a test package", "--path", PulsarCluster.ADMIN_SCRIPT, testPackageName); assertEquals(result.getExitCode(), 0); + BrokerContainer container = pulsarCluster.getBroker(0); + String downloadFile = "tmp-file-" + RandomStringUtils.randomAlphabetic(8); + String[] downloadCmd = new String[]{PulsarCluster.ADMIN_SCRIPT, "packages", "download", + "--path", downloadFile, testPackageName}; + result = container.execCmd(downloadCmd); + assertEquals(result.getExitCode(), 0); + + String[] diffCmd = new String[]{"diff", PulsarCluster.ADMIN_SCRIPT, downloadFile}; + result = container.execCmd(diffCmd); + assertEquals(result.getExitCode(), 0); + result = runPackagesCommand("get-metadata", testPackageName); assertEquals(result.getExitCode(), 0); assertFalse(result.getStdout().isEmpty()); @@ -97,15 +107,16 @@ public void testPackagesOperationsWithUploadingPackages() throws Exception { result = runPackagesCommand("list", "--type", "function", "public/default"); assertEquals(result.getExitCode(), 0); assertFalse(result.getStdout().isEmpty()); - assertTrue(result.getStdout().contains(testPackageName)); + assertTrue(result.getStdout().contains("test")); - result = runPackagesCommand("list-versions", "--type", "function://public/default/test"); + result = runPackagesCommand("list-versions", "function://public/default/test"); assertEquals(result.getExitCode(), 0); assertFalse(result.getStdout().isEmpty()); assertTrue(result.getStdout().contains("v1")); String contact = "test@apache.org"; - result = runPackagesCommand("update-metadata", "--contact", contact, "-PpropertyA=A", testPackageName); + result = runPackagesCommand("update-metadata", "--description", "a test package", + "--contact", contact, "-PpropertyA=A", testPackageName); assertEquals(result.getExitCode(), 0); result = runPackagesCommand("get-metadata", testPackageName); @@ -118,7 +129,7 @@ public void testPackagesOperationsWithUploadingPackages() throws Exception { result = runPackagesCommand("delete", testPackageName); assertEquals(result.getExitCode(), 0); - result = runPackagesCommand("list", "--type", "functions", "public/default"); + result = runPackagesCommand("list-versions", "function://public/default/test"); assertEquals(result.getExitCode(), 0); assertTrue(result.getStdout().isEmpty()); }