lambda_otel_lite

Struct TelemetryCompletionHandler

Source
pub struct TelemetryCompletionHandler { /* private fields */ }
Expand description

A handler that ensures telemetry data is properly exported upon Lambda function completion.

This type manages the completion of telemetry data export based on the configured mode:

  • In Sync mode, directly exports the data in the handler thread

    • Simple execution path with no IPC overhead
    • Efficient for small payloads and low resource environments
    • Guarantees span delivery before response
  • In Async mode, notifies the internal extension to export the data

    • Requires coordination with extension process
    • Additional overhead from IPC
    • Provides retry capabilities through extension
  • In Finalize mode, lets the processor handle the export strategy

    • Full control over export timing and behavior
    • Compatible with BatchSpanProcessor
    • Best for specialized export requirements

§Thread Safety

The handler is thread-safe and can be cloned and shared between threads.

§Example

use lambda_otel_lite::{init_telemetry, TelemetryConfig};
use lambda_runtime::{service_fn, Error, LambdaEvent};

async fn handler(event: LambdaEvent<serde_json::Value>) -> Result<serde_json::Value, Error> {
    // ... handler logic ...
    Ok(event.payload)
}

#[tokio::main]
async fn main() -> Result<(), Error> {
    let completion_handler = init_telemetry(TelemetryConfig::default()).await?;
    lambda_runtime::run(service_fn(|event| async {
        let result = handler(event).await;
        completion_handler.complete();
        result
    })).await
}

Implementations§

Source§

impl TelemetryCompletionHandler

Source

pub fn mode(&self) -> ProcessorMode

Returns the current processor mode

Source

pub fn provider(&self) -> &Arc<SdkTracerProvider>

Get a reference to the tracer provider

Source

pub fn complete(&self)

Signals completion of the current Lambda invocation, triggering telemetry export.

The behavior depends on the processor mode:

  • In Sync mode:

    • Directly exports spans in the handler thread
    • Simple execution path with no IPC overhead
    • Blocks until export completes
    • Best for small payloads or when immediate delivery is required
  • In Async mode:

    • Notifies the extension to handle export
    • Non-blocking operation in handler thread
    • Requires coordination with extension process
    • Provides retry capabilities through extension
  • In Finalize mode:

    • Lets the configured processor handle export
    • Behavior depends on processor implementation
    • Useful for custom export strategies
    • No additional action taken by handler
Source

pub fn force_export(&self)

Forces immediate export of all telemetry data, regardless of mode.

This is useful when you need to ensure all telemetry data is exported immediately, such as during shutdown or error handling.

Trait Implementations§

Source§

impl Clone for TelemetryCompletionHandler

Source§

fn clone(&self) -> TelemetryCompletionHandler

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more