code: def test_publish_and_subscribe_error_info(ray_start_regular):
      address_info = ray_start_regular
      gcs_server_addr = address_info["gcs_address"]
  
      subscriber = ray._raylet.GcsErrorSubscriber(
          address=gcs_server_addr
      )
      subscriber.subscribe()
  
      publisher = ray._raylet.GcsPublisher(address=gcs_server_addr)
      publisher.publish_error(b"aaa_id", "", "test error message 1")
      publisher.publish_error(b"bbb_id", "", "test error message 2")
  
      (key_id1, err1) = subscriber.poll()
      assert key_id1 == b"aaa_id"
      assert err1["error_message"] == "test error message 1"
      (key_id2, err2) = subscriber.poll()
      assert key_id2 == b"bbb_id"
      assert err2["error_message"] == "test error message 2"
  
      subscriber.close()
  
file_path: ray/python/ray/tests/test_gcs_pubsub.py
imports: import asyncio
  import sys
  import threading
  import re
  import ray
  from ray._private.gcs_pubsub import GcsAioPublisher, GcsAioErrorSubscriber, GcsAioLogSubscriber, GcsAioResourceUsageSubscriber
  from ray.core.generated.gcs_pb2 import ErrorTableData
  import pytest
label_desc: Use image node_id 1 for calling a global function with example usage: test_publish_and_subscribe_error_info(ray_start_regular) without return types