You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by mm...@apache.org on 2018/01/31 02:14:56 UTC
[incubator-pulsar] branch master updated: Use Optional instead of
null checks when reading isolation policies (#1128)
This is an automated email from the ASF dual-hosted git repository.
mmerli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pulsar.git
The following commit(s) were added to refs/heads/master by this push:
new 60a15f8 Use Optional instead of null checks when reading isolation policies (#1128)
60a15f8 is described below
commit 60a15f85bd9a4bcc03c77c42ae8c218225b0d60d
Author: Matteo Merli <mm...@apache.org>
AuthorDate: Tue Jan 30 18:14:54 2018 -0800
Use Optional instead of null checks when reading isolation policies (#1128)
---
.../broker/loadbalance/impl/LoadManagerShared.java | 2 +-
.../impl/SimpleResourceAllocationPolicies.java | 58 ++++++++++++----------
2 files changed, 33 insertions(+), 27 deletions(-)
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/LoadManagerShared.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/LoadManagerShared.java
index ffdaac6..e0af8ec 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/LoadManagerShared.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/LoadManagerShared.java
@@ -90,7 +90,7 @@ public class LoadManagerShared {
primariesCache.clear();
secondaryCache.clear();
NamespaceName namespace = serviceUnit.getNamespaceObject();
- boolean isIsolationPoliciesPresent = policies.IsIsolationPoliciesPresent(namespace);
+ boolean isIsolationPoliciesPresent = policies.areIsolationPoliciesPresent(namespace);
boolean isNonPersistentTopic = (serviceUnit instanceof NamespaceBundle)
? ((NamespaceBundle) serviceUnit).hasNonPersistentTopic() : false;
if (isIsolationPoliciesPresent) {
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/SimpleResourceAllocationPolicies.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/SimpleResourceAllocationPolicies.java
index c8322f6..fa67c0d 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/SimpleResourceAllocationPolicies.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/SimpleResourceAllocationPolicies.java
@@ -19,6 +19,7 @@
package org.apache.pulsar.broker.loadbalance.impl;
import java.util.Map;
+import java.util.Optional;
import org.apache.pulsar.broker.PulsarService;
import org.apache.pulsar.broker.admin.AdminResource;
@@ -47,57 +48,62 @@ public class SimpleResourceAllocationPolicies {
return true;
}
- private NamespaceIsolationPolicies getIsolationPolicies(String clusterName) {
- NamespaceIsolationPolicies policies = null;
+ private Optional<NamespaceIsolationPolicies> getIsolationPolicies(String clusterName) {
try {
- policies = namespaceIsolationPolicies
- .get(AdminResource.path("clusters", clusterName, "namespaceIsolationPolicies")).orElse(null);
+ return namespaceIsolationPolicies
+ .get(AdminResource.path("clusters", clusterName, "namespaceIsolationPolicies"));
} catch (Exception e) {
LOG.warn("GetIsolationPolicies: Unable to get the namespaceIsolationPolicies [{}]", e);
+ return Optional.empty();
}
- return policies;
}
- public boolean IsIsolationPoliciesPresent(NamespaceName namespace) {
+ public boolean areIsolationPoliciesPresent(NamespaceName namespace) {
try {
- NamespaceIsolationPolicies policies = null;
- policies = getIsolationPolicies(pulsar.getConfiguration().getClusterName());
- if (policies != null)
- return policies.getPolicyByNamespace(namespace) != null;
+ Optional<NamespaceIsolationPolicies> policies = getIsolationPolicies(pulsar.getConfiguration().getClusterName());
+ if (policies.isPresent()) {
+ return policies.get().getPolicyByNamespace(namespace) != null;
+ } else {
+ return false;
+ }
} catch (Exception e) {
LOG.warn("IsIsolationPoliciesPresent: Unable to get the namespaceIsolationPolicies [{}]", e);
+ return false;
}
- return false;
}
- private NamespaceIsolationPolicy getNamespaceIsolationPolicy(NamespaceName namespace) {
- NamespaceIsolationPolicies policies = null;
- NamespaceIsolationPolicy policy = null;
+ private Optional<NamespaceIsolationPolicy> getNamespaceIsolationPolicy(NamespaceName namespace) {
try {
- policies = getIsolationPolicies(pulsar.getConfiguration().getClusterName());
- policy = policies.getPolicyByNamespace(namespace);
+ Optional<NamespaceIsolationPolicies> policies =getIsolationPolicies(pulsar.getConfiguration().getClusterName());
+ if (!policies.isPresent()) {
+ return Optional.empty();
+ }
+
+ return Optional.ofNullable(policies.get().getPolicyByNamespace(namespace));
} catch (Exception e) {
LOG.warn("Unable to get the namespaceIsolationPolicies [{}]", e);
+ return Optional.empty();
}
- return policy;
}
public boolean isPrimaryBroker(NamespaceName namespace, String broker) {
- NamespaceIsolationPolicy nsPolicy = getNamespaceIsolationPolicy(namespace);
- return (nsPolicy != null) ? nsPolicy.isPrimaryBroker(broker) : false;
+ Optional<NamespaceIsolationPolicy> nsPolicy = getNamespaceIsolationPolicy(namespace);
+ return nsPolicy.isPresent() && nsPolicy.get().isPrimaryBroker(broker);
}
public boolean isSecondaryBroker(NamespaceName namespace, String broker) {
- NamespaceIsolationPolicy nsPolicy = getNamespaceIsolationPolicy(namespace);
- return (nsPolicy != null) ? nsPolicy.isSecondaryBroker(broker) : false;
+ Optional<NamespaceIsolationPolicy> nsPolicy = getNamespaceIsolationPolicy(namespace);
+ return nsPolicy.isPresent() && nsPolicy.get().isSecondaryBroker(broker);
}
public boolean isSharedBroker(String broker) {
try {
- NamespaceIsolationPolicies policies = getIsolationPolicies(pulsar.getConfiguration().getClusterName());
- if (policies == null)
+ Optional<NamespaceIsolationPolicies> policies = getIsolationPolicies(pulsar.getConfiguration().getClusterName());
+ if (!policies.isPresent()) {
return true;
- return policies.isSharedBroker(broker);
+ }
+
+ return policies.get().isSharedBroker(broker);
} catch (Exception e) {
LOG.warn("isPrimaryForAnyNamespace: [{}]", e);
}
@@ -105,7 +111,7 @@ public class SimpleResourceAllocationPolicies {
}
public boolean shouldFailoverToSecondaries(NamespaceName namespace, int totalPrimaryCandidates) {
- NamespaceIsolationPolicy nsPolicy = getNamespaceIsolationPolicy(namespace);
- return (nsPolicy != null) ? nsPolicy.shouldFailover(totalPrimaryCandidates) : false;
+ Optional<NamespaceIsolationPolicy> nsPolicy = getNamespaceIsolationPolicy(namespace);
+ return nsPolicy.isPresent() && nsPolicy.get().shouldFailover(totalPrimaryCandidates);
}
}
--
To stop receiving notification emails like this one, please contact
mmerli@apache.org.