@Override public void run() { try { consumersRegistry.refresh(); if (consumersRegistry.isLeader() && workTracker.isReady()) { try (Timer.Context ctx = metrics.consumersWorkloadRebalanceDurationTimer(kafkaCluster).time()) { logger.info("Initializing workload balance."); SubscriptionAssignmentView initialState = workTracker.getAssignments(); WorkBalancingResult work = workBalancer.balance( subscriptionsCache.listActiveSubscriptionNames(), consumersRegistry.list(), initialState); if (consumersRegistry.isLeader()) { WorkTracker.WorkDistributionChanges changes = workTracker.apply(initialState, work.getAssignmentsView()); logger.info("Finished workload balance {}, {}", work.toString(), changes.toString()); updateMetrics(work, changes); } else { logger.info("Lost leadership before applying changes"); } } } else { balancingMetrics.reset(); } } catch (Exception e) { logger.error("Caught exception when running balancing job", e); } }
@Override public void run() { try { consumersRegistry.refresh(); if (consumersRegistry.isLeader() && workTracker.isReady()) { try (Timer.Context ctx = metrics.consumersWorkloadRebalanceDurationTimer(kafkaCluster).time()) { logger.info("Initializing workload balance."); SubscriptionAssignmentView initialState = workTracker.getAssignments(); WorkBalancingResult work = workBalancer.balance( subscriptionsCache.listActiveSubscriptionNames(), consumersRegistry.list(), initialState); if (consumersRegistry.isLeader()) { WorkTracker.WorkDistributionChanges changes = workTracker.apply(initialState, work.getAssignmentsView()); logger.info("Finished workload balance {}, {}", work.toString(), changes.toString()); updateMetrics(work, changes); } else { logger.info("Lost leadership before applying changes"); } } } else { balancingMetrics.reset(); } } catch (Exception e) { logger.error("Caught exception when running balancing job", e); } }