You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by jl...@apache.org on 2019/10/22 21:48:05 UTC
[incubator-pinot] 01/01: Catch exception when checking lead
controller resource is enabled
This is an automated email from the ASF dual-hosted git repository.
jlli pushed a commit to branch fix-enable-lead-controller-resource-logic
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git
commit ea5293dce9fde2c7d974b98a0ef779fd94792364
Author: jackjlli <jl...@linkedin.com>
AuthorDate: Tue Oct 22 14:47:18 2019 -0700
Catch exception when checking lead controller resource is enabled
---
.../org/apache/pinot/controller/LeadControllerManager.java | 2 --
.../pinot/server/realtime/ControllerLeaderLocator.java | 12 +++++++++++-
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/pinot-controller/src/main/java/org/apache/pinot/controller/LeadControllerManager.java b/pinot-controller/src/main/java/org/apache/pinot/controller/LeadControllerManager.java
index 767ab8f..c3cf72e 100644
--- a/pinot-controller/src/main/java/org/apache/pinot/controller/LeadControllerManager.java
+++ b/pinot-controller/src/main/java/org/apache/pinot/controller/LeadControllerManager.java
@@ -216,8 +216,6 @@ public class LeadControllerManager {
leadControllerResourceEnabled = LeadControllerUtils.isLeadControllerResourceEnabled(_helixManager);
} catch (Exception e) {
LOGGER.error("Exception when checking whether lead controller resource is enabled or not.", e);
- _isLeadControllerResourceEnabled = false;
- _controllerMetrics.setValueOfGlobalGauge(ControllerGauge.PINOT_LEAD_CONTROLLER_RESOURCE_ENABLED, 0L);
return;
}
diff --git a/pinot-core/src/main/java/org/apache/pinot/server/realtime/ControllerLeaderLocator.java b/pinot-core/src/main/java/org/apache/pinot/server/realtime/ControllerLeaderLocator.java
index caa8034..55d14a0 100644
--- a/pinot-core/src/main/java/org/apache/pinot/server/realtime/ControllerLeaderLocator.java
+++ b/pinot-core/src/main/java/org/apache/pinot/server/realtime/ControllerLeaderLocator.java
@@ -102,10 +102,20 @@ public class ControllerLeaderLocator {
* Checks whether lead controller resource has been enabled or not.
* If yes, updates lead controller pairs from the external view of lead controller resource.
* Otherwise, updates lead controller pairs from Helix cluster leader.
+ * Note: Exception may happen due to Helix/ZK disconnect. If so, we should NOT regress the behavior back to false.
+ * Thus, simply exiting the method should be enough. Retry will be done in the next request.
*/
private void refreshControllerLeaderMap() {
// Checks whether lead controller resource has been enabled or not.
- if (LeadControllerUtils.isLeadControllerResourceEnabled(_helixManager)) {
+ boolean leadControllerResourceEnabled;
+ try {
+ leadControllerResourceEnabled = LeadControllerUtils.isLeadControllerResourceEnabled(_helixManager);
+ } catch (Exception e) {
+ LOGGER.error("Exception when checking whether lead controller resource is enable or not.", e);
+ return;
+ }
+
+ if (leadControllerResourceEnabled) {
refreshControllerLeaderMapFromLeadControllerResource();
} else {
refreshControllerLeaderMapFromHelixClusterLeader();
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org