
    &`i                        d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm	c m
Z
 d dlmc mZ d dlmc mZ d dlmZ d dlmZ d dlmZmZ  ej        e          Z e
j        dd          Z G d	 d
ej                  ZdS )    N)ThreadPoolExecutor)Union)event_consts)monitor_events)async_loop_forevercreate_task)RAY_DASHBOARD_EVENT_AGENT_TPE_MAX_WORKERS   c                   x     e Zd Z fdZd Z eej                  d             Zd Z	d Z
ed             Z xZS )
EventAgentc                 $   t                                          |           t          j                            | j        j        d          | _        t          j        | j        d           d | _	        d | _
        t          j        t          j                  | _        |j        | _        d| _        d| _        t)          j                    | _        t/          t0          d          | _        t4                              d| j        j                   d S )NeventsT)exist_okr   event_agent_executor)max_workersthread_name_prefixz!Event agent cache buffer size: %s)super__init__ospathjoin_dashboard_agentlog_dir
_event_dirmakedirs_monitor_dashboard_http_addressasyncioQueuer   EVENT_AGENT_CACHE_SIZE_cached_events
gcs_client_gcs_clienttotal_event_reportedtotal_request_senttime	monotonicmodule_startedr   r	   	_executorloggerinfomaxsize)selfdashboard_agent	__class__s     {/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/dashboard/modules/event/event_agent.pyr   zEventAgent.__init__   s    )))',,t'<'DhOO
DOd333337 (,$%mL,OPP*5$%!"#"n..+A5
 
 

 	79L9TUUUUU    c                   K   	 | j         r| j         S 	 | j                            t          j                                        t          j        t          j                   d{V }|st          d          |
                                | _         | j         S # t          $ r t                              d           Y nw xY wt          j        d           d{V  )zz
        Lazily get the dashboard http address from InternalKV. If it's not set, sleep
        and retry forever.
        T)	namespacetimeoutNz/Dashboard http address not found in InternalKV.z"Get dashboard http address failed.r
   )r   r#   async_internal_kv_getray_constantsDASHBOARD_ADDRESSencodeKV_NAMESPACE_DASHBOARDdashboard_constsGCS_RPC_TIMEOUT_SECONDS
ValueErrordecode	Exceptionr*   	exceptionr   sleep)r-   dashboard_http_addresss     r0   _get_dashboard_http_addressz&EventAgent._get_dashboard_http_address2   s     
	#+ 433G/3/?/U/U!3::<<+B,D 0V 0 0 * * * * * *&
 . X$%VWWW/E/L/L/N/N,33 G G G  !EFFFFFG-"""""""""	#s   BB $B>=B>c                 4  K   |                                   d{V }| j                                         d{V }| xj        t	          |          z  c_        d}t          t          j                  D ]}	 t          	                    dt	          |                     | j
        j                            | d|          4 d{V 	 }|                                 ddd          d{V  n# 1 d{V swxY w Y   | xj        dz  c_         dS # t          $ r)}t                              d|            |}Y d}~d}~ww xY wt#          |          }t          j        }t                              d|d|         ||d         odz   |	           dS )
zReport events from cached events queue. Reconnect to dashboard if
        report failed. Log error after retry EVENT_AGENT_RETRY_TIMES.

        This method will never returns.
        NzReport %s events.z/report_events)jsonr
   z!Report event failed, retrying... zReport event failed: %sz...)exc_info)rB   r!   getr$   lenranger   EVENT_AGENT_RETRY_TIMESr*   debugr   http_sessionpostraise_for_statusr%   r>   warningstr#LOG_ERROR_EVENT_STRING_LENGTH_LIMITerror)	r-   rA   datalast_exception_responseedata_strlimits	            r0   report_eventszEventAgent.report_eventsH   sg      (,'G'G'I'I!I!I!I!I!I!I(,,........!!SYY.!!|;<< 	 	A#0#d))<<<0=BB-=== C   0 0 0 0 0 0 0 0 --///	0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 ''1,'' # # #F1FFGGG!"# 4yyH DELL)% HUVV$4$>?'      s=   7AD
C1D1
C;	;D>C;	?D
EEEc                    K   | j         dk    s| j        dk    rd S t          j                    | j        z
  }| j         | j        | j                                        |dS )Nr   )total_events_reportedTotal_report_request
queue_sizetotal_uptime)r$   r%   r&   r'   r(   r!   qsize)r-   elapseds     r0   get_internal_stateszEventAgent.get_internal_statesi   sk      $))T-D-I-IF.""T%88%)%>$($;-3355#	
 
 	
r1   c                     K   t           j         fd j                   _        t	          j                                                    d {V  d S )Nc                 R    t          j                            |                     S )N)r   r!   put)rR   r-   s    r0   <lambda>z EventAgent.run.<locals>.<lambda>y   s     T%8%<%<T%B%BCC r1   )r   r   r)   r   r   gatherrY   )r-   servers   ` r0   runzEventAgent.runu   s{      &OCCCCN
 
 n  
 
 	
 	
 	
 	
 	
 	
 	
 	
 	
r1   c                      dS )NF rj   r1   r0   is_minimal_modulezEventAgent.is_minimal_module   s    ur1   )__name__
__module____qualname__r   rB   r   r   #EVENT_AGENT_REPORT_INTERVAL_SECONDSrY   ra   rh   staticmethodrk   __classcell__)r/   s   @r0   r   r      s        V V V V V.# # #, HII  JI@

 

 



 

 

   \    r1   r   )r   loggingr   r&   concurrent.futuresr   typingr   ray._private.ray_constants_privater6   ray.dashboard.consts	dashboardconstsr:   ray.dashboard.utilsutilsdashboard_utilsray.dashboard.modules.eventr   'ray.dashboard.modules.event.event_utilsr   r   r   	getLoggerrl   r*   env_integerr	   DashboardAgentModuler   rj   r1   r0   <module>r      sJ     				  1 1 1 1 1 1       2 2 2 2 2 2 2 2 2 / / / / / / / / / - - - - - - - - - 4 4 4 4 4 4 B B B B B B ? ? ? ? ? ? ? ?		8	$	$ -FM,E/- - )
i i i i i5 i i i i ir1   