bg.ddlmZddlmZddlmZmZddlmZddl m Z m Z m Z ddl mZmZddlmZerddlmZmZdd lmZegd Zegd Zd gZd Zd ZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%GddeZ&dZ'dZ(dZ)dS))absolute_import)Hub)OPSPANDATA)_should_send_default_pii)SENSITIVE_DATA_SUBSTITUTEcapture_internal_exceptionslogger) Integration DidNotEnable) TYPE_CHECKING)AnySequence)Span) decrdecrbygetincrincrbypttlsetsetexsetnxttl)deltouchunlinkauth ic|g}t|D]\}}|tkrn|}|tvr|t J|dk}|r#|t |utr#|t ||t d|}|S)Nr ) enumerate _MAX_NUM_ARGSlower"_COMMANDS_INCLUDING_SENSITIVE_DATAappendrreprrjoin)nameargs command_partsiargname_lowarg_is_the_keycommands ]/opt/cloudlinux/venv/lib64/python3.11/site-packages/sentry_sdk/integrations/redis/__init__.py_get_safe_commandr2"sFMD//@@3 }   E::<< 9 9 9  !: ; ; ; a  @  c + + + +()) @$$T#YY////$$%>????hh}%%G Nc v|d||s|nd}|d|g}t|D]N\}}|tkrn=||} |t | d| ddO|dt ||ddS)Nredis.is_clusterFzredis.transactionrzredis.commands)count first_ten)set_tagr"_MAX_NUM_COMMANDSr&r2set_datalen) span is_clusterget_command_args_fnis_transaction command_stack transactioncommandsr,r-r0s r1_set_pipeline_datarD>s LL#Z000(2=..KLL$k222HM**DD3 ! ! ! E%%c**)'!*gabbkBBCCCCMM''!  r3c6|jfd}||_dS)Nc tj}|t |g|Ri|S|t jd5}t5t||j |j | tj ddddn #1swxYwY|g|Ri|cdddS#1swxYwYdS)Nzredis.pipeline.executeop descriptionredis)rcurrentget_integrationRedisIntegration start_spanrDB_REDISr rDrBrAr;r DB_SYSTEM)selfr*kwargshubr=r?r> old_executes r1sentry_patched_executez4patch_redis_pipeline..sentry_patched_execute[sk   / 0 0 8;t5d555f55 5 ^^{(@  6 ,.. ; ;"'$&  h0'::: ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;;t5d555f55 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s6C$>B." C.B2 2C5B2 6CCC)execute) pipeline_clsr>r?rUrTs `` @r1patch_redis_pipelinerXWs@&K6666666,2Lr3c|dS)Nrr0s r1_get_redis_command_argsr\ts 1:r3c|jSN)r*r[s r1_parse_rediscluster_commandr_ys <r3c`t|dt|jdt |j}t|dtn#t $rYnwxYw ddl}ddlm}m }||j j j ||j j jdS#t$rYdSwxYw)NFr>r)patch_redis_async_clientpatch_redis_async_pipeline)patch_redis_clientrXPipeliner\StrictPipelineAttributeError redis.asyncio%sentry_sdk.integrations.redis.asynciorbrcasyncioclient StrictRedis ImportError)rlrkstrict_pipelinerJrbrcs r1 _patch_redisro~s {u5555%1HIIIN / _e5LMMMM      B        ! !5!ABBB""5=#7#@AAAAA      s#A AAB B-,B-c ddl}t|jjdt|jjdt|jjddS#t $rYdSwxYw)NrFra) rb.clientsrdclients FanoutClient MappingClient RoutingClientrm)rbs r1 _patch_rbrwsG 2:2uEEEE2:3FFFF2:3FFFFFF      sA A'&A'c6 ddl}n#t$rYdSwxYwt|jdt |d|j}d|cxkrdkr&nn#|jj}t|jdn |jj }t|dtdS)NrTraVERSION)rr)rzrr) redisclusterrmrd RedisClustergetattr __version__pipelineStrictClusterPipelineStrictRedisClusterClusterPipelinerXr_)r{versionrWs r1_patch_redisclusterrs |0TBBBBlI|/GHHG7&&&&Y&&&&&#,B <:tLLLLL#,< t-HIIIIIs  c2eZdZdZefdZedZdS)rMrJc||_dSr^) max_data_size)rQrs r1__init__zRedisIntegration.__init__s*r3c ddlm}m}n#t$rt dwxYwt ||t  tdS#t$rtj dYdSwxYw)NrrlrkzRedis client not installedz4Error occurred while patching `rediscluster` library) rJrlrkrmr rorwr Exceptionr exceptionrs r1 setup_oncezRedisIntegration.setup_onces = 1 1 1 1 1 1 1 1 1 = = =;<< < = [&)))  U  ! ! ! ! ! U U U  S T T T T T T Us %AA98A9N)__name__ __module__ __qualname__ identifier_DEFAULT_MAX_DATA_SIZEr staticmethodrrZr3r1rMrMsPJ%;++++ U U\ U U Ur3rMcv|}t5t||}dddn #1swxYwY|Sr^)r r2)r)r*rIs r1_get_span_descriptionrsK $ & &44'd33 444444444444444 s .22c|tjd|d||r6|d||tj||rY|rY|}|t vs|tvr5t|dkr$|d|ddSdSdSdSdS)NrJr5z redis.commandr6z redis.keyr) r;rrPr9 DB_OPERATIONr$_SINGLE_KEY_COMMANDS_MULTI_KEY_COMMANDSr<)r=r>r)r*r.s r1_set_client_datarsMM($g...LL#Z000 2 _d+++ X*D111 //::<< , , , + + +D Q LLd1g . . . . . //// , +r3c2|jfd}||_dS)z` This function can be used to instrument custom redis client classes or subclasses. ctj}|t}|  ||g|Ri|St |g|R}|jot ||jk}|r"|d|jt dz dz}|tj |5}t| |g|R ||g|Ri|cdddS#1swxYwYdS)Nz...rG) rrKrLrMrrr<rNrrOr) rQr)r*rRrS integrationrIdata_should_be_truncatedr=r>old_execute_commands r1sentry_patched_execute_commandz:patch_redis_client..sentry_patched_execute_commandssk))*:;;  &&tTCDCCCFCC C+D84888   % V#k*:*:[=V*V ! $ X%&N (ACJJ(N&NORWWK ^^r{ ^ D D D T:t ;d ; ; ; ;&&tTCDCCCFCC D D D D D D D D D D D D D D D D D Ds(CCCN)execute_command)clsr>rrs ` @r1rdrdsC -DDDDDD*9Cr3N)* __future__r sentry_sdkrsentry_sdk.constsrrsentry_sdk.hubrsentry_sdk.utilsrr r sentry_sdk.integrationsr r sentry_sdk._typesr typingrrsentry_sdk.tracingr frozensetrrr%r#r:rr2rDrXr\r_rorwrrMrrrdrZr3r1rs!&&&&&&********333333 >=======++++++($$$$$$$$'''''' yWWW i : : :;; &" 82222:  BBB2 G G GJJJ0UUUUU{UUU0 / / / 99999r3