public void onFail(){
  _lastFailTime=CurrentTime.currentTime();
  if (_firstFailTime == 0) {
    _firstFailTime=_lastFailTime;
  }
  _firstSuccessTime=0;
  toState(State.FAIL);
  long recoverTimeout=_dynamicRecoverTimeout.get();
  long nextRecoverTimeout=Math.min(recoverTimeout + 1000L,_recoverTimeout);
  _dynamicRecoverTimeout.compareAndSet(recoverTimeout,nextRecoverTimeout);
}

public void onFail ( ) { _lastFailTime = CurrentTime . currentTime ( ) ; if ( _firstFailTime == 0 ) { _firstFailTime = _lastFailTime ; } _firstSuccessTime = 0 ; toState ( State . FAIL ) ; long recoverTimeout = _dynamicRecoverTimeout . get ( ) ; long nextRecoverTimeout = Math . min ( recoverTimeout + 1000L , _recoverTimeout ) ; _dynamicRecoverTimeout . compareAndSet ( recoverTimeout , nextRecoverTimeout ) ; }
called when the connection fails .
