private boolean deQueueAction(ContainerPlacementRequestMessage requestMessage) {
    // Do not dequeue action wait for the in-flight action to complete
    if (checkIfActiveOrStandbyContainerHasActivePlacementAction(requestMessage)) {
      return false;
    }

    if (samzaApplicationState.failedProcessors.containsKey(requestMessage.getProcessorId())) {
      LOG.info("ContainerPlacement request: {} is de-queued, container with Processor ID: {} has exhausted all retries and is in failed state",
          requestMessage, requestMessage.getProcessorId());
      return true;
    }

    // Do not dequeue the action wait for the container to come to a running state
    if (!samzaApplicationState.runningProcessors.containsKey(requestMessage.getProcessorId())
        || samzaApplicationState.pendingProcessors.containsKey(requestMessage.getProcessorId())) {
      LOG.info("ContainerPlacement request: {} is en-queued because container is pending start", requestMessage);
      return false;
    }
    return true;
  }
These are specific scenarios in which a placement action should wait for existing action to complete before it is executed
1. If there is an placement request in progress on active container
2. If there is an placement request is progress on any of its standby container
3. If the container itself is pending a start

@param requestMessage container placement request message
@return true if action should be taken right now, false if it needs to wait to be taken in future
samza-core/src/main/java/org/apache/samza/clustermanager/ContainerManager.java