Viewing File: /opt/hc_python/lib/python3.12/site-packages/sentry_sdk/__pycache__/_span_batcher.cpython-312.pyc

�

_�*j} ����ddlZddlZddlZddlZddlZddlmZddlmZmZddl	m
Z
ddlmZddl
mZmZmZddlmZmZe
rddl	mZmZmZdd	lmZGd
�ded�Zy)
�N)�defaultdict)�datetime�timezone)�
TYPE_CHECKING)�Batcher)�Envelope�Item�
PayloadRef)�format_timestamp�serialize_attribute)�Any�Callable�Optional)�SpanJSONc��eZdZdZdZdZdZdZdZdZ							dd	�Z
dd
�Zdd�Zdd
�Z
edddefd��Zedd��Zddeddfd�Zy)�SpanBatcheri�i�iPg@�spanz)application/vnd.sentry.items.span.v2+json�returnNc���tt�|_td��|_||_||_d|_tj�|_	tj�|_tj�|_tj�|_t#�|_d|_d|_t+t,d�r<t/j0|j2��d�fd�}t-j4|��yy)Nc��y�Nr�r��G/opt/hc_python/lib/python3.12/site-packages/sentry_sdk/_span_batcher.py�<lambda>z&SpanBatcher.__init__.<locals>.<lambda>/s��rT�register_at_forkc�(����}|�|�yy)Nr)�method�
weak_resets �r�_reset_in_childz-SpanBatcher.__init__.<locals>._reset_in_childAs���#����%��H�&r)�after_in_child�rN)r�list�_span_buffer�
_running_size�
_capture_func�_record_lost_func�_running�	threading�Lock�_lock�local�_active�time�	monotonic�_last_full_flush�Event�_flush_event�set�_pending_flush�_flusher�_flusher_pid�hasattr�os�weakref�
WeakMethod�_reset_thread_stater)�self�capture_func�record_lost_funcr rs    @r�__init__zSpanBatcher.__init__$s����:E�T�9J���-8��-C���)���!1�����
��^�^�%��
�*3�/�/�*;���'+�~�~�'7���%�O�O�-���(+����6:��
�-1����2�)�*� �+�+�D�,D�,D�E�J�
�

����?�+rc�^�tt�|_td��|_d|_tj�|_tj�|_	tj�|_tj�|_t�|_d|_d|_y)Nc��yrrrrrrz1SpanBatcher._reset_thread_state.<locals>.<lambda>Js��rT)rr#r$r%r(r)r*r+r,r-r.r/r0r1r2r3r4r5r6)r<s rr;zSpanBatcher._reset_thread_stateHsv��'��-���(��3�����
��^�^�%��
� ���(��� $��� 0���%�O�O�-���!�e�����
� ��rc��d|j_|jr�tj�|jzdz}|j
j
|j|z��|j
j�|jd��tj�|jz
|j|zk\r)|j�tj�|_|jr��yy)NTg�������?)�timeout)�only_pending)r-�flagr(�random�FLUSH_WAIT_TIMEr2�wait�clear�_flushr.r/r0)r<�jitters  r�_flush_loopzSpanBatcher._flush_loopWs��� ������m�m��]�]�_�t�';�';�;�c�A�F����"�"�4�+?�+?�&�+H�"�I����#�#�%��K�K�T�K�*���� �4�#8�#8�8��'�'�&�0�1����
�(,���(8��%��m�mrrc�l�t|jdd�ryd|j_	|j�r|j�	d|j_y|j
5t
|j|d�}||jk\r/|jddd��	ddd�d|j_y|j|dj|�|j|dxx|j|�z
cc<|dz|jk\s|j|d|jk\r!|jj!|d�d}nd}ddd�r|j"j%�d|j_y#1swY�7xYw#d|j_wxYw)	NrEFT�trace_id�queue_overflowr�)�reason�
data_category�quantity)�getattrr-rE�_ensure_threadr5r+�lenr$�MAX_BEFORE_DROPr'�appendr%�_estimate_size�MAX_BEFORE_FLUSH�MAX_BYTES_BEFORE_FLUSHr4�addr2r3)r<r�size�notifys    rr\zSpanBatcher.addgs����4�<�<���/�� �����	&��&�&�(�D�M�M�,A��8!&�D�L�L��5����4�,�,�T�*�-=�>�?���4�/�/�/��*�*�/�&,�!"�+��
 ��4!&�D�L�L��!�!�!�$�z�"2�3�:�:�4�@��"�"�4�
�#3�4��8K�8K�D�8Q�Q�4��1�H�� 5� 5�5��)�)�$�z�*:�;��2�2�3��'�'�+�+�D��,<�=�!�F�"�F�+�.��!�!�%�%�'� %�D�L�L��5���4!&�D�L�L��s7�F �F �&AF�&F �BF�$F �F�F � F3�itemc���d}|jd�xsij�D]=}|dz
}t|t�r|t	|�z
}�'|t	t|��z
}�?|S)N���
attributes�2)�get�values�
isinstance�strrV)r_�estimate�values   rrYzSpanBatcher._estimate_size�sd��
���h�h�|�,�2��:�:�<�E���N�H��%��%��C��J�&���C��E�
�O�+��
=��rc��|j�D��cic]
\}}|dvs�||��}}}|jd�r5|dj�D��cic]\}}|t|���c}}|d<|S|d=|Scc}}wcc}}w)N)�
_segment_spanrb)�itemsrdr)r_�k�v�ress    r�_to_transport_formatz SpanBatcher._to_transport_format�s��� $�
�
��L����1��9K�0K�q�!�t���L��8�8�L�!�8<�\�8J�8P�8P�8R�!�8R�f�q�!��&�q�)�)�8R�!�C����
��L�!��
��M��!s�A4�A4�A:rDc���|j5|rt|j�}n#t|jj	��}|jj�|s
	ddd�yg}|D�]P}|jj
|�}|s�"|ddj�}tdt|�|j�D]�}t||jzt|��}tttjt j"��|d���}	|	j%t'|j(|j*d||z
it-dt||�D�
cgc]}
|j/||
���c}
d����	��|j1|	���|j|=|j2|=��S	ddd�D]}	|j5|	��ycc}
w#1swY�'xYw)
Nrrk)�sent_at�trace)�headers�
item_count�)�versionrl)�json)�type�content_typert�payload)r+r#r4r$�keysrIrd�_dynamic_sampling_context�rangerV�MAX_ENVELOPE_SIZE�minrrr�nowr�utc�add_itemr	�TYPE�CONTENT_TYPEr
rprXr%r&)r<rD�buckets�	envelopes�	bucket_id�spans�dsc�start�end�envelope�js           rrJzSpanBatcher._flush�s���
�Z�Z���t�2�2�3���t�0�0�5�5�7�8�����%�%�'����Z��I�$�	��)�)�-�-�i�8�����A�h��/�I�I�K��#�1�c�%�j�$�2H�2H�I�E��e�d�&<�&<�<�c�%�j�I�C�'�'7����X�\�\�8R�'S�%(�!� �H��%�%��!%���)-�):�):� ,�c�E�k�%�%/�/0�27�u�c�1B�.&�1B�A�)-�(A�(A�%��(�(K�1B�.&�&"�%�
��&�$�$�X�.�;J�>�%�%�i�0��&�&�y�1�S%��r"�H����x�(�"��.&�W�Z�s&�AG.�/C:G.�)G)�AG.�)G.�.G7)r=zCallable[[Envelope], None]r>zCallable[..., None]rNr")rrrN)r_rrr
)F)�__name__�
__module__�__qualname__rrZrWr[rGr�r�r?r;rLr\�staticmethod�intrYrp�boolrJrrrrrs��������O�,���O��D�>�L�"@�2�"@�0�"@�
�	"@�H
!�9� )&�V�
�Z�
�C�
��
��
��
�;)�4�;)�D�;)rrr)r8rFr)r.r9�collectionsrrr�typingr�sentry_sdk._batcherr�sentry_sdk.enveloperr	r
�sentry_sdk.utilsrrr
rr�sentry_sdk._typesrrrrr�<module>r�sH��	�
����#�'� �'�:�:�B��.�.�*�V)�'�*�%�V)r
Back to Directory File Manager