§ Ù@ªjžãó¢—ddlZddlmZmZddlmZddlmZddlm Z m Z ddl m Z ddlmZddlmZGd „d e¦«ZGd „d e¦«ZdS) éN)ÚinsertÚselect)Ú sessionmaker)ÚLveStatsPlugin)Ú get_chunksÚ reboot_lock)Úuser)Úhistory)Úserverscó(—eZdZd„Zd„Zd„Zdd„ZdS)ÚDBSavercóp—tjd¦«|_d|_d|_d|_d|_dS)Nzplugin.DBSaverré<Ú localhost)ÚloggingÚ getLoggerÚlogÚnowÚconfigÚperiodÚ server_id©Úselfs ú‹/builddir/build/BUILDROOT/lve-stats-5.0.5-1.el8.x86_64/opt/cloudlinux/venv/lib/python3.11/site-packages/lvestats/plugins/generic/dbsaver.pyÚ__init__zDBSaver.__init__s5€ÝÔ$Ð%5Ñ6Ô6ˆŒØˆŒØˆŒ ؈Œ Ø$ˆŒˆˆócó —t| d|j¦«¦«|_| d|j¦«|_dS)NÚ db_timeoutr)ÚintÚgetrr©rrs rÚ set_configzDBSaver.set_configs<€Ý˜&Ÿ*š* \°4´;Ñ?Ô?Ñ@Ô@ˆŒ ØŸš K°´Ñ@Ô@ˆŒˆˆrcó>—tt¦«}ttg¦« tj|jk¦«}tt¦«}tj ¦« tj|jk¦«}t¦«5|j   ¦«}|  ¦«} |  |¦«}|j r}| ¦«} | �C| d|dkr0|  | d|di¦«¦«nG|  ||j|d¬¦«n#|  ||j|d¬¦«g} | di¦« ¦«D�]�\} } |  id| “dt't)| j¦«¦«“d| j“d| j“d | j“d | j“d t't)| j¦«¦«“d | j“d t't)| j¦«¦«“d| j“d| j“d| j“dt't)|j ¦«¦«“d|j“d| j!“dt't)| j"¦«¦«“d| j#“| j$t't)| j%¦«¦«| j&| j'| j(| j)t't)| j*¦«¦«dœ¥¦«�ŒƒtW| ¦«D]?} |  || ¦«Œ#tX$r| -||| ¦«‚wxYw| .¦«n##t^$r| 0¦«‚wxYw | 1¦«n#| 1¦«wxYw ddd¦«dS#1swxYwYdS)NÚ lve_versionÚ LVE_VERSION)rr$Ú lve_usageÚidÚcpuÚ cpu_limitÚ cpu_faultÚmepÚ mep_limitÚioÚio_limitÚmemÚ mem_limitÚ mem_faultÚ mep_faultÚcreatedrÚlmemphyÚmemphyÚ memphy_fault)ÚlnprocÚnprocÚ nproc_faultÚio_faultÚ iops_faultÚliopsÚiops)2rr rr ÚwhererÚ __table__ÚupdaterÚengineÚconnectÚbeginÚexecuteÚ returns_rowsÚfetchoneÚvaluesr ÚitemsÚappendrÚroundÚ cpu_usageÚlcpur*r+ÚlepÚio_usager-Ú mem_usageÚlmemr1r2rr4r5r6r7r8r9r:r;r<r=rÚ OverflowErrorÚ_try_executing_small_chunksÚcommitÚ ExceptionÚrollbackÚclose)rÚlve_dataÚsql_insert_queryÚsql_select_serversÚsql_insert_serversÚsql_update_serversÚconnÚtxÚrowÚresÚsql_insert_listÚlve_idÚvÚchunks rrDzDBSaver.execute sk€Ý!¥'™?œ?Ðå#¥W IÑ.Ô.×4Ò4µWÔ5FÈ$Ì.Ò5XÑYÔYÐÝ#¥G™_œ_ÐÝ$Ô.×5Ò5Ñ7Ô7×=Ò=½gÔ>OÐSWÔSaÒ>aÑbÔbÐå ‰]Œ]ð9 ð9 Ø”;×&Ò&Ñ(Ô(ˆDØ—’‘”ˆBð6 Ø—l’lÐ#5Ñ6Ô6�ØÔ#ðtØŸ,š,™.œ.�CØ�ؘ}Ô-°¸-Ô1HÒHÐHØ ŸLšLÐ);×)BÒ)BÀMÐS[Ð\iÔSjÐCkÑ)lÔ)lÑmÔmÐmøàŸ š Ð%7À4Ä>Ð_gÐhuÔ_v˜ ÑwÔwÐwÐwà—L’LÐ!3¸t¼~Ð[cÐdqÔ[r�LÑsÔsÐsà"$�Ø!)§¢¨k¸2Ñ!>Ô!>×!DÒ!DÑ!FÔ!Fðñ‘I�F˜AØ#×*Ò*ðØ  &ðà!¥3¥u¨Q¬[Ñ'9Ô'9Ñ#:Ô#:ðð(¨¬ðð(¨¬ð ð " 1¤5ð ð (¨¬ð ð!¥#¥e¨A¬JÑ&7Ô&7Ñ"8Ô"8ðð'¨¬ðð"¥3¥u¨Q¬[Ñ'9Ô'9Ñ#:Ô#:ðð(¨¬ðð(¨¬ðð(¨¬ðð&¥s­5°´©?¬?Ñ';Ô';ðð(¨¬ðð& q¤yðð %¥c­%°´©/¬/Ñ&:Ô&:ð!ð"+¨A¬Nð#ð$'(¤hÝ%(­¨q¬w©¬Ñ%8Ô%8Ø+,¬=Ø()¬ Ø*+¬,Ø%&¤WÝ$'­¨a¬f© ¬ Ñ$6Ô$6ð1ððñôðñõ:(¨Ñ8Ô8ðð�EðØŸ š Ð%5°uÑ=Ô=Ð=Ð=øÝ(ðððØ×8Ò8¸Ð?OÐQVÑWÔWÐWØðøøøð— ’ ‘ ” � � øÝð ð ð Ø— ’ ‘ ” � Øð øøøðð — ’ ‘ ” � � ø�— ’ ‘ ” � � øøø� ðs9 ð9 ð9 ñ9 ô9 ð9 ð9 ð9 ð9 ð9 ð9 ð9 øøøð9 ð9 ð9 ð9 ð9 ð9 sUÂ6.PÃ%I:N2Í M7Í6N2Í7#NÎN2Î1O+Î2 OÏO+ÏPÏ+PÐPÐPÐPé có´—t||¦«D]F} | ||¦«Œ#t$r |j d|¦«YdSwxYwdS)aÚTry executing smaller chunks so that it will be feasible to log the one causing error. In case when data contains value which is bigger than column type can handle, OveflowError is raised. :param sqlalchemy.engine.Connection conn: db engine :param sqlalchemy.sql.expression.Insert query: query to execute :param typing.List[typing.Dict] insert_params: list of params to insert :param int chunk_length: length of small chunks zOverflow detected in %sN)rrDrQrÚerror)rr\ÚqueryÚ insert_paramsÚsmall_chunk_sizeÚ small_chunks rrRz#DBSaver._try_executing_small_chunksbs€õ& mÐ5EÑFÔFð ð ˆKð Ø— ’ ˜U KÑ0Ô0Ð0Ð0øÝ ð ð ð Ø”—’Ð8¸+ÑFÔFÐFØ���ð øøøð ð s”+«%AÁAN)rd)Ú__name__Ú __module__Ú __qualname__rr"rDrR©rrr r s\€€€€€ð%ð%ð%ðAðAðAð@ð@ð@ðDðððððrr có&—eZdZd„Zd„Zd„Zd„ZdS)ÚDbUsernamesSavercó0—d|_d|_d|_dS)NiT)rrAÚenabledrs rrzDbUsernamesSaver.__init__ts€ØˆŒ ؈Œ ؈Œ ˆ ˆ rcóh—| dd¦« ¦«dk|_dS)NÚcollect_usernamesÚfalseÚtrue)r Úlowerrrr!s rr"zDbUsernamesSaver.set_configys-€Ø—z’zÐ"5°wÑ?Ô?×EÒEÑGÔGÈ6ÒQˆŒ ˆ ˆ rcó—||_dS)N)rA)rrAs rÚ set_db_enginezDbUsernamesSaver.set_db_engine|s €ØˆŒ ˆ ˆ rcóš—|jrÃt|j¬¦«¦«}|dD]s}t¦«}|\|_|_|_ | |¦«| ¦«ŒP#t$r|  ¦«YŒpwxYw|  ¦«|  ¦«dSdS)N)ÚbindÚusers) rrrrAÚ user_classÚuidÚ user_namerÚmergeÚflushrTrUrSrV)rrWÚsessionÚ user_infor s rrDzDbUsernamesSaver.executesÛ€Ø Œ<ð Ø4•l¨¬ Ð4Ñ4Ô4Ñ6Ô6ˆGØ% gÔ.ð 'ð '� Ý!‘|”|�Ø;DÑ8�”˜$œ.¨$¬.ð'Ø—M’M $Ñ'Ô'Ð'Ø—M’M‘O”O�O�Oøå ð'ð'ð'Ø×$Ò$Ñ&Ô&Ð&Ð&Ð&ð'øøøð �NŠNÑ Ô Ð Ø �MŠM‰OŒOˆOˆOˆOð ð sÁ)A=Á=BÂBN)rkrlrmrr"ryrDrnrrrprpssS€€€€€ðððð RðRðRððððððððrrp)rÚ sqlalchemyrrÚsqlalchemy.ormrÚlvestats.core.pluginrÚlvestats.lib.commons.funcrrÚ lvestats.ormr r}Úlvestats.orm.historyr Úlvestats.orm.serversr r rprnrrúr‹sðð€€€à%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ø'Ð'Ð'Ð'Ð'Ð'à/Ð/Ð/Ð/Ð/Ð/Ø=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ø+Ð+Ð+Ð+Ð+Ð+Ø(Ð(Ð(Ð(Ð(Ð(Ø(Ð(Ð(Ð(Ð(Ð(ð\ð\ð\ð\ð\ˆnñ\ô\ð\ð~ðððð�~ñôðððr