class_docstr: InstanceReconciler is responsible for reconciling the difference between
  node provider and instance storage. It is also responsible for handling
  failures.
code: def notify(self, events: List[InstanceUpdateEvent]) -> None:
      instance_ids = [
          event.instance_id
          for event in events
          if event.new_instance_status in {Instance.ALLOCATED}
      ]
      if instance_ids:
          self._failure_handling_executor.submit(
              self._handle_ray_failure, instance_ids
          )
  
file_path: ray/python/ray/autoscaler/v2/instance_manager/subscribers/reconciler.py
imports: import logging
  import threading
  from concurrent.futures import ThreadPoolExecutor
  from typing import List
  from ray.autoscaler.v2.instance_manager.instance_storage import InstanceStorage, InstanceUpdatedSubscriber
  from ray.autoscaler.v2.instance_manager.node_provider import NodeProvider
  from ray.core.generated.instance_manager_pb2 import Instance, InstanceUpdateEvent
label_desc: Use image node_id 3 for calling the InstanceReconciler obj's underlying member method code with example usage: obj.notify(events) without return types