code: def test_pending_task_dependency_pinning(one_worker_100MiB):
      @ray.remote
      def pending(input1, input2):
          return
  
      # The object that is ray.put here will go out of scope immediately, so if
      # pending task dependencies aren't considered, it will be evicted before
      # the ray.get below due to the subsequent ray.puts that fill up the object
      # store.
      np_array = np.zeros(20 * 1024 * 1024, dtype=np.uint8)
      signal = SignalActor.remote()
      obj_ref = pending.remote(np_array, signal.wait.remote())
  
      for _ in range(2):
          ray.put(np.zeros(20 * 1024 * 1024, dtype=np.uint8))
  
      ray.get(signal.send.remote())
      ray.get(obj_ref)
  
imports: import copy
  import logging
  import os
  import sys
  import time
  import numpy
  import pytest
  import ray
  import ray._private.gcs_utils
  import ray.cluster_utils
  from ray._private.test_utils import SignalActor, convert_actor_state, kill_actor_and_wait_for_failure, put_object, wait_for_condition, skip_flaky_core_test_premerge
label_desc: Use image node_id 8 for calling a global function with example usage: test_pending_task_dependency_pinning(one_worker_100MiB) without return types