Packages
snakepit
0.12.0
0.13.0
0.12.0
0.11.1
0.11.0
0.10.1
0.10.0
0.9.1
0.9.0
0.8.9
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.7
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.11
0.6.10
0.6.9
0.6.8
0.6.7
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.1
0.2.0
0.1.2
0.1.1
0.1.0
High-performance pooler and session manager for external language integrations. Supports Python, Node.js, Ruby, and more with gRPC streaming, session management, and production-ready process cleanup.
Current section
Files
Jump to
Current section
Files
lib/snakepit/telemetry/correlation.ex
defmodule Snakepit.Telemetry.Correlation do
@moduledoc """
Utilities for generating and propagating correlation identifiers.
"""
@prefix "sp"
@doc """
Generates a new correlation identifier.
"""
@spec new_id() :: String.t()
def new_id do
random = :crypto.strong_rand_bytes(12)
encoded = Base.encode16(random, case: :lower)
"#{@prefix}-#{encoded}"
end
@doc """
Ensures a non-empty correlation identifier is present.
"""
@spec ensure(String.t() | nil) :: String.t()
def ensure(nil), do: new_id()
def ensure(""), do: new_id()
def ensure(id) when is_binary(id), do: id
def ensure(_other), do: new_id()
end