
    Ih	                         d Z ddlmZ ddlmZ ddlmZ dZ ee      Z	e	j                  e	j                  e	j                  cZ
ZZ G d dej                        Zy	)
z-Worker <-> Worker Sync at startup (Bootstep).    )	bootsteps)
get_logger   )Events)Minglec                   h     e Zd ZdZd ZefZh dZd fd	Zd Z	d Z
d Zd Zd Zdd	Zd
 Zd Z xZS )r   zBootstep syncing state with neighbor workers.

    At startup, or upon consumer restart, this will:

    - Sync logical clocks.
    - Sync revoked tasks.

    >   amqpredisgcpubsubc                 t    | xr | j                  |j                        | _        t        |   |fd|i| y )Nwithout_mingle)compatible_transportappenabledsuper__init__)selfcr   kwargs	__class__s       V/var/www/html/planif/env/lib/python3.12/site-packages/celery/worker/consumer/mingle.pyr   zMingle.__init__   sA    ))Nd.G.G.N	8,	806	8    c                     |j                         5 }|j                  j                  | j                  v cd d d        S # 1 sw Y   y xY wN)connection_for_read	transportdriver_typecompatible_transports)r   r   conns      r   r   zMingle.compatible_transport    sA    $$& 	L$>>--1K1KK	L 	L 	Ls	   "=Ac                 &    | j                  |       y r   )sync)r   r   s     r   startzMingle.start$   s    		!r   c                 d   t        d       | j                  |      }|r{t        dt        |j                         D cg c]
  \  }}|s	| c}}             |j                         D cg c]  \  }}|r| j	                  |||       c}} t        d       y t        d       y c c}}w c c}}w )Nzmingle: searching for neighborszmingle: sync with %s nodeszmingle: sync completezmingle: all alone)info
send_hellolenitemson_node_reply)r   r   repliesreplyvaluenodenames         r   r!   zMingle.sync'   s    .///!$-Iu5eIJL %,MMO> 5u 8U3 >()$% J>s   
B&B&+B,c                 4   |j                   j                  j                  d|j                        }|j                  j
                  j                  }|j                  |j                  |j                        xs i }|j                  |j                  d        |S )Ng      ?)timeout
connection)r   controlinspectr/   
controllerstaterevokedhellohostname_datapop)r   r   r1   our_revokedr)   s        r   r%   zMingle.send_hello3   sn    %%--'''Mll((00--

K,=,=>D"AJJ%r   c                     t        d|       	  | j                  |fi | y # t        $ r  t        $ r}t	        d||       Y d }~y d }~ww xY w)Nz mingle: processing reply from %szmingle: sync with %s failed: %r)debugsync_with_nodeMemoryError	Exception	exception)r   r   r,   r*   excs        r   r(   zMingle.on_node_reply:   sU    0(;	HD+U+ 	 	H73GG	Hs   " AAAc                 L    | j                  ||       | j                  ||       y r   )on_clock_eventon_revoked_received)r   r   clockr4   r   s        r   r<   zMingle.sync_with_nodeC   s"    Au%  G,r   c                     |r&|j                   j                  j                  |       y |j                   j                  j                          y r   )r   rD   adjustforward)r   r   rD   s      r   rB   zMingle.on_clock_eventG   s-    %*5!0C0C0Er   c                 h    |r0|j                   j                  j                  j                  |       y y r   )r2   r3   r4   update)r   r   r4   s      r   rC   zMingle.on_revoked_receivedJ   s(    LL&&--g6 r   )F)NN)__name__
__module____qualname____doc__labelr   requiresr   r   r   r"   r!   r%   r(   r<   rB   rC   __classcell__)r   s   @r   r   r      sL     EyH98
L
&H-F7r   r   N)rM   celeryr   celery.utils.logr   eventsr   __all__rJ   loggerr;   r$   r?   StartStopStepr    r   r   <module>rX      sP    3  ' 
	H	v{{F4D4D tY?7Y$$ ?7r   