HEX
Server: Apache
System: Linux insrv.serversdaddy.com 5.14.0-362.24.2.el9_3.x86_64 #1 SMP PREEMPT_DYNAMIC Sat Mar 30 14:11:54 EDT 2024 x86_64
User: jsaha (1066)
PHP: 8.3.6
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //proc/self/root/usr/lib/python3.9/site-packages/dnf/__pycache__/lock.cpython-39.opt-1.pyc
a

�!c��@s�ddlmZddlmZddlmZmZmZddlmZddl	m
Z
ddlZddl
ZddlZddlZddlZddlZddlZddlZddlZe�d�Zdd	�Zd
d�Zdd
�Zdd�Zdd�ZGdd�de�ZdS)�)�absolute_import)�unicode_literals)�ProcessLockError�ThreadLockError�	LockError)�_)�miscN�dnfcCs6tj��s2t�|�d����}tj�	t
��d|�}|S)N�utf-8�locks)r	�utilZ	am_i_root�hashlibZsha1�encode�	hexdigest�os�path�joinrZgetCacheDir)Zdir_Zhexdir�r�,/usr/lib/python3.9/site-packages/dnf/lock.py�
_fit_lock_dir&s
rcCsttj�t|�d�d|�S)Nzdownload_lock.pid�cachedir��ProcessLockrrrr�r�exit_on_lockrrr�build_download_lock/s�rcCsttj�t|�d�d|�S)Nzmetadata_lock.pid�metadatarrrrr�build_metadata_lock3s�rcCsttj�t|�d�d|�S)Nzrpmdb_lock.pidZRPMDBr)Z
persistdirrrrr�build_rpmdb_lock8s�rcCsttj�t|�d�d|�S)Nzlog_lock.pid�logr)Zlogdirrrrr�build_log_lock=s�r c@s>eZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�ZdS)rFcCs&||_d|_||_||_t��|_dS)Nr)�blocking�count�description�target�	threading�RLock�thread_lock)�selfr$r#r!rrr�__init__Cs
zProcessLock.__init__cCs2|jjdd�s d|j}t|��|jd7_dS)NF)r!z'%s already locked by a different thread�)r'�acquirer#rr")r(�msgrrr�_lock_threadJs
zProcessLock._lock_threadc
Cs�t�|jtjtjBd�}�zZzt�|tjtjB�WnLt	y�}z4|j
t
jkrjWYd}~Wt�|�dS�WYd}~n
d}~00t�
|d�}t|�dkr�t�|t|��d��|Wt�|�Szt|�}Wn(ty�td�|j}t|��Yn0||k�r|Wt�|�St�d|tj��sft�|dtj�t�|d�t�|t|��d��|Wt�|�S|Wt�|�St�|�0dS)Ni�����rr
z�Malformed lock file found: %s.
Ensure no other dnf/yum process is running and remove the lock file manually or run systemd-tmpfiles --remove dnf.conf.z
/proc/%d/stat)r�openr$�O_CREAT�O_RDWR�fcntlZflockZLOCK_EXZLOCK_NB�OSError�errnoZEWOULDBLOCK�close�read�len�write�strr�int�
ValueErrorrr�access�F_OK�lseek�SEEK_SET�	ftruncate)r(�pid�fd�eZold_pidr,rrr�	_try_lockPsL 
�
��

�
�
�zProcessLock._try_lockcCs|jd8_|j��dS�Nr*)r"r'�release)r(rrr�_unlock_threadzszProcessLock._unlock_threadcCs�tj�tj�|j��|��d}t��}|�	|�}||kr�|dkr�|j
sj|��d|j|f}t
||��||kr�td�|}t�|�|}t�d�|�	|�}q4dS)Nr.z%s already locked by %dz*Waiting for process with pid %d to finish.r*)r	rZ
ensure_dirrr�dirnamer$r-�getpidrEr!rHr#rr�logger�info�time�sleep)r(Zprev_pidZmy_pidrBr,rrr�	__enter__~s"



zProcessLock.__enter__cGs"|jdkrt�|j�|��dSrF)r"r�unlinkr$rH)r(Zexc_argsrrr�__exit__�s
zProcessLock.__exit__N)F)	�__name__�
__module__�__qualname__r)r-rErHrOrQrrrrrBs
*r)Z
__future__rrZdnf.exceptionsrrrZdnf.i18nrZdnf.yumrZdnf.loggingr	Zdnf.utilr5r3r
Zloggingrr%rMZ	getLoggerrKrrrrr �objectrrrrr�<module>s(