Ë
    S>{i#!  ã                   óÀ   — d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 e	rd dl
mZ d dl
mZ d dlmZmZ  G d	„ d
e«      Zd„ Zd„ Zd„ Z G d„ de«      Z G d„ de«      Zy)é    )Úconfigure_scope)ÚHub)ÚIntegration)Úcapture_internal_exceptions)ÚTYPE_CHECKING)ÚAny)ÚOptional)ÚEventÚHintc                   ó    — e Zd ZdZed„ «       Zy)ÚSparkIntegrationÚsparkc                  ó   — t        «        y ©N)Úpatch_spark_context_init© ó    úh/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sentry_sdk/integrations/spark/spark_driver.pyÚ
setup_oncezSparkIntegration.setup_once   s
   € ô 	!Õ"r   N)Ú__name__Ú
__module__Ú__qualname__Ú
identifierÚstaticmethodr   r   r   r   r   r      s   „ Ø€Jàñ#ó ñ#r   r   c                  óž   — ddl m}  | j                  }|r9|j                  d|j                  «       |j                  d|j
                  «       yy)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   ©ÚSparkContextÚsentry_app_nameÚsentry_application_idN)Úpysparkr   Ú_active_spark_contextÚsetLocalPropertyÚappNameÚapplicationId)r   Úspark_contexts     r   Ú_set_app_propertiesr&      sJ   € õ %à ×6Ñ6€MÙØ×&Ñ&Ð'8¸-×:OÑ:OÔPØ×&Ñ&Ø# ]×%@Ñ%@õ	
ð r   c                 óž   — ddl m} | j                  } ||«       t        «       }| j                  j                  «       j                  |«       y)zA
    Start java gateway server to add custom `SparkListener`
    r   )Úensure_callback_server_startedN)Úpyspark.java_gatewayr(   Ú_gatewayÚSentryListenerÚ_jscÚscÚaddSparkListener)r-   r(   ÚgwÚlisteners       r   Ú_start_sentry_listenerr1   (   s9   € õ
 Dà	�‰€BÙ" 2Ô&ÜÓ€HØ‡G�G‡J�JƒL×!Ñ! (Õ+r   c                  óB   ‡— ddl m}  | j                  Šˆfd„}|| _        y )Nr   r   c                 óþ   •‡ —  ‰‰ g|¢­i |¤Ž}t         j                  j                  t        «      €|S t	        ‰ «       t        «        t        «       5 }|j                  ˆ fd„«       }d d d «       |S # 1 sw Y   |S xY w)Nc                 ó  •— t        «       5  t        j                  j                  t        «      €| cd d d «       S | j                  di «      j                  d‰j                  «       «       | j                  di «      j                  d‰j                  j                  d«      «       | d   j                  d‰j                  j                  d«      «       | d   j                  d‰j                  j                  d	«      «       | d   j                  d
‰j                  j                  d«      «       | d   j                  d‰j                  «       | d   j                  d‰j                  «       | d   j                  d‰j                  «       | d   j                  d‰j                  «       | d   j                  d‰j                  «       | j                  di «      j                  d‰j                  «       d d d «       | S # 1 sw Y   | S xY w)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   r   ÚcurrentÚget_integrationr   Ú
setdefaultÚ	sparkUserÚ_confÚgetÚversionr#   r$   r;   Ú	sparkHomeÚuiWebUrl)ÚeventÚhintÚselfs     €r   Úprocess_eventz[patch_spark_context_init.<locals>._sentry_patched_spark_context_init.<locals>.process_eventG   s¹  ø€ ô 1Ó2ñ WÜ—{‘{×2Ñ2Ô3CÓDÐLØ$÷Wñ Wð ×$Ñ$ V¨RÓ0×;Ñ;¸DÀ$Ç.Á.ÓBRÔSà×$Ñ$ V¨RÓ0×;Ñ;Ø% t§z¡z§~¡~Ð6IÓ'Jôð ˜&‘M×,Ñ,Ø1ØŸ
™
Ÿ™Ð'@ÓAôð ˜&‘M×,Ñ,Ø% t§z¡z§~¡~Ð6IÓ'Jôð ˜&‘M×,Ñ,Ø% t§z¡z§~¡~Ð6IÓ'Jôð ˜&‘M×,Ñ,¨_¸d¿l¹lÔKØ˜&‘M×,Ñ,¨Z¸¿¹ÔFØ˜&‘M×,Ñ,Ð-=¸t×?QÑ?QÔRØ˜&‘M×,Ñ,¨X°t·{±{ÔCØ˜&‘M×,Ñ,¨\¸4¿>¹>ÔJà×$Ñ$ W¨bÓ1×<Ñ<¸YÈÏÉÔV÷3Wð6 �÷7Wð6 �ús   Œ%H»F<HÈH)r   r?   r@   r   r1   r&   r   Úadd_event_processor)rJ   ÚargsÚkwargsÚinitÚscoperK   Úspark_context_inits   `     €r   Ú"_sentry_patched_spark_context_initzDpatch_spark_context_init.<locals>._sentry_patched_spark_context_init;   s�   ù€ á! $Ð8¨Ò8°Ñ8ˆä�;‰;×&Ñ&Ô'7Ó8Ð@ØˆKä˜tÔ$ÜÔäÓð  	 %à×&Ñ&óó 'ð÷ 	ðD ˆ÷E 	ðD ˆús   ÁA2Á2A<)r    r   Ú_do_init)r   rR   rQ   s     @r   r   r   5   s"   ø€ å$à%×.Ñ.Ðô,ð\ ?€LÕr   c                   ó°   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z G d„ d«      Zy)ÚSparkListenerc                  ó   — y r   r   )rJ   ÚapplicationEnds     r   ÚonApplicationEndzSparkListener.onApplicationEndm   ó   € àr   c                  ó   — y r   r   )rJ   ÚapplicationStarts     r   ÚonApplicationStartz SparkListener.onApplicationStartq   rY   r   c                  ó   — y r   r   )rJ   ÚblockManagerAddeds     r   ÚonBlockManagerAddedz!SparkListener.onBlockManagerAddedu   rY   r   c                  ó   — y r   r   )rJ   ÚblockManagerRemoveds     r   ÚonBlockManagerRemovedz#SparkListener.onBlockManagerRemovedy   rY   r   c                  ó   — y r   r   )rJ   ÚblockUpdateds     r   ÚonBlockUpdatedzSparkListener.onBlockUpdated}   rY   r   c                  ó   — y r   r   )rJ   ÚenvironmentUpdates     r   ÚonEnvironmentUpdatez!SparkListener.onEnvironmentUpdate�   rY   r   c                  ó   — y r   r   )rJ   ÚexecutorAddeds     r   ÚonExecutorAddedzSparkListener.onExecutorAdded…   rY   r   c                  ó   — y r   r   )rJ   ÚexecutorBlacklisteds     r   ÚonExecutorBlacklistedz#SparkListener.onExecutorBlacklisted‰   rY   r   c                  ó   — y r   r   )rJ   ÚexecutorBlacklistedForStages     r   ÚonExecutorBlacklistedForStagez+SparkListener.onExecutorBlacklistedForStage�   s   € ð 	r   c                  ó   — y r   r   )rJ   ÚexecutorMetricsUpdates     r   ÚonExecutorMetricsUpdatez%SparkListener.onExecutorMetricsUpdate“   rY   r   c                  ó   — y r   r   )rJ   ÚexecutorRemoveds     r   ÚonExecutorRemovedzSparkListener.onExecutorRemoved—   rY   r   c                  ó   — y r   r   )rJ   ÚjobEnds     r   ÚonJobEndzSparkListener.onJobEnd›   rY   r   c                  ó   — y r   r   )rJ   ÚjobStarts     r   Ú
onJobStartzSparkListener.onJobStartŸ   rY   r   c                  ó   — y r   r   )rJ   ÚnodeBlacklisteds     r   ÚonNodeBlacklistedzSparkListener.onNodeBlacklisted£   rY   r   c                  ó   — y r   r   )rJ   ÚnodeBlacklistedForStages     r   ÚonNodeBlacklistedForStagez'SparkListener.onNodeBlacklistedForStage§   rY   r   c                  ó   — y r   r   )rJ   ÚnodeUnblacklisteds     r   ÚonNodeUnblacklistedz!SparkListener.onNodeUnblacklisted«   rY   r   c                  ó   — y r   r   )rJ   rH   s     r   ÚonOtherEventzSparkListener.onOtherEvent¯   rY   r   c                  ó   — y r   r   )rJ   ÚspeculativeTasks     r   ÚonSpeculativeTaskSubmittedz(SparkListener.onSpeculativeTaskSubmitted³   rY   r   c                  ó   — y r   r   )rJ   ÚstageCompleteds     r   ÚonStageCompletedzSparkListener.onStageCompleted·   rY   r   c                  ó   — y r   r   )rJ   ÚstageSubmitteds     r   ÚonStageSubmittedzSparkListener.onStageSubmitted»   rY   r   c                  ó   — y r   r   )rJ   ÚtaskEnds     r   Ú	onTaskEndzSparkListener.onTaskEnd¿   rY   r   c                  ó   — y r   r   )rJ   ÚtaskGettingResults     r   ÚonTaskGettingResultz!SparkListener.onTaskGettingResultÃ   rY   r   c                  ó   — y r   r   )rJ   Ú	taskStarts     r   ÚonTaskStartzSparkListener.onTaskStartÇ   rY   r   c                  ó   — y r   r   )rJ   ÚunpersistRDDs     r   ÚonUnpersistRDDzSparkListener.onUnpersistRDDË   rY   r   c                   ó   — e Zd ZdgZy)úSparkListener.Javaz1org.apache.spark.scheduler.SparkListenerInterfaceN)r   r   r   Ú
implementsr   r   r   ÚJavarŸ   Ï   s
   „ ØIÐJ‰
r   r¡   N)r   r   r   rX   r\   r_   rb   re   rh   rk   rn   rq   rt   rw   rz   r}   r€   rƒ   r†   rˆ   r‹   rŽ   r‘   r”   r—   rš   r�   r¡   r   r   r   rU   rU   l   s†   „ òòòòòòòòòòòòòòòòòòòòòòòò÷Kò Kr   rU   c                   ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)r+   c                 ó.   — t         j                  | _        y r   )r   r?   Úhub)rJ   s    r   Ú__init__zSentryListener.__init__Ô   s   € ä—;‘;ˆ�r   c                 ó�   — dj                  |j                  «       «      }| j                  j                  d|¬«       t	        «        y )NzJob {} StartedÚinfo)ÚlevelÚmessage)ÚformatÚjobIdr¤   Úadd_breadcrumbr&   )rJ   r|   r©   s      r   r}   zSentryListener.onJobStartØ   s6   € à"×)Ñ)¨(¯.©.Ó*:Ó;ˆØ�‰×Ñ f°gÐÔ>ÜÕr   c                 óP  — d}d}d|j                  «       j                  «       i}|j                  «       j                  «       dk(  r"d}dj                  |j                  «       «      }n!d}dj                  |j                  «       «      }| j                  j                  |||¬«       y )	NÚ ÚresultÚJobSucceededr§   zJob {} EndedÚwarningzJob {} Failed©r¨   r©   Údata)Ú	jobResultÚtoStringrª   r«   r¤   r¬   )rJ   ry   r¨   r©   r³   s        r   rz   zSentryListener.onJobEndÞ   s‘   € àˆØˆØ˜&×*Ñ*Ó,×5Ñ5Ó7Ð8ˆà×ÑÓ×&Ñ&Ó(¨NÒ:ØˆEØ$×+Ñ+¨F¯L©L«NÓ;‰GàˆEØ%×,Ñ,¨V¯\©\«^Ó<ˆGà�‰×Ñ e°WÀ4ÐÕHr   c                 óô   — |j                  «       }dj                  |j                  «       «      }|j                  «       |j	                  «       dœ}| j
                  j                  d||¬«       t        «        y )NzStage {} Submitted©Ú	attemptIdÚnamer§   r²   )Ú	stageInforª   ÚstageIdr¸   r¹   r¤   r¬   r&   )rJ   r�   Ú
stage_infor©   r³   s        r   r‘   zSentryListener.onStageSubmittedí   sb   € à#×-Ñ-Ó/ˆ
Ø&×-Ñ-¨j×.@Ñ.@Ó.BÓCˆØ'×1Ñ1Ó3¸Z¿_¹_Ó=NÑOˆØ�‰×Ñ f°gÀDÐÔIÜÕr   c                 ó”  — ddl m} |j                  «       }d}d}|j                  «       |j	                  «       dœ}	 |j                  «       j                  «       |d<   dj                  |j                  «       «      }d}| j                  j                  |||¬
«       y # |$ r$ dj                  |j                  «       «      }d	}Y ŒGw xY w)Nr   )ÚPy4JJavaErrorr®   r·   ÚreasonzStage {} Failedr±   zStage {} Completedr§   r²   )Úpy4j.protocolr¾   rº   r¸   r¹   ÚfailureReasonrD   rª   r»   r¤   r¬   )rJ   r�   r¾   r¼   r©   r¨   r³   s          r   rŽ   zSentryListener.onStageCompletedõ   s¿   € å/à#×-Ñ-Ó/ˆ
ØˆØˆØ'×1Ñ1Ó3¸Z¿_¹_Ó=NÑOˆð	Ø'×5Ñ5Ó7×;Ñ;Ó=ˆD�‰NØ'×.Ñ.¨z×/AÑ/AÓ/CÓDˆGØˆEð
 	�‰×Ñ e°WÀ4ÐÕHøð	 ò 	Ø*×1Ñ1°*×2DÑ2DÓ2FÓGˆGØŠEð	ús   ½AB Â&CÃCN)r   r   r   r¥   r}   rz   r‘   rŽ   r   r   r   r+   r+   Ó   s   „ òòòIòóIr   r+   N)Ú
sentry_sdkr   Úsentry_sdk.hubr   Úsentry_sdk.integrationsr   Úsentry_sdk.utilsr   Úsentry_sdk._typesr   Útypingr   r	   r
   r   r   r&   r1   r   ÚobjectrU   r+   r   r   r   ú<module>rÉ      s[   ðÝ &Ý Ý /Ý 8å +áÝÝç-ô#�{ô #ò
ò 
,ò4?ôndK�Fô dKôN4I�]õ 4Ir   