This is an automated email from the ASF dual-hosted git repository.
penghui pushed a commit to branch branch-2.10
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/branch-2.10 by this push:
new fa096be Make sure policies.is_allow_auto_update_schema not null
(#14409)
fa096be is described below
commit fa096be7e658d5c43eb190b72acf26ef4dca5cf6
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)
---
.../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 d5117d1..2aaa685 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
@@ -293,6 +293,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 1266a49..672bf96 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 1907433..c435d64 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
@@ -649,6 +649,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());
@@ -657,6 +658,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).