MCPcopy Create free account
hub / github.com/couchbase/couchbase-python-client / _execute_op

Method _execute_op

acouchbase/datastructures.py:377–418  ·  view source on GitHub ↗
(self,
                          fn: DatastructureCallable,
                          req: PycbcCoreKeyValueRequest,
                          obs_handler: ObservableRequestHandler,
                          parent_span: WrappedSpan,
                          create_type: Optional[bool] = None,
                          transcoder: Optional[Transcoder] = None)

Source from the content-addressed store, hash-verified

375 self._full_map = None
376
377 async def _execute_op(self,
378 fn: DatastructureCallable,
379 req: PycbcCoreKeyValueRequest,
380 obs_handler: ObservableRequestHandler,
381 parent_span: WrappedSpan,
382 create_type: Optional[bool] = None,
383 transcoder: Optional[Transcoder] = None) -> Any:
384 try:
385 fn_args = [req]
386 if transcoder:
387 fn_args.append(transcoder)
388 fn_args.append(obs_handler)
389 return await fn(*fn_args)
390 except DocumentNotFoundException as ex:
391 if create_type is True:
392 orig_opt_type = obs_handler.op_type
393 obs_handler.reset(KeyValueOperationType.Insert, exc_val=ex)
394 try:
395 ins_req = self._impl.request_builder.build_insert_request(self._key,
396 dict(),
397 obs_handler,
398 parent_span=parent_span)
399 await self._impl.insert(ins_req, obs_handler)
400 except DocumentExistsException:
401 pass
402 obs_handler.reset(orig_opt_type)
403 obs_handler.create_kv_span(self._impl._request_builder._collection_dtls.get_details_as_dict(),
404 parent_span=parent_span)
405
406 # Legacy tracing relies on passing the actual span in w/ the request. Since we are re-using the
407 # request object, we need to set the request parent span to the newly created span if we are in
408 # legacy tracing mode.
409 if obs_handler.is_legacy_tracer:
410 req.parent_span = obs_handler.legacy_request_span
411
412 fn_args = [req]
413 if transcoder:
414 fn_args.append(transcoder)
415 fn_args.append(obs_handler)
416 return await fn(*fn_args)
417 else:
418 raise
419
420 async def _get(self, parent_span: Optional[WrappedSpan] = None) -> Dict:
421 """

Callers 5

_getMethod · 0.95
addMethod · 0.95
getMethod · 0.95
sizeMethod · 0.95
existsMethod · 0.95

Calls 6

build_insert_requestMethod · 0.80
get_details_as_dictMethod · 0.80
appendMethod · 0.45
resetMethod · 0.45
insertMethod · 0.45
create_kv_spanMethod · 0.45

Tested by

no test coverage detected