code: private boolean updateMemoryWithYieldInfo()
      {
          long memorySize = getSizeInMemory();
          if (partial && maxPartialMemory.isPresent()) {
              updateMemory(memorySize);
              full = (memorySize > maxPartialMemory.getAsLong());
              return true;
          }
          // Operator/driver will be blocked on memory after we call setBytes.
          // If memory is not available, once we return, this operator will be blocked until memory is available.
          updateMemory(memorySize);
          // If memory is not available, inform the caller that we cannot proceed for allocation.
          return operatorContext.isWaitingForMemory().isDone();
      }
docs: The following implementation is a hybrid model, where the push model is going to call the pull model causing reentrancy