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 2020/12/14 11:44:18 UTC
[pulsar] branch master updated: [Issue #8874]Fix the package upload
failed issue (#8907)
This is an automated email from the ASF dual-hosted git repository.
penghui 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 5c04a90 [Issue #8874]Fix the package upload failed issue (#8907)
5c04a90 is described below
commit 5c04a9041754a3b0a5a9fa6e4c22cd4bdd0fe62a
Author: Yong Zhang <zh...@gmail.com>
AuthorDate: Mon Dec 14 19:43:49 2020 +0800
[Issue #8874]Fix the package upload failed issue (#8907)
---
Fixes #8874
*Motivation*
Fix the issue when uploading a package, it will show update metadata failed.
*Modifications*
- Fix the issue
- Enable the integration tests for this
---
conf/broker.conf | 2 +-
conf/standalone.conf | 2 +-
.../core/impl/PackagesManagementImpl.java | 6 ++---
.../tests/integration/cli/PackagesCliTest.java | 29 +++++++++++++++-------
4 files changed, 24 insertions(+), 15 deletions(-)
diff --git a/conf/broker.conf b/conf/broker.conf
index bf0a49e..c3a6452 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 7df5ada..30e5688 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 9bbeccb..cbc6f27 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 class PackagesManagementImpl implements PackagesManagement {
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 3792a12..89d8d98 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 class PackagesCliTest {
private Map<String, String> getPackagesManagementServiceEnvs() {
Map<String, String> 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 class PackagesCliTest {
}
}
- // 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 class PackagesCliTest {
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 class PackagesCliTest {
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());
}