class_docstr: The StorageOrchestrator processes file transfer requests from Work that need file(s) from other Work.
  
  Args:
      app: A reference to the ``LightningApp`` which holds the copy request- and response queues for storage.
      request_queues: A dictionary with Queues connected to consumer Work. The Queue will contain transfer requests
          coming from a consumer Work.
      response_queues: A dictionary with Queues connected to consumer Work.
          The Queue will contain the confirmation responses to the consumer Work that files were transferred.
      copy_request_queues: A dictionary of Queues where each Queue connects to one Work. The orchestrator will
          put requests on this queue for the file-transfer thread to complete.
      copy_response_queues: A dictionary of Queues where each Queue connects to one Work. The queue is expected to
          contain the completion response from the file-transfer thread running in the Work process.
class_docstr_tok: ["The","StorageOrchestrator","processes","file","transfer","requests","from","Work","that","need","file","(","s",")","from","other","Work",".","Args",":","app",":","A","reference","to","the","``","LightningApp","``","which","holds","the","copy","request-","and","response","queues","for","storage",".","request_queues",":","A","dictionary","with","Queues","connected","to","consumer","Work",".","The","Queue","will","contain","transfer","requests","coming","from","a","consumer","Work",".","response_queues",":","A","dictionary","with","Queues","connected","to","consumer","Work",".","The","Queue","will","contain","the","confirmation","responses","to","the","consumer","Work","that","files","were","transferred",".","copy_request_queues",":","A","dictionary","of","Queues","where","each","Queue","connects","to","one","Work",".","The","orchestrator","will","put","requests","on","this","queue","for","the","file-transfer","thread","to","complete",".","copy_response_queues",":","A","dictionary","of","Queues","where","each","Queue","connects","to","one","Work",".","The","queue","is","expected","to","contain","the","completion","response","from","the","file-transfer","thread","running","in","the","Work","process","."]
code: def _validate_queues(self):
      assert (
          self.request_queues.keys()
          == self.response_queues.keys()
          == self.copy_request_queues.keys()
          == self.copy_response_queues.keys()
      )
  
file_path: pytorch-lightning/src/lightning/app/storage/orchestrator.py
imports: import os
  import threading
  import traceback
  from queue import Empty
  from threading import Thread
  from typing import TYPE_CHECKING, Dict, Optional, Union
  from lightning.app.core.queues import BaseQueue
  from lightning.app.storage.path import _filesystem, _path_to_work_artifact
  from lightning.app.storage.requests import _ExistsRequest, _ExistsResponse, _GetRequest, _GetResponse
  from lightning.app.utilities.app_helpers import Logger
  from lightning.app.utilities.enum import WorkStageStatus
label_desc: Use image node_id 3 for calling the StorageOrchestrator obj's underlying member method code with example usage: obj._validate_queues() without return types