@@ -56,6 +56,10 @@ static lcb_error_t proc_get_results(pcbc_bucket_t *bucket, zval *return_value, o
5656{
5757 opcookie_get_res * res ;
5858 lcb_error_t err = LCB_SUCCESS ;
59+ #ifdef LCB_TRACING
60+ lcbtrace_SPAN * parent = cookie -> span ;
61+ lcbtrace_TRACER * tracer = lcb_get_tracer (bucket -> conn -> lcb );
62+ #endif
5963
6064 // If we are not mapped, we need to throw any op errors
6165 if (is_mapped == 0 ) {
@@ -68,8 +72,23 @@ static lcb_error_t proc_get_results(pcbc_bucket_t *bucket, zval *return_value, o
6872 zval * doc = bop_get_return_doc (return_value , res -> key , res -> key_len , is_mapped TSRMLS_CC );
6973
7074 if (res -> header .err == LCB_SUCCESS ) {
75+ #ifdef LCB_TRACING
76+ lcbtrace_SPAN * span = NULL ;
77+ if (parent ) {
78+ lcbtrace_REF ref ;
79+ ref .type = LCBTRACE_REF_CHILD_OF ;
80+ ref .span = parent ;
81+ span = lcbtrace_span_start (tracer , LCBTRACE_OP_RESPONSE_DECODING , LCBTRACE_NOW , & ref );
82+ lcbtrace_span_add_tag_str (span , LCBTRACE_TAG_COMPONENT , pcbc_client_string );
83+ }
84+ #endif
7185 pcbc_document_init_decode (doc , bucket , res -> bytes , res -> bytes_len , res -> flags , res -> datatype , res -> cas ,
7286 NULL TSRMLS_CC );
87+ #ifdef LCB_TRACING
88+ if (span ) {
89+ lcbtrace_span_finish (span , LCBTRACE_NOW );
90+ }
91+ #endif
7392 } else {
7493 pcbc_document_init_error (doc , & res -> header TSRMLS_CC );
7594 }
@@ -96,10 +115,21 @@ void pcbc_bucket_get(pcbc_bucket_t *obj, pcbc_pp_state *pp_state, pcbc_pp_id *id
96115 int ii , ncmds , nscheduled ;
97116 opcookie * cookie ;
98117 lcb_error_t err = LCB_SUCCESS ;
118+ #ifdef LCB_TRACING
119+ lcbtrace_TRACER * tracer = NULL ;
120+ #endif
99121
100122 ncmds = pcbc_pp_keycount (pp_state );
101123 cookie = opcookie_init ();
102124
125+ #ifdef LCB_TRACING
126+ tracer = lcb_get_tracer (obj -> conn -> lcb );
127+ if (tracer ) {
128+ cookie -> span = lcbtrace_span_start (tracer , "get" , 0 , NULL );
129+ lcbtrace_span_add_tag_str (cookie -> span , LCBTRACE_TAG_COMPONENT , pcbc_client_string );
130+ }
131+ #endif
132+
103133 nscheduled = 0 ;
104134 for (ii = 0 ; pcbc_pp_next (pp_state ); ++ ii ) {
105135 lcb_CMDGET cmd = {0 };
@@ -115,6 +145,11 @@ void pcbc_bucket_get(pcbc_bucket_t *obj, pcbc_pp_state *pp_state, pcbc_pp_id *id
115145 }
116146
117147 LCB_CMD_SET_KEY (& cmd , id -> str , id -> len );
148+ #ifdef LCB_TRACING
149+ if (cookie -> span ) {
150+ LCB_CMD_SET_TRACESPAN (& cmd , cookie -> span );
151+ }
152+ #endif
118153 if (expiry && * expiry ) {
119154 cmd .lock = 0 ;
120155 cmd .exptime = Z_LVAL_P (* expiry );
@@ -139,6 +174,11 @@ void pcbc_bucket_get(pcbc_bucket_t *obj, pcbc_pp_state *pp_state, pcbc_pp_id *id
139174 err = proc_get_results (obj , return_value , cookie , pcbc_pp_ismapped (pp_state ) TSRMLS_CC );
140175 }
141176
177+ #ifdef LCB_TRACING
178+ if (cookie -> span ) {
179+ lcbtrace_span_finish (cookie -> span , LCBTRACE_NOW );
180+ }
181+ #endif
142182 opcookie_destroy (cookie );
143183
144184 if (err != LCB_SUCCESS ) {
@@ -208,6 +248,9 @@ PHP_METHOD(Bucket, getFromReplica)
208248 zval * zindex , * zgroupid ;
209249 opcookie * cookie ;
210250 lcb_error_t err = LCB_SUCCESS ;
251+ #ifdef LCB_TRACING
252+ lcbtrace_TRACER * tracer = NULL ;
253+ #endif
211254
212255 // Note that groupid is experimental here and should not be used.
213256 if (pcbc_pp_begin (ZEND_NUM_ARGS () TSRMLS_CC , & pp_state , "id||index,groupid" , & id , & zindex , & zgroupid ) != SUCCESS ) {
@@ -217,6 +260,13 @@ PHP_METHOD(Bucket, getFromReplica)
217260
218261 ncmds = pcbc_pp_keycount (& pp_state );
219262 cookie = opcookie_init ();
263+ #ifdef LCB_TRACING
264+ tracer = lcb_get_tracer (obj -> conn -> lcb );
265+ if (tracer ) {
266+ cookie -> span = lcbtrace_span_start (tracer , "get_from_replica" , 0 , NULL );
267+ lcbtrace_span_add_tag_str (cookie -> span , LCBTRACE_TAG_COMPONENT , pcbc_client_string );
268+ }
269+ #endif
220270
221271 nscheduled = 0 ;
222272 for (ii = 0 ; pcbc_pp_next (& pp_state ); ++ ii ) {
@@ -226,6 +276,11 @@ PHP_METHOD(Bucket, getFromReplica)
226276 PCBC_CHECK_ZVAL_STRING (zgroupid , "groupid must be a string" );
227277
228278 LCB_CMD_SET_KEY (& cmd , id .str , id .len );
279+ #ifdef LCB_TRACING
280+ if (cookie -> span ) {
281+ LCB_CMD_SET_TRACESPAN (& cmd , cookie -> span );
282+ }
283+ #endif
229284 if (zindex ) {
230285 cmd .index = Z_LVAL_P (zindex );
231286 if (cmd .index >= 0 ) {
@@ -252,6 +307,11 @@ PHP_METHOD(Bucket, getFromReplica)
252307 err = proc_get_results (obj , return_value , cookie , pcbc_pp_ismapped (& pp_state ) TSRMLS_CC );
253308 }
254309
310+ #ifdef LCB_TRACING
311+ if (cookie -> span ) {
312+ lcbtrace_span_finish (cookie -> span , LCBTRACE_NOW );
313+ }
314+ #endif
255315 opcookie_destroy (cookie );
256316
257317 if (err != LCB_SUCCESS ) {
0 commit comments