§
    xÅj«"  ã                   óð   — d dl mZ d dlZd dlmZ d dlmZmZ erd dl mZm	Z	 d dl
mZ d dlmZmZ  G d„ d	e¦  «        Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z G d„ d¦  «        Z G d„ de¦  «        Zdd„ZdS )é    )ÚTYPE_CHECKINGN)ÚIntegration)Úcapture_internal_exceptionsÚensure_integration_enabled)ÚAnyÚOptional©ÚSparkContext)ÚEventÚHintc                   ó*   — e Zd ZdZedd„¦   «         ZdS )ÚSparkIntegrationÚsparkÚreturnNc                  ó"   — t          ¦   «          d S ©N)Ú_setup_sentry_tracing© ó    ú[C:\Projects\Historical\venv\Lib\site-packages\sentry_sdk/integrations/spark/spark_driver.pyÚ
setup_oncezSparkIntegration.setup_once   s   € åÑÔÐÐÐr   ©r   N)Ú__name__Ú
__module__Ú__qualname__Ú
identifierÚstaticmethodr   r   r   r   r   r      s7   € € € € € Ø€Jàð ð  ð  ñ „\ð ð  ð  r   r   r   c                  ó”   — ddl m}  | j        }|r8|                     d|j        ¦  «         |                     d|j        ¦  «         dS dS )zÑ
    Set properties in driver that propagate to worker processes, allowing for workers to have access to those properties.
    This allows worker integration to have access to app_name and application_id.
    r   r	   Úsentry_app_nameÚsentry_application_idN)Úpysparkr
   Ú_active_spark_contextÚsetLocalPropertyÚappNameÚapplicationId)r
   Úspark_contexts     r   Ú_set_app_propertiesr'      s~   € ð
 %Ð$Ð$Ð$Ð$Ð$à Ô6€MØð 
Ø×&Ò&ØØÔ!ñ	
ô 	
ð 	
ð 	×&Ò&Ø#ØÔ'ñ	
ô 	
ð 	
ð 	
ð 	
ð
ð 
r   Úscr
   c                 óª   — ddl m} | j        } ||¦  «         t          ¦   «         }| j                             ¦   «                              |¦  «         dS )zA
    Start java gateway server to add custom `SparkListener`
    r   )Úensure_callback_server_startedN)Úpyspark.java_gatewayr*   Ú_gatewayÚSentryListenerÚ_jscr(   ÚaddSparkListener)r(   r*   ÚgwÚlisteners       r   Ú_start_sentry_listenerr2   *   s^   € ð DÐCÐCÐCÐCÐCà	Œ€BØ"Ð" 2Ñ&Ô&Ð&ÝÑÔ€HØ„G‡J‚J�L„L×!Ò! (Ñ+Ô+Ð+Ð+Ð+r   c                 óT   ‡ — t          j        ¦   «         }|j        dˆ fd„¦   «         }d S )	NÚeventr   Úhintr   r   úOptional[Event]c                 óÌ  •— t          ¦   «         5  t          j        ¦   «                              t          ¦  «        €| cd d d ¦  «         S ‰j        €| cd d d ¦  «         S |                      di ¦  «                             d‰                     ¦   «         ¦  «         |                      di ¦  «                             d‰j         	                    d¦  «        ¦  «         | d                              d‰j         	                    d¦  «        ¦  «         | d                              d‰j         	                    d	¦  «        ¦  «         | d                              d
‰j         	                    d¦  «        ¦  «         | d                              d‰j
        ¦  «         | d                              d‰j        ¦  «         | d                              d‰j        ¦  «         | d                              d‰j        ¦  «         | d                              d‰j        ¦  «         |                      di ¦  «                             d‰j        ¦  «         d d d ¦  «         n# 1 swxY w Y   | S )NÚuserÚidÚtagszexecutor.idzspark.executor.idzspark-submit.deployModezspark.submit.deployModezdriver.hostzspark.driver.hostzdriver.portzspark.driver.portÚspark_versionÚapp_nameÚapplication_idÚmasterÚ
spark_homeÚextraÚweb_url)r   Ú
sentry_sdkÚ
get_clientÚget_integrationr   r"   Ú
setdefaultÚ	sparkUserÚ_confÚgetÚversionr$   r%   r>   Ú	sparkHomeÚuiWebUrl)r4   r5   r(   s     €r   Úprocess_eventz+_add_event_processor.<locals>.process_event9   s´  ø€ å(Ñ*Ô*ð 	Mð 	MÝÔ$Ñ&Ô&×6Ò6Õ7GÑHÔHÐPØð	Mð 	Mð 	Mð 	Mñ 	Mô 	Mð 	Mð 	Mð Ô'Ð/Øð	Mð 	Mð 	Mð 	Mñ 	Mô 	Mð 	Mð 	Mð ×Ò˜V RÑ(Ô(×3Ò3°D¸"¿,º,¹.¼.ÑIÔIÐIà×Ò˜V RÑ(Ô(×3Ò3Ø˜rœxŸ|š|Ð,?Ñ@Ô@ñô ð ð �&ŒM×$Ò$Ø)Ø”—’Ð6Ñ7Ô7ñô ð ð �&ŒM×$Ò$ ]°B´H·L²LÐATÑ4UÔ4UÑVÔVÐVØ�&ŒM×$Ò$ ]°B´H·L²LÐATÑ4UÔ4UÑVÔVÐVØ�&ŒM×$Ò$ _°b´jÑAÔAÐAØ�&ŒM×$Ò$ Z°´Ñ<Ô<Ð<Ø�&ŒM×$Ò$Ð%5°rÔ7GÑHÔHÐHØ�&ŒM×$Ò$ X¨r¬yÑ9Ô9Ð9Ø�&ŒM×$Ò$ \°2´<Ñ@Ô@Ð@à×Ò˜W bÑ)Ô)×4Ò4°YÀÄÑLÔLÐLð1	Mð 	Mð 	Mñ 	Mô 	Mð 	Mð 	Mð 	Mð 	Mð 	Mð 	Møøøð 	Mð 	Mð 	Mð 	Mð4 ˆs   �-IÁ
IÁG.IÉIÉ I)r4   r   r5   r   r   r6   )rB   Úget_isolation_scopeÚadd_event_processor)r(   ÚscoperL   s   `  r   Ú_add_event_processorrP   6   sG   ø€ ÝÔ*Ñ,Ô,€Eà
Ôðð ð ð ð ñ Ôðð ð r   c                 ó^   — t          | ¦  «         t          ¦   «          t          | ¦  «         d S r   )r2   r'   rP   )r(   s    r   Ú_activate_integrationrR   X   s0   € Ý˜2ÑÔÐÝÑÔÐÝ˜ÑÔÐÐÐr   c                  ó‚   ‡— ddl m}  | j        Št          t          ‰¦  «        	 	 	 	 	 	 	 	 dˆfd
„¦   «         }|| _        d S )Nr   r	   Úselfr
   Úargsr   Úkwargsr   úOptional[Any]c                 ó>   •—  ‰| g|¢R i |¤Ž}t          | ¦  «         |S r   )rR   )rT   rU   rV   ÚrvÚspark_context_inits       €r   Ú"_sentry_patched_spark_context_initzE_patch_spark_context_init.<locals>._sentry_patched_spark_context_initc   s8   ø€ ð  Ð Ð6 tÐ6Ð6Ð6¨vÐ6Ð6ˆÝ˜dÑ#Ô#Ð#Øˆ	r   )rT   r
   rU   r   rV   r   r   rW   )r!   r
   Ú_do_initr   r   )r
   r[   rZ   s     @r   Ú_patch_spark_context_initr]   ^   s„   ø€ Ø$Ð$Ð$Ð$Ð$Ð$à%Ô.ÐåÕ 0Ð2DÑEÔEðØðØ%*ðØ6;ðà	ðð ð ð ð ñ FÔEðð ?€LÔÐÐr   c                  óh   — ddl m}  | j        �t          | j        ¦  «         d S t	          ¦   «          d S )Nr   r	   )r!   r
   r"   rR   r]   r	   s    r   r   r   n   sE   € Ø$Ð$Ð$Ð$Ð$Ð$àÔ)Ð5Ý˜lÔ@ÑAÔAÐAØˆÝÑÔÐÐÐr   c                   óð   — e Zd Zd6d„Zd7d„Zd8d	„Zd9d„Zd:d„Zd;d„Zd<d„Z	d=d„Z
	 	 	 	 d>d„Zd?d„Zd@d„ZdAd„ZdBd„ZdCd„ZdDd!„ZdEd#„ZdFd%„ZdGd'„ZdHd)„ZdId+„ZdJd-„ZdKd/„ZdLd1„ZdMd3„Z G d4„ d5¦  «        ZdS )NÚSparkListenerÚapplicationEndr   r   Nc                 ó   — d S r   r   )rT   ra   s     r   ÚonApplicationEndzSparkListener.onApplicationEndx   ó   € Øˆr   ÚapplicationStartc                 ó   — d S r   r   )rT   re   s     r   ÚonApplicationStartz SparkListener.onApplicationStart{   rd   r   ÚblockManagerAddedc                 ó   — d S r   r   )rT   rh   s     r   ÚonBlockManagerAddedz!SparkListener.onBlockManagerAdded~   rd   r   ÚblockManagerRemovedc                 ó   — d S r   r   )rT   rk   s     r   ÚonBlockManagerRemovedz#SparkListener.onBlockManagerRemoved�   rd   r   ÚblockUpdatedc                 ó   — d S r   r   )rT   rn   s     r   ÚonBlockUpdatedzSparkListener.onBlockUpdated„   rd   r   ÚenvironmentUpdatec                 ó   — d S r   r   )rT   rq   s     r   ÚonEnvironmentUpdatez!SparkListener.onEnvironmentUpdate‡   rd   r   ÚexecutorAddedc                 ó   — d S r   r   )rT   rt   s     r   ÚonExecutorAddedzSparkListener.onExecutorAddedŠ   rd   r   ÚexecutorBlacklistedc                 ó   — d S r   r   )rT   rw   s     r   ÚonExecutorBlacklistedz#SparkListener.onExecutorBlacklisted�   rd   r   ÚexecutorBlacklistedForStagec                 ó   — d S r   r   )rT   rz   s     r   ÚonExecutorBlacklistedForStagez+SparkListener.onExecutorBlacklistedForStage�   s	   € ð 	ˆr   ÚexecutorMetricsUpdatec                 ó   — d S r   r   )rT   r}   s     r   ÚonExecutorMetricsUpdatez%SparkListener.onExecutorMetricsUpdate–   rd   r   ÚexecutorRemovedc                 ó   — d S r   r   )rT   r€   s     r   ÚonExecutorRemovedzSparkListener.onExecutorRemoved™   rd   r   ÚjobEndc                 ó   — d S r   r   )rT   rƒ   s     r   ÚonJobEndzSparkListener.onJobEndœ   rd   r   ÚjobStartc                 ó   — d S r   r   )rT   r†   s     r   Ú
onJobStartzSparkListener.onJobStartŸ   rd   r   ÚnodeBlacklistedc                 ó   — d S r   r   )rT   r‰   s     r   ÚonNodeBlacklistedzSparkListener.onNodeBlacklisted¢   rd   r   ÚnodeBlacklistedForStagec                 ó   — d S r   r   )rT   rŒ   s     r   ÚonNodeBlacklistedForStagez'SparkListener.onNodeBlacklistedForStage¥   rd   r   ÚnodeUnblacklistedc                 ó   — d S r   r   )rT   r�   s     r   ÚonNodeUnblacklistedz!SparkListener.onNodeUnblacklisted¨   rd   r   r4   c                 ó   — d S r   r   )rT   r4   s     r   ÚonOtherEventzSparkListener.onOtherEvent«   rd   r   ÚspeculativeTaskc                 ó   — d S r   r   )rT   r”   s     r   ÚonSpeculativeTaskSubmittedz(SparkListener.onSpeculativeTaskSubmitted®   rd   r   ÚstageCompletedc                 ó   — d S r   r   )rT   r—   s     r   ÚonStageCompletedzSparkListener.onStageCompleted±   rd   r   ÚstageSubmittedc                 ó   — d S r   r   )rT   rš   s     r   ÚonStageSubmittedzSparkListener.onStageSubmitted´   rd   r   ÚtaskEndc                 ó   — d S r   r   )rT   r�   s     r   Ú	onTaskEndzSparkListener.onTaskEnd·   rd   r   ÚtaskGettingResultc                 ó   — d S r   r   )rT   r    s     r   ÚonTaskGettingResultz!SparkListener.onTaskGettingResultº   rd   r   Ú	taskStartc                 ó   — d S r   r   )rT   r£   s     r   ÚonTaskStartzSparkListener.onTaskStart½   rd   r   ÚunpersistRDDc                 ó   — d S r   r   )rT   r¦   s     r   ÚonUnpersistRDDzSparkListener.onUnpersistRDDÀ   rd   r   c                   ó   — e Zd ZdgZdS )úSparkListener.Javaz1org.apache.spark.scheduler.SparkListenerInterfaceN)r   r   r   Ú
implementsr   r   r   ÚJavarª   Ã   s   € € € € € ØIÐJˆ
ˆ
ˆ
r   r¬   )ra   r   r   N)re   r   r   N)rh   r   r   N)rk   r   r   N)rn   r   r   N)rq   r   r   N)rt   r   r   N)rw   r   r   N)rz   r   r   N)r}   r   r   N)r€   r   r   N©rƒ   r   r   N©r†   r   r   N)r‰   r   r   N)rŒ   r   r   N)r�   r   r   N)r4   r   r   N)r”   r   r   N©r—   r   r   N©rš   r   r   N)r�   r   r   N)r    r   r   N)r£   r   r   N)r¦   r   r   N)r   r   r   rc   rg   rj   rm   rp   rs   rv   ry   r|   r   r‚   r…   rˆ   r‹   rŽ   r‘   r“   r–   r™   rœ   rŸ   r¢   r¥   r¨   r¬   r   r   r   r`   r`   w   s8  € € € € € ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðà%*ðð 
ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðKð Kð Kð Kð Kñ Kô Kð Kð Kð Kr   r`   c            	       óJ   — e Zd Z	 ddededdddfd„Zdd
„Zdd„Zdd„Zdd„ZdS )r-   NÚlevelÚmessageÚdatazOptional[dict[str, Any]]r   c                 óX   — t          j        ¦   «                              |||¬¦  «         d S )N©r²   r³   r´   )rB   rM   Úadd_breadcrumb)rT   r²   r³   r´   s       r   Ú_add_breadcrumbzSentryListener._add_breadcrumbÈ   s;   € õ 	Ô&Ñ(Ô(×7Ò7Ø ¨tð 	8ñ 	
ô 	
ð 	
ð 	
ð 	
r   r†   r   c                 óè   — t          j        ¦   «                              ¦   «          d                     |                     ¦   «         ¦  «        }|                      d|¬¦  «         t          ¦   «          d S )NzJob {} StartedÚinfo)r²   r³   )rB   rM   Úclear_breadcrumbsÚformatÚjobIdr¸   r'   )rT   r†   r³   s      r   rˆ   zSentryListener.onJobStartÒ   se   € ÝÔ&Ñ(Ô(×:Ò:Ñ<Ô<Ð<à"×)Ò)¨(¯.ª.Ñ*:Ô*:Ñ;Ô;ˆØ×Ò 6°7ÐÑ;Ô;Ð;ÝÑÔÐÐÐr   rƒ   c                 óˆ  — d}d}d|                      ¦   «                              ¦   «         i}|                      ¦   «                              ¦   «         dk    r*d}d                     |                     ¦   «         ¦  «        }n)d}d                     |                     ¦   «         ¦  «        }|                      |||¬¦  «         d S )	NÚ ÚresultÚJobSucceededrº   zJob {} EndedÚwarningzJob {} Failedr¶   )Ú	jobResultÚtoStringr¼   r½   r¸   )rT   rƒ   r²   r³   r´   s        r   r…   zSentryListener.onJobEndÙ   s´   € ØˆØˆØ˜&×*Ò*Ñ,Ô,×5Ò5Ñ7Ô7Ð8ˆà×ÒÑÔ×&Ò&Ñ(Ô(¨NÒ:Ð:ØˆEØ$×+Ò+¨F¯LªL©N¬NÑ;Ô;ˆGˆGàˆEØ%×,Ò,¨V¯\ª\©^¬^Ñ<Ô<ˆGà×Ò 5°'ÀÐÑEÔEÐEÐEÐEr   rš   c                 ó   — |                      ¦   «         }d                     |                     ¦   «         ¦  «        }d|                     ¦   «         i}t	          |¦  «        }|�||d<   |                      d||¬¦  «         t          ¦   «          d S )NzStage {} SubmittedÚnameÚ	attemptIdrº   r¶   )Ú	stageInfor¼   ÚstageIdrÆ   Ú_get_attempt_idr¸   r'   )rT   rš   Ú
stage_infor³   r´   Ú
attempt_ids         r   rœ   zSentryListener.onStageSubmittedç   s�   € Ø#×-Ò-Ñ/Ô/ˆ
Ø&×-Ò-¨j×.@Ò.@Ñ.BÔ.BÑCÔCˆà˜
ŸšÑ)Ô)Ð*ˆÝ$ ZÑ0Ô0ˆ
ØÐ!Ø *ˆD�Ñà×Ò 6°7ÀÐÑFÔFÐFÝÑÔÐÐÐr   r—   c                 óÚ  — ddl m} |                     ¦   «         }d}d}d|                     ¦   «         i}t	          |¦  «        }|�||d<   	 |                     ¦   «                              ¦   «         |d<   d                     |                     ¦   «         ¦  «        }d}n4# |$ r, d	                     |                     ¦   «         ¦  «        }d
}Y nw xY w|  	                    |||¬¦  «         d S )Nr   )ÚPy4JJavaErrorr¿   rÆ   rÇ   ÚreasonzStage {} FailedrÂ   zStage {} Completedrº   r¶   )
Úpy4j.protocolrÎ   rÈ   rÆ   rÊ   ÚfailureReasonrH   r¼   rÉ   r¸   )rT   r—   rÎ   rË   r³   r²   r´   rÌ   s           r   r™   zSentryListener.onStageCompletedó   s  € Ø/Ð/Ð/Ð/Ð/Ð/à#×-Ò-Ñ/Ô/ˆ
ØˆØˆà˜
ŸšÑ)Ô)Ð*ˆÝ$ ZÑ0Ô0ˆ
ØÐ!Ø *ˆD�Ñð	Ø'×5Ò5Ñ7Ô7×;Ò;Ñ=Ô=ˆD�‰NØ'×.Ò.¨z×/AÒ/AÑ/CÔ/CÑDÔDˆGØˆEˆEøØð 	ð 	ð 	Ø*×1Ò1°*×2DÒ2DÑ2FÔ2FÑGÔGˆGØˆEˆEˆEð	øøøð 	×Ò 5°'ÀÐÑEÔEÐEÐEÐEs   ÁAB Â.CÃCr   r®   r­   r°   r¯   )	r   r   r   Ústrr¸   rˆ   r…   rœ   r™   r   r   r   r-   r-   Ç   s²   € € € € € ð
 ,0ð	
ð 
àð
ð ð
ð )ð	
ð
 
ð
ð 
ð 
ð 
ðð ð ð ðFð Fð Fð Fð
ð 
ð 
ð 
ðFð Fð Fð Fð Fð Fr   r-   rË   r   úOptional[int]c                 óš   — 	 |                       ¦   «         S # t          $ r Y nw xY w	 |                      ¦   «         S # t          $ r Y nw xY wd S r   )rÇ   Ú	ExceptionÚattemptNumber)rË   s    r   rÊ   rÊ     sw   € ðØ×#Ò#Ñ%Ô%Ð%øÝð ð ð ØˆðøøøðØ×'Ò'Ñ)Ô)Ð)øÝð ð ð Øˆðøøøð ˆ4s   ‚ –
#¢#§; »
AÁAr   )r(   r
   r   N)rË   r   r   rÓ   )Útypingr   rB   Úsentry_sdk.integrationsr   Úsentry_sdk.utilsr   r   r   r   r!   r
   Úsentry_sdk._typesr   r   r   r'   r2   rP   rR   r]   r   r`   r-   rÊ   r   r   r   ú<module>rÛ      sÌ  ðØ  Ð  Ð  Ð  Ð  Ð  à Ð Ð Ð Ø /Ð /Ð /Ð /Ð /Ð /Ø TÐ TÐ TÐ TÐ TÐ TÐ TÐ Tàð .Ø$Ð$Ð$Ð$Ð$Ð$Ð$Ð$à$Ð$Ð$Ð$Ð$Ð$à-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ð ð  ð  ð  ð  �{ñ  ô  ð  ð
ð 
ð 
ð 
ð&	,ð 	,ð 	,ð 	,ðð ð ð ðDð ð ð ð?ð ?ð ?ð ?ð  ð  ð  ð  ðMKð MKð MKð MKð MKñ MKô MKð MKð`AFð AFð AFð AFð AF�]ñ AFô AFð AFðHð ð ð ð ð r   