@Override
                public void onFailure(RuntimeException e) {
                    // we handle failures below after the request finishes. if the join completes
                    // after having been woken up, the exception is ignored and we will rejoin;
                    // this can be triggered when either join or sync request failed
                    synchronized (AbstractCoordinator.this) {
                        sensors.failedRebalanceSensor.record();
                    }
                }
Joins the group without starting the heartbeat thread.

If this function returns true, the state must always be in STABLE and heartbeat enabled.
If this function returns false, the state can be in one of the following:
 * UNJOINED: got error response but times out before being able to re-join, heartbeat disabled
 * PREPARING_REBALANCE: not yet received join-group response before timeout, heartbeat disabled
 * COMPLETING_REBALANCE: not yet received sync-group response before timeout, heartbeat enabled

Visible for testing.

@param timer Timer bounding how long this method can block
@throws KafkaException if the callback throws exception
@return true iff the operation succeeded
clients/src/main/java/org/apache/kafka/clients/consumer/internals/AbstractCoordinator.java