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).