code: private void doPushState() throws PushStateException {
        if (pushStateFuture == null || pushStateFuture.isDone()) {
           Callable<?> task = createPushStateTask();
           pushStateFuture = executor.submit(task);
           try {
              waitForTaskToFinish(pushStateFuture, singletonConfiguration.pushStateTimeout(), TimeUnit.MILLISECONDS);
           } catch (Exception e) {
              throw new PushStateException("unable to complete in memory state push to cache loader", e);
           }
        } else {
           /* at the most, we wait for push state timeout value. if it push task finishes earlier, this call
  * will stop when the push task finishes, otherwise a timeout exception will be reported */
           awaitForPushToFinish(pushStateFuture, singletonConfiguration.pushStateTimeout(), TimeUnit.MILLISECONDS);
        }
     }
docs: Called when the SingletonStore discovers that the cache has become the coordinator and push in memory state has
  been enabled. It might not actually push the state if there's an ongoing push task running, in which case will
  wait for the push task to finish.