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/02/24 04:05:50 UTC
[pulsar] branch branch-2.9 updated: Make sure policies.is_allow_auto_update_schema not null (#14409)
This is an automated email from the ASF dual-hosted git repository.
penghui pushed a commit to branch branch-2.9
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/branch-2.9 by this push:
new 23c6581 Make sure policies.is_allow_auto_update_schema not null (#14409)
23c6581 is described below
commit 23c6581dcdb7922c33d3397efefec73cca149d27
Author: WangJialing <65...@users.noreply.github.com>
AuthorDate: Wed Feb 23 21:10:28 2022 +0800
Make sure policies.is_allow_auto_update_schema not null (#14409)
(cherry picked from commit 7d6079529b37890ddb42d91abe915dae6ebb22b7)
---
.../org/apache/pulsar/broker/admin/AdminResource.java | 19 +++++--------------
.../org/apache/pulsar/broker/admin/AdminApiTest.java | 2 ++
.../pulsar/broker/admin/v1/V1_AdminApiTest.java | 2 ++
.../compatibility/SchemaCompatibilityCheckTest.java | 5 +++++
4 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/AdminResource.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/AdminResource.java
index 547665f..71c8883 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/AdminResource.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/AdminResource.java
@@ -286,6 +286,10 @@ public abstract class AdminResource extends PulsarWebResource {
BundlesData bundleData = pulsar().getNamespaceService().getNamespaceBundleFactory()
.getBundles(namespaceName).getBundlesData();
policies.bundles = bundleData != null ? bundleData : policies.bundles;
+ if (policies.is_allow_auto_update_schema == null) {
+ // the type changed from boolean to Boolean. return broker value here for keeping compatibility.
+ policies.is_allow_auto_update_schema = pulsar().getConfig().isAllowAutoUpdateSchemaEnabled();
+ }
return policies;
} catch (RestException re) {
@@ -517,20 +521,7 @@ public abstract class AdminResource extends PulsarWebResource {
protected Policies getNamespacePolicies(String tenant, String cluster, String namespace) {
NamespaceName ns = NamespaceName.get(tenant, cluster, namespace);
- try {
- Policies policies = namespaceResources().getPolicies(ns)
- .orElseThrow(() -> new RestException(Status.NOT_FOUND, "Namespace does not exist"));
- // fetch bundles from LocalZK-policies
- BundlesData bundleData = pulsar().getNamespaceService().getNamespaceBundleFactory()
- .getBundles(ns).getBundlesData();
- policies.bundles = bundleData != null ? bundleData : policies.bundles;
- return policies;
- } catch (RestException re) {
- throw re;
- } catch (Exception e) {
- log.error("[{}] Failed to get namespace policies {}", clientAppId(), ns, e);
- throw new RestException(e);
- }
+ return getNamespacePolicies(ns);
}
protected boolean isNamespaceReplicated(NamespaceName namespaceName) {
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java
index 3e87f13..eee39b8 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiTest.java
@@ -736,6 +736,7 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
policies.bundles = PoliciesUtil.defaultBundle();
policies.auth_policies.getNamespaceAuthentication().put("spiffe://developer/passport-role", EnumSet.allOf(AuthAction.class));
policies.auth_policies.getNamespaceAuthentication().put("my-role", EnumSet.allOf(AuthAction.class));
+ policies.is_allow_auto_update_schema = conf.isAllowAutoUpdateSchemaEnabled();
assertEquals(admin.namespaces().getPolicies("prop-xyz/ns1"), policies);
assertEquals(admin.namespaces().getPermissions("prop-xyz/ns1"), policies.auth_policies.getNamespaceAuthentication());
@@ -746,6 +747,7 @@ public class AdminApiTest extends MockedPulsarServiceBaseTest {
admin.namespaces().revokePermissionsOnNamespace("prop-xyz/ns1", "my-role");
policies.auth_policies.getNamespaceAuthentication().remove("spiffe://developer/passport-role");
policies.auth_policies.getNamespaceAuthentication().remove("my-role");
+ policies.is_allow_auto_update_schema = conf.isAllowAutoUpdateSchemaEnabled();
assertEquals(admin.namespaces().getPolicies("prop-xyz/ns1"), policies);
assertEquals(admin.namespaces().getPersistence("prop-xyz/ns1"), null);
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java
index 06d066f..16bf055 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/v1/V1_AdminApiTest.java
@@ -650,6 +650,7 @@ public class V1_AdminApiTest extends MockedPulsarServiceBaseTest {
Policies policies = new Policies();
policies.bundles = PoliciesUtil.defaultBundle();
policies.auth_policies.getNamespaceAuthentication().put("my-role", EnumSet.allOf(AuthAction.class));
+ policies.is_allow_auto_update_schema = conf.isAllowAutoUpdateSchemaEnabled();
assertEquals(admin.namespaces().getPolicies("prop-xyz/use/ns1"), policies);
assertEquals(admin.namespaces().getPermissions("prop-xyz/use/ns1"), policies.auth_policies.getNamespaceAuthentication());
@@ -658,6 +659,7 @@ public class V1_AdminApiTest extends MockedPulsarServiceBaseTest {
admin.namespaces().revokePermissionsOnNamespace("prop-xyz/use/ns1", "my-role");
policies.auth_policies.getNamespaceAuthentication().remove("my-role");
+ policies.is_allow_auto_update_schema = conf.isAllowAutoUpdateSchemaEnabled();
assertEquals(admin.namespaces().getPolicies("prop-xyz/use/ns1"), policies);
assertNull(admin.namespaces().getPersistence("prop-xyz/use/ns1"));
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/schema/compatibility/SchemaCompatibilityCheckTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/schema/compatibility/SchemaCompatibilityCheckTest.java
index 5b12f37..1b5e4d6 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/schema/compatibility/SchemaCompatibilityCheckTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/schema/compatibility/SchemaCompatibilityCheckTest.java
@@ -39,6 +39,7 @@ import org.apache.pulsar.common.naming.NamespaceName;
import org.apache.pulsar.common.naming.TopicDomain;
import org.apache.pulsar.common.naming.TopicName;
import org.apache.pulsar.common.policies.data.ClusterData;
+import org.apache.pulsar.common.policies.data.Policies;
import org.apache.pulsar.common.policies.data.SchemaCompatibilityStrategy;
import org.apache.pulsar.common.policies.data.TenantInfo;
import org.apache.pulsar.common.schema.SchemaInfo;
@@ -247,6 +248,7 @@ public class SchemaCompatibilityCheckTest extends MockedPulsarServiceBaseTest {
pulsar.getConfig().setAllowAutoUpdateSchemaEnabled(false);
+
ProducerBuilder<Schemas.PersonTwo> producerThreeBuilder = pulsarClient
.newProducer(Schema.AVRO(SchemaDefinition.<Schemas.PersonTwo>builder().withAlwaysAllowNull
(false).withSupportSchemaVersioning(true).
@@ -259,6 +261,9 @@ public class SchemaCompatibilityCheckTest extends MockedPulsarServiceBaseTest {
}
pulsar.getConfig().setAllowAutoUpdateSchemaEnabled(true);
+ Policies policies = admin.namespaces().getPolicies(namespaceName.toString());
+ Assert.assertTrue(policies.is_allow_auto_update_schema);
+
ConsumerBuilder<Schemas.PersonTwo> comsumerBuilder = pulsarClient.newConsumer(Schema.AVRO(
SchemaDefinition.<Schemas.PersonTwo>builder().withAlwaysAllowNull
(false).withSupportSchemaVersioning(true).