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

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


The following commit(s) were added to refs/heads/branch-2.8 by this push:
     new eba2671  Make sure policies.is_allow_auto_update_schema not null 
(#14409)
eba2671 is described below

commit eba2671080341728f80435a82d2966726168e9da
Author: WangJialing <[email protected]>
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)
---
 .../apache/pulsar/broker/admin/AdminResource.java   | 21 +++++++--------------
 .../apache/pulsar/broker/admin/AdminApiTest.java    |  2 ++
 .../pulsar/broker/admin/v1/V1_AdminApiTest.java     |  2 ++
 .../compatibility/SchemaCompatibilityCheckTest.java |  5 +++++
 4 files changed, 16 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 5a31524..9d9cf76 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
@@ -313,6 +313,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) {
@@ -545,20 +549,9 @@ public abstract class AdminResource extends 
PulsarWebResource {
     }
 
     protected Policies getNamespacePolicies(String property, String cluster, 
String namespace) {
-        try {
-            Policies policies = 
namespaceResources().get(AdminResource.path(POLICIES, property, cluster, 
namespace))
-                    .orElseThrow(() -> new RestException(Status.NOT_FOUND, 
"Namespace does not exist"));
-            // fetch bundles from LocalZK-policies
-            BundlesData bundleData  = 
pulsar().getNamespaceService().getNamespaceBundleFactory()
-                    .getBundles(NamespaceName.get(property, cluster, 
namespace)).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(), property, cluster, namespace, e);
-            throw new RestException(e);
-        }
+        NamespaceName ns = NamespaceName.get(property, cluster, namespace);
+
+        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 2d9ddc4..3c35cad 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
@@ -740,6 +740,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());
@@ -750,6 +751,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 58ee083..49cde0f 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
@@ -646,6 +646,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());
@@ -654,6 +655,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).

Reply via email to