@@ -569,12 +569,8 @@ long inactiveVolume() {
569569 return inactiveCallCounter .successCount .get () + inactiveCallCounter .failureCount .get ();
570570 }
571571
572- long inactiveSuccessCount () {
573- return inactiveCallCounter .successCount .get ();
574- }
575-
576572 double successRate () {
577- return ((double ) inactiveSuccessCount ()) / inactiveVolume ();
573+ return ((double ) inactiveCallCounter . successCount . get ()) / inactiveVolume ();
578574 }
579575
580576 double failureRate () {
@@ -835,12 +831,13 @@ public void ejectOutliers(EndpointTrackerMap trackerMap, long ejectionTimeNanos)
835831 }
836832
837833 // If success rate is below the threshold or is zero, eject the address.
838- if (tracker .successRate () < requiredSuccessRate || tracker .inactiveSuccessCount () == 0L ) {
834+ double successRate = tracker .successRate ();
835+ if (successRate < requiredSuccessRate || successRate == 0.0 ) {
839836 logger .log (ChannelLogLevel .DEBUG ,
840837 "SuccessRate algorithm detected outlier: {0}. "
841838 + "Parameters: successRate={1}, mean={2}, stdev={3}, "
842839 + "requiredSuccessRate={4}" ,
843- tracker , tracker . successRate () , mean , stdev , requiredSuccessRate );
840+ tracker , successRate , mean , stdev , requiredSuccessRate );
844841 // Only eject some endpoints based on the enforcement percentage.
845842 if (new Random ().nextInt (100 ) < config .successRateEjection .enforcementPercentage ) {
846843 tracker .ejectSubchannels (ejectionTimeNanos );
0 commit comments