+
    j                    (   R t ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIH	t	 ^ RI
Ht RtRtRtRt]P                   ! R	4      tR
tRtR R ltR R ltR R ltR R lt]P0                  R R l4       tR R ltR R ltR R ltR R ltR R ltR# ) aD  Codex state-db backfill coordination.

A fresh CODEX_HOME rebuilds its state database before `codex app-server` answers
anything. The worker marks `backfill_state.status = 'running'` and codex gives up
after 30s when that mark is held by nobody, so a probe that kills the worker
leaves the account permanently unanswerable.
)annotationsN)Path)Iteratorg      @z.systray-backfill-workerz/proczstate_*.sqlitezstate_(\d+)\.sqlite$completerunningc                    V ^8  d   QhRRRR/# )   
codex_homer   returnzPath | None )formats   "E/home/user/overdeck-private-tests/subrouter-s5-systray/codex_state.py__annotate__r      s     2 2d 2{ 2    c                     V P                  \        4       Uu. uF  qP                  4       '       g   K  VNK  	  ppT'       g   R # \	        T\
        R7      # u upi   \         d     R # i ; i)N)key)glob_STATE_DB_GLOBis_fileOSErrormax_state_db_version)r	   path
candidatess   &  r   state_db_pathr      s\    '1~'FY'Ft,,.dd'F
Y z011 Z s&   A AAA A A,+A,c                    V ^8  d   QhRRRR/# r   r	   r   r
   boolr   )r   s   "r   r   r   '   s     6 6T 6d 6r   c                d    \        V 4      pVf   R# \        V4      pVRJ;'       d
    V\        8g  # )z?True while an existing state db reports an unfinished backfill.NF)r   _read_status	_COMPLETE)r	   db_pathstatuss   &  r   needs_warmupr#   '   s6    J'G'"F55&I"55r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r   0   s     5 54 5D 5r   c                *    \        \        V 4      4      # N)_worker_is_live_marker_pathr	   s   &r   warmup_in_progressr*   0   s    <
344r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r   4   s      t  r   c           
     h   \        V 4      pVe   \        \        V 4      4      '       d   R# \        V4      \        8w  d   R# \        V4      '       d   R#  \        P                  ! VRR7      p T;_uu_ 4        TP                  RR\        \        P                  ! 4       4      34       R R R 4       TP                  4        R#   \        P                   d     R# i ; i  + '       g   i     L>; i  \        P                   d     TP                  4        R# i ; i  TP                  4        i ; i)NFg      @)timeoutzAUPDATE backfill_state SET status = ?, updated_at = ? WHERE id = 1pendingT)r   r'   r(   r   _RUNNING_state_db_is_opensqlite3connectErrorexecuteinttimeclose)r	   r!   
connections   &  r   release_orphaned_claimr9   4   s    J'G/,z*BCCG(!!__Wc:
	ZSC		,-  	 ==  Z
 ==  	sZ   C /
C3 91C *C3 CC C0	+C3 /D 0C3 3DD DD D1c                    V ^8  d   QhRRRR/# )r   r	   r   r
   zIterator[None]r   )r   s   "r   r   r   N   s      T n r   c           	   #    "   \        V 4      p VP                  \        P                  ! 4        R 2RR7        Rx  \
        P                  ! \        4      ;_uu_ 4        TP                  4        RRR4       R#   \         d	    Rx   R# i ; i  + '       g   i     R# ; i  \
        P                  ! \        4      ;_uu_ 4        TP                  4        RRR4       i   + '       g   i     i ; i; i5i)
utf-8encodingN)r(   
write_textosgetpidr   
contextlibsuppressunlink)r	   markers   & r   warmup_claimrG   M   s     *%FRYY[M,w?  ))MMO *)   *))Z  ))MMO *)))sh   C7)A: B$ "C7B0
C7:B	C7BC7B!		C7$#C4C!		C4!C1,C44C7c                    V ^8  d   QhRRRR/# )r   r   r   r
   r5   r   )r   s   "r   r   r   \   s     0 0D 0S 0r   c                    \         P                  V P                  4      pV'       d   \        VP	                  ^4      4      # R# )   )_STATE_DB_VERSIONsearchnamer5   group)r   matchs   & r   r   r   \   s0    $$TYY/E"'3u{{1~/R/r   c                    V ^8  d   QhRRRR/# )r   r!   r   r
   z
str | Noner   )r   s   "r   r   r   a   s      $ : r   c                    \         P                  ! R V  R2RRR7      p TP                  R4      P	                  4       p TP                  4        Te   \        T^ ,          \        4      '       g   R# T^ ,          #   \         P                   d     R# i ; i  \         P                   d     TP                  4        R# i ; i  TP                  4        i ; i)zfile:z?mode=roTg      ?)urir-   Nz.SELECT status FROM backfill_state WHERE id = 1)r1   r2   r3   r4   fetchoner7   
isinstancestr)r!   r8   rows   &  r   r   r   a   s    __uWIX%>DRUV
  !QR[[] 	
{*SVS11q6M ==  ==  	s4   A< B <BBC-C  CC Cc                    V ^8  d   QhRRRR/# )r   r!   r   r
   r   r   )r   s   "r   r   r   q   s      t  r   c                V    V P                  4       p\        \        P                  ! 4       4      p \        P
                  ! \        4       Uu. uF$  q3P                  4       '       g   K  Y28w  g   K"  TNK&  	  ppT F]  p\        \        4      T,          R,          p \        TP                  4       4      pT F  p TP                  4       T8X  d     R# K  	  K_  	  R#   \         d     R# i ; iu upi   \         d     R# i ; i  \         d     K  i ; i  \         d     Kp  i ; i)zMA worker outside this process leaves no marker, but it does hold the db open.FfdT)resolver   rV   rA   rB   listdir_PROCisdigitr   listiterdir)r!   targetown_pidentrypidspidfd_direntriess   &       r   r0   r0   q   s
   " "))+G#%::e#4]#4%EL\#4] es"T)	6>>+,G E==?f, -   '   ^   		  sd   C C5 C0)C01C07C5 D;DC-,C-0C5 5DDDDD('D(c                    V ^8  d   QhRRRR/# )r   r	   r   r
   r   )r   s   "r   r   r      s     % %T %d %r   c                    V \         ,          # r&   )_MARKER_NAMEr)   s   &r   r(   r(      s    $$r   c                    V ^8  d   QhRRRR/# )r   rF   r   r
   r   r   )r   s   "r   r   r      s      D T r   c                    \        V P                  R R7      P                  4       4      p\        P                  ! 4       V P	                  4       P
                  ,
          pT\        8  d   R# T\        P                  ! 4       8X  d   R#  \        P                  ! T^ 4       R#   \        \        3 d     R# i ; i  \         d     R# i ; i)r=   r>   FT)r5   	read_textstripr6   statst_mtimer   
ValueErrorWARMUP_TIMEOUT_SrA   rB   kill)rF   re   ages   &  r   r'   r'      s    &""G"4::<=iikFKKM222 
biik
Q  Z    s$   AB" 	B: "B76B7:C	C	)__doc__
__future__r   rC   rA   rer1   r6   pathlibr   typingr   rr   rj   r]   r   compilerL   r    r/   r   r#   r*   r9   contextmanagerrG   r   r   r0   r(   r'   r   r   r   <module>r|      s    #  	 	     )!JJ67 	2652  0
 4%r   