private void updateEligibility ( ) { checkState ( Thread . holdsLock ( root ) , "Must hold lock to update eligibility" ) ; synchronized ( root ) { if ( ! parent . isPresent ( ) ) { return ; } if ( isEligibleToStartNext ( ) ) { parent . get ( ) . addOrUpdateSubGroup ( this ) ; } else { parent . get ( ) . eligibleSubGroups . remove ( this ) ; lastStartMillis = 0 ; } parent . get ( ) . updateEligibility ( ) ; } }
This method must be called whenever the group s eligibility to run more queries may have changed .