class_docstr: The class for filesystem-like external storage.
  
  Raises:
      ValueError: Raises directory path to
          spill objects doesn't exist.
class_docstr_tok: ["The","class","for","filesystem-like","external","storage",".","Raises",":","ValueError",":","Raises","directory","path","to","spill","objects","does","n't","exist","."]
code: def spill_objects(self, object_refs, owner_addresses) -> List[str]:
      if len(object_refs) == 0:
          return []
      # Choose the current directory path by round robin order.
      self._current_directory_index = (
          self._current_directory_index + 1
      ) % len(self._directory_paths)
      directory_path = self._directory_paths[
          self._current_directory_index
      ]
  
      filename = _get_unique_spill_filename(object_refs)
      url = f"{os.path.join(directory_path, filename)}"
      with open(url, "wb", buffering=self._buffer_size) as f:
          return self._write_multiple_objects(
              f, object_refs, owner_addresses, url
          )
  
imports: import abc
  import logging
  import os
  import random
  import shutil
  import time
  import urllib
  import uuid
  from collections import namedtuple
  from typing import IO, List, Optional, Tuple
  import ray
  from ray._private.ray_constants import DEFAULT_OBJECT_PREFIX
  from ray._raylet import ObjectRef
label_desc: Use image node_id 2 for calling the FileSystemStorage obj's underlying member method code with example usage: obj.spill_objects(object_refs, owner_addresses) and returns: list, self