code: def check_version_info(redis_client):
      
      redis_reply = redis_client.get("VERSION_INFO")
  
      # Don't do the check if there is no version information in Redis. This
      # is to make it easier to do things like start the processes by hand.
      if redis_reply is None:
          return
  
      true_version_info = tuple(json.loads(ray.utils.decode(redis_reply)))
      version_info = _compute_version_info()
      if version_info != true_version_info:
          node_ip_address = ray.services.get_node_ip_address()
          error_message = ("Version mismatch: The cluster was started with:\n"
                           "    Ray: " + true_version_info[0] + "\n"
                           "    Python: " + true_version_info[1] + "\n"
                           "    Pyarrow: " + str(true_version_info[2]) + "\n"
                           "This process on node " + node_ip_address +
                           " was started with:" + "\n"
                           "    Ray: " + version_info[0] + "\n"
                           "    Python: " + version_info[1] + "\n"
                           "    Pyarrow: " + str(version_info[2]))
          if version_info[:2] != true_version_info[:2]:
              raise Exception(error_message)
          else:
              logger.warning(error_message)
docs: Check if various version info of this process is correct.
  
      This will be used to detect if workers or drivers are started using
      different versions of Python, pyarrow, or Ray. If the version
      information is not present in Redis, then no check is done.
  
      Args:
          redis_client: A client for the primary Redis shard.
  
      Raises:
          Exception: An exception is raised if there is a version mismatch.