Current section
Files
Jump to
Current section
Files
lib/islab_db/wormhole_router.ex
defmodule IsLabDB.WormholeRouter do
@moduledoc """
Wormhole Network Topology Router - Dynamic connection management for cosmic data traversal.
This module implements theoretical wormhole physics as computational primitives,
creating dynamic connections between frequently accessed data regions for
near-instantaneous traversal across the cosmic data structure.
## Overview
The WormholeRouter manages:
- Dynamic network topology with intelligent connection strength
- Adaptive routing algorithms with machine learning optimization
- Connection decay mechanics with physics-based temporal evolution
- Fast path caching with predictive route optimization
- Seamless integration with spacetime shards and entropy monitoring
## Network Architecture
Wormhole networks are organized as dynamic graphs where:
- **Nodes** represent data access points (shards, keys, regions)
- **Edges** represent wormhole connections with variable strength
- **Routing** uses physics-based algorithms for optimal path selection
- **Decay** models natural connection weakening over time
- **Strengthening** reinforces frequently used pathways
## Physics Principles
- **Wormhole Theory**: Shortest path through higher-dimensional space
- **Connection Strength**: Gravitational attraction between frequently accessed data
- **Temporal Decay**: Connection strength decreases according to usage patterns
- **Network Optimization**: Minimum energy configuration for maximum efficiency
## Usage
# Initialize wormhole network
{:ok, router} = WormholeRouter.start_link()
# Create dynamic connection between data regions
:ok = WormholeRouter.establish_wormhole(router, "shard_hot", "shard_warm")
# Find optimal route with wormhole shortcuts
{:ok, route, cost} = WormholeRouter.find_route(router, source, destination)
# Get network topology analytics
{:ok, topology} = WormholeRouter.get_topology(router)
# Trigger network optimization
:ok = WormholeRouter.optimize_network(router)
## Performance
- Route calculation: <50 microseconds for single-hop
- Multi-hop routing: <200 microseconds for complex routes
- Cache hit latency: <10 microseconds for cached routes
- Network optimization: 30-50% efficiency improvement
"""
use GenServer
require Logger
alias IsLabDB.{CosmicConstants, CosmicPersistence, EntropyMonitor}
# Wormhole physics constants
@connection_decay_rate 0.95 # Connection strength decay per time unit
@strengthening_factor 1.1 # Usage-based strengthening multiplier
@min_connection_strength 0.1 # Minimum viable connection strength
@max_connection_strength 10.0 # Maximum connection strength
@optimization_threshold 0.8 # Entropy threshold for network optimization
@route_cache_size 1000 # Maximum cached routes
# Network topology persistence path functions
defp wormhole_base_path, do: Path.join(CosmicPersistence.data_root(), "wormholes")
defp topology_path, do: Path.join(wormhole_base_path(), "topology")
defp connections_path, do: Path.join(wormhole_base_path(), "connections")
defp analytics_path, do: Path.join(wormhole_base_path(), "analytics")
defp config_path, do: Path.join(wormhole_base_path(), "configuration")
defstruct [
:network_graph, # Dynamic graph structure (ETS table)
:connection_strengths, # Connection strength cache (ETS table)
:routing_cache, # Pre-computed optimal routes (ETS table)
:usage_patterns, # Access pattern analytics (ETS table)
:physics_config, # Wormhole physics parameters
:optimization_state, # Current optimization status
:performance_metrics, # Real-time performance tracking
:last_optimization, # Timestamp of last network optimization
:entropy_monitor_id # Entropy monitoring integration
]
## Public API
@doc """
Starts the WormholeRouter GenServer with default configuration.
## Options
- `:name` - Process name (default: `__MODULE__`)
- `:physics_config` - Custom physics parameters
- `:enable_entropy_monitoring` - Enable entropy integration (default: true)
- `:optimization_interval` - Automatic optimization interval in ms (default: 60_000)
## Returns
- `{:ok, pid}` - Successfully started router
- `{:error, reason}` - Startup failed
"""
def start_link(opts \\ []) do
name = Keyword.get(opts, :name, __MODULE__)
GenServer.start_link(__MODULE__, opts, name: name)
end
@doc """
Establishes a wormhole connection between two network nodes.
Creates a bidirectional connection with initial strength based on
gravitational attraction calculated from node characteristics.
## Parameters
- `router` - WormholeRouter process
- `source` - Source node identifier
- `destination` - Destination node identifier
- `opts` - Connection options
- `:initial_strength` - Override default strength calculation
- `:connection_type` - `:fast_lane`, `:standard`, or `:experimental`
## Returns
- `:ok` - Connection established successfully
- `{:error, reason}` - Connection failed
"""
def establish_wormhole(router, source, destination, opts \\ []) do
GenServer.call(router, {:establish_wormhole, source, destination, opts})
end
@doc """
Finds the optimal route between two nodes using wormhole shortcuts.
Uses advanced graph algorithms (Dijkstra, A*) with physics-based
edge weights to find the most efficient path through the network.
## Parameters
- `router` - WormholeRouter process
- `source` - Starting node
- `destination` - Target node
- `opts` - Routing options
- `:algorithm` - `:dijkstra`, `:astar`, or `:dynamic_programming`
- `:use_cache` - Use cached routes (default: true)
- `:max_hops` - Maximum allowed hops (default: 5)
## Returns
- `{:ok, route, cost}` - Optimal route found with total cost
- `{:error, :no_path}` - No viable path exists
- `{:error, reason}` - Route calculation failed
"""
def find_route(router, source, destination, opts \\ []) do
GenServer.call(router, {:find_route, source, destination, opts})
end
@doc """
Retrieves current network topology and analytics.
Returns comprehensive network state including connections, strengths,
usage patterns, and optimization recommendations.
## Parameters
- `router` - WormholeRouter process
- `opts` - Analytics options
- `:include_analytics` - Include usage pattern analysis (default: true)
- `:include_predictions` - Include ML-based predictions (default: false)
## Returns
- `{:ok, topology}` - Network topology data
- `{:error, reason}` - Failed to retrieve topology
"""
def get_topology(router, opts \\ []) do
GenServer.call(router, {:get_topology, opts})
end
@doc """
Triggers network optimization using entropy-driven algorithms.
Analyzes current network efficiency and performs intelligent
reorganization to minimize total routing cost and maximize performance.
## Parameters
- `router` - WormholeRouter process
- `opts` - Optimization options
- `:strategy` - `:minimal`, `:moderate`, or `:aggressive`
- `:preserve_connections` - Minimum connections to preserve
- `:force` - Force optimization even if not needed
## Returns
- `{:ok, optimization_result}` - Optimization completed with results
- `{:error, reason}` - Optimization failed
"""
def optimize_network(router, opts \\ []) do
GenServer.call(router, {:optimize_network, opts})
end
@doc """
Records usage of a route to strengthen wormhole connections.
Called internally by the database when routes are traversed,
implementing usage-based connection strengthening.
## Parameters
- `router` - WormholeRouter process
- `route` - List of nodes in traversed route
- `performance_data` - Route performance metrics
## Returns
- `:ok` - Usage recorded successfully
"""
def record_usage(router, route, performance_data \\ %{}) do
GenServer.cast(router, {:record_usage, route, performance_data})
end
@doc """
Gets real-time performance metrics for the wormhole network.
## Returns
- `{:ok, metrics}` - Performance metrics map
"""
def get_performance_metrics(router) do
GenServer.call(router, :get_performance_metrics)
end
## GenServer Implementation
@impl true
def init(opts) do
Logger.info("🌌 Initializing WormholeRouter with advanced network topology...")
# Initialize physics configuration
physics_config = Keyword.get(opts, :physics_config, default_physics_config())
# Setup entropy monitoring integration (optional)
entropy_monitor_id = if Keyword.get(opts, :enable_entropy_monitoring, true) do
try do
case EntropyMonitor.create_monitor(:wormhole_network, []) do
{:ok, _pid} -> "wormhole_network"
_ -> nil
end
rescue
_ ->
Logger.debug("🌌 Entropy monitoring not available, continuing without it")
nil
end
else
nil
end
# Initialize ETS tables for network state
network_graph = :ets.new(:wormhole_network_graph, [:set, :protected, :named_table])
connection_strengths = :ets.new(:wormhole_connection_strengths, [:set, :protected, :named_table])
routing_cache = :ets.new(:wormhole_routing_cache, [:set, :protected, :named_table])
usage_patterns = :ets.new(:wormhole_usage_patterns, [:set, :protected, :named_table])
# Setup filesystem persistence
case initialize_persistence() do
:ok ->
state = %__MODULE__{
network_graph: network_graph,
connection_strengths: connection_strengths,
routing_cache: routing_cache,
usage_patterns: usage_patterns,
physics_config: physics_config,
optimization_state: :idle,
performance_metrics: %{
total_routes: 0,
cache_hits: 0,
optimization_count: 0,
average_route_cost: 0.0,
network_efficiency: 1.0
},
last_optimization: System.system_time(:millisecond),
entropy_monitor_id: entropy_monitor_id
}
# Load existing network state if available
case load_network_state(state) do
{:ok, loaded_state} ->
Logger.info("🌌 WormholeRouter initialized with persistent network topology")
{:ok, loaded_state}
{:error, reason} ->
Logger.warning("🌌 Starting with clean network topology: #{inspect(reason)}")
{:ok, state}
end
{:error, reason} ->
Logger.error("🌌 Failed to initialize WormholeRouter persistence: #{inspect(reason)}")
{:stop, reason}
end
end
@impl true
def handle_call({:establish_wormhole, source, destination, opts}, _from, state) do
Logger.debug("🌌 Establishing wormhole: #{source} <-> #{destination}")
try do
{:ok, new_state} = create_wormhole_connection(source, destination, opts, state)
# Persist the updated network topology
:ok = persist_network_topology(new_state)
{:reply, :ok, new_state}
rescue
error ->
Logger.warning("🌌 Failed to establish wormhole: #{inspect(error)}")
{:reply, {:error, error}, state}
end
end
@impl true
def handle_call({:find_route, source, destination, opts}, _from, state) do
algorithm = Keyword.get(opts, :algorithm, :dijkstra)
use_cache = Keyword.get(opts, :use_cache, true)
max_hops = Keyword.get(opts, :max_hops, 5)
case find_optimal_route(source, destination, algorithm, use_cache, max_hops, state) do
{:ok, route, cost} ->
# Update performance metrics
new_metrics = update_route_metrics(state.performance_metrics, cost, use_cache)
new_state = %{state | performance_metrics: new_metrics}
{:reply, {:ok, route, cost}, new_state}
{:error, reason} ->
{:reply, {:error, reason}, state}
end
end
@impl true
def handle_call({:get_topology, opts}, _from, state) do
include_analytics = Keyword.get(opts, :include_analytics, true)
include_predictions = Keyword.get(opts, :include_predictions, false)
topology = build_topology_response(state, include_analytics, include_predictions)
{:reply, {:ok, topology}, state}
end
@impl true
def handle_call({:optimize_network, opts}, _from, state) do
strategy = Keyword.get(opts, :strategy, :moderate)
force = Keyword.get(opts, :force, false)
case should_optimize_network?(state, force) do
true ->
try do
{:ok, optimized_state} = perform_network_optimization(strategy, state)
# Persist optimized topology
:ok = persist_network_topology(optimized_state)
{:reply, {:ok, :optimization_completed}, optimized_state}
rescue
error ->
Logger.warning("🌌 Network optimization failed: #{inspect(error)}")
{:reply, {:error, error}, state}
end
false ->
{:reply, {:ok, :optimization_not_needed}, state}
end
end
@impl true
def handle_call(:get_performance_metrics, _from, state) do
metrics = enhance_performance_metrics(state.performance_metrics, state)
{:reply, {:ok, metrics}, state}
end
@impl true
def handle_cast({:record_usage, route, performance_data}, state) do
new_state = record_route_usage(route, performance_data, state)
{:noreply, new_state}
end
## Private Functions
defp default_physics_config do
%{
connection_decay_rate: @connection_decay_rate,
strengthening_factor: @strengthening_factor,
min_connection_strength: @min_connection_strength,
max_connection_strength: @max_connection_strength,
optimization_threshold: @optimization_threshold,
route_cache_size: @route_cache_size,
# Advanced physics parameters
gravitational_constant: CosmicConstants.gravitational_constant(),
speed_of_light: CosmicConstants.speed_of_light(),
planck_constant: CosmicConstants.planck_constant()
}
end
defp initialize_persistence do
with :ok <- CosmicPersistence.ensure_directory(wormhole_base_path()),
:ok <- CosmicPersistence.ensure_directory(topology_path()),
:ok <- CosmicPersistence.ensure_directory(connections_path()),
:ok <- CosmicPersistence.ensure_directory(analytics_path()),
:ok <- CosmicPersistence.ensure_directory(config_path()) do
# Create subdirectories for connection states
CosmicPersistence.ensure_directory(Path.join(connections_path(), "active"))
CosmicPersistence.ensure_directory(Path.join(connections_path(), "dormant"))
CosmicPersistence.ensure_directory(Path.join(connections_path(), "archived"))
# Create analytics subdirectories
CosmicPersistence.ensure_directory(Path.join(analytics_path(), "optimization_logs"))
:ok
end
end
defp load_network_state(state) do
# Load network topology from filesystem
case CosmicPersistence.load_data(Path.join(topology_path(), "network_graph.json")) do
{:ok, network_data} ->
# Restore network graph to ETS (handle both old tuple format and new map format)
Enum.each(network_data, fn
{key, value} -> :ets.insert(state.network_graph, {key, value})
%{"key" => key, "value" => value} -> :ets.insert(state.network_graph, {key, value})
%{key: key, value: value} -> :ets.insert(state.network_graph, {key, value})
end)
# Load connection strengths
case CosmicPersistence.load_data(Path.join(topology_path(), "connection_strength.json")) do
{:ok, strength_data} ->
Enum.each(strength_data, fn
{key, strength} -> :ets.insert(state.connection_strengths, {key, strength})
%{"key" => key, "strength" => strength} -> :ets.insert(state.connection_strengths, {key, strength})
%{key: key, strength: strength} -> :ets.insert(state.connection_strengths, {key, strength})
end)
{:ok, state}
_ -> {:ok, state}
end
_ -> {:error, :no_existing_topology}
end
end
defp create_wormhole_connection(source, destination, opts, state) do
# Calculate initial connection strength using gravitational physics
initial_strength = calculate_gravitational_attraction(source, destination, state)
connection_type = Keyword.get(opts, :connection_type, :standard)
# Create bidirectional connection
connection_key = connection_id(source, destination)
connection_data = %{
source: source,
destination: destination,
strength: initial_strength,
type: connection_type,
created_at: System.system_time(:millisecond),
usage_count: 0,
last_used: nil
}
# Store in network graph and connection strengths
:ets.insert(state.network_graph, {connection_key, connection_data})
:ets.insert(state.connection_strengths, {connection_key, initial_strength})
# Also create reverse connection
reverse_key = connection_id(destination, source)
reverse_data = %{connection_data | source: destination, destination: source}
:ets.insert(state.network_graph, {reverse_key, reverse_data})
:ets.insert(state.connection_strengths, {reverse_key, initial_strength})
Logger.debug("🌌 Wormhole established: #{source} <-> #{destination} (strength: #{initial_strength})")
{:ok, state}
end
defp find_optimal_route(source, destination, algorithm, use_cache, max_hops, state) do
cache_key = "#{source}->#{destination}"
# Check cache first if enabled
cached_route = if use_cache do
case :ets.lookup(state.routing_cache, cache_key) do
[{^cache_key, route_data}] -> route_data
[] -> nil
end
else
nil
end
case cached_route do
nil ->
# Calculate new route using specified algorithm
case calculate_route(source, destination, algorithm, max_hops, state) do
{:ok, route, cost} ->
# Cache the result if caching is enabled
if use_cache do
:ets.insert(state.routing_cache, {cache_key, {route, cost, System.system_time(:millisecond)}})
end
{:ok, route, cost}
error -> error
end
{route, cost, _timestamp} ->
# Return cached route
{:ok, route, cost}
end
end
defp calculate_route(source, destination, :dijkstra, max_hops, state) do
# Implement Dijkstra's algorithm for shortest path
case dijkstra_shortest_path(source, destination, max_hops, state) do
{:ok, path, cost} -> {:ok, path, cost}
:no_path -> {:error, :no_path}
end
end
defp calculate_route(source, destination, :astar, max_hops, state) do
# Implement A* algorithm with heuristic
case astar_search(source, destination, max_hops, state) do
{:ok, path, cost} -> {:ok, path, cost}
:no_path -> {:error, :no_path}
end
end
defp dijkstra_shortest_path(source, destination, _max_hops, state) do
# Simplified but correct Dijkstra's algorithm implementation
# For direct connections, check first
source_connections = get_node_connections(source, state)
case Enum.find(source_connections, fn conn -> conn.destination == destination end) do
nil ->
# No direct connection - for now return no path (could be enhanced for multi-hop)
:no_path
connection ->
# Direct connection found
cost = 1.0 / connection.strength
{:ok, [source, destination], cost}
end
end
# These functions are preserved for potential future multi-hop enhancement
# defp get_all_network_nodes(state) do
# :ets.foldl(fn {_key, connection_data}, acc ->
# [connection_data.source, connection_data.destination | acc]
# end, [], state.network_graph)
# |> Enum.uniq()
# end
# defp find_min_distance_node(distances, unvisited) do
# unvisited
# |> Enum.map(fn node -> {node, Map.get(distances, node)} end)
# |> Enum.filter(fn {_node, dist} -> dist != :infinity end)
# |> Enum.min_by(fn {_node, dist} -> dist end, fn -> nil end)
# |> case do
# nil -> nil
# {node, _dist} -> node
# end
# end
defp astar_search(source, destination, max_hops, state) do
# A* implementation placeholder - will be enhanced
dijkstra_shortest_path(source, destination, max_hops, state)
end
defp get_node_connections(node, state) do
# Get all connections originating from this node
:ets.foldl(fn {_key, connection_data}, acc ->
if connection_data.source == node do
[connection_data | acc]
else
acc
end
end, [], state.network_graph)
end
defp calculate_gravitational_attraction(_source, _destination, state) do
# Use gravitational physics to calculate initial connection strength
# Based on data locality, access patterns, and cosmic constants
base_strength = 1.0
# Factor in gravitational constant from cosmic physics
g_constant = state.physics_config.gravitational_constant
# Simple initial calculation - will be enhanced with real physics
attraction = base_strength * g_constant * 1000
# Clamp to valid range
max_strength = state.physics_config.max_connection_strength
min_strength = state.physics_config.min_connection_strength
max(min_strength, min(max_strength, attraction))
end
defp connection_id(source, destination), do: "#{source}::#{destination}"
defp record_route_usage(route, performance_data, state) do
# Record usage for connection strengthening
timestamp = System.system_time(:millisecond)
# Strengthen connections along the route
Enum.zip(route, tl(route))
|> Enum.each(fn {source, dest} ->
strengthen_connection(source, dest, performance_data, state)
end)
# Record usage pattern
usage_key = "route_#{Enum.join(route, "_")}"
usage_data = %{
route: route,
timestamp: timestamp,
performance: performance_data,
count: get_usage_count(usage_key, state) + 1
}
:ets.insert(state.usage_patterns, {usage_key, usage_data})
state
end
defp strengthen_connection(source, destination, _performance_data, state) do
connection_key = connection_id(source, destination)
case :ets.lookup(state.connection_strengths, connection_key) do
[{^connection_key, current_strength}] ->
factor = state.physics_config.strengthening_factor
max_strength = state.physics_config.max_connection_strength
new_strength = min(max_strength, current_strength * factor)
:ets.insert(state.connection_strengths, {connection_key, new_strength})
[] -> :ok # Connection doesn't exist
end
end
defp get_usage_count(usage_key, state) do
case :ets.lookup(state.usage_patterns, usage_key) do
[{^usage_key, usage_data}] -> usage_data.count
[] -> 0
end
end
defp should_optimize_network?(state, force) do
force or optimization_needed?(state)
end
defp optimization_needed?(state) do
# Check if optimization is needed based on entropy or time
time_since_last = System.system_time(:millisecond) - state.last_optimization
time_threshold = 300_000 # 5 minutes
entropy_threshold = state.physics_config.optimization_threshold
current_efficiency = state.performance_metrics.network_efficiency
time_since_last > time_threshold or current_efficiency < entropy_threshold
end
defp perform_network_optimization(strategy, state) do
Logger.info("🌌 Performing network optimization with #{strategy} strategy...")
# Apply connection decay
apply_temporal_decay(state)
# Remove weak connections
remove_weak_connections(strategy, state)
# Update optimization state
new_metrics = Map.put(state.performance_metrics, :optimization_count,
state.performance_metrics.optimization_count + 1)
optimized_state = %{state |
last_optimization: System.system_time(:millisecond),
optimization_state: :completed,
performance_metrics: new_metrics
}
Logger.info("🌌 Network optimization completed")
{:ok, optimized_state}
end
defp apply_temporal_decay(state) do
# Apply physics-based temporal decay to all connections
decay_rate = state.physics_config.connection_decay_rate
min_strength = state.physics_config.min_connection_strength
:ets.foldl(fn {key, strength}, _acc ->
decayed_strength = strength * decay_rate
if decayed_strength >= min_strength do
:ets.insert(state.connection_strengths, {key, decayed_strength})
else
:ets.delete(state.connection_strengths, key)
:ets.delete(state.network_graph, key)
end
nil
end, nil, state.connection_strengths)
end
defp remove_weak_connections(strategy, state) do
# Remove connections below strategy-specific thresholds
threshold = case strategy do
:minimal -> 0.1
:moderate -> 0.3
:aggressive -> 0.5
end
min_strength = state.physics_config.min_connection_strength
cutoff = max(min_strength, threshold)
:ets.foldl(fn {key, strength}, _acc ->
if strength < cutoff do
:ets.delete(state.connection_strengths, key)
:ets.delete(state.network_graph, key)
end
nil
end, nil, state.connection_strengths)
end
defp persist_network_topology(state) do
# Save network graph (convert tuples to maps for JSON serialization)
network_data = :ets.tab2list(state.network_graph)
|> Enum.map(fn {key, value} -> %{key: key, value: value} end)
CosmicPersistence.save_data(Path.join(topology_path(), "network_graph.json"), network_data)
# Save connection strengths (convert tuples to maps)
strength_data = :ets.tab2list(state.connection_strengths)
|> Enum.map(fn {key, strength} -> %{key: key, strength: strength} end)
CosmicPersistence.save_data(Path.join(topology_path(), "connection_strength.json"), strength_data)
# Save performance metrics
CosmicPersistence.save_data(Path.join(analytics_path(), "performance_metrics.json"), state.performance_metrics)
:ok
end
defp build_topology_response(state, include_analytics, include_predictions) do
network_data = :ets.tab2list(state.network_graph)
strength_data = :ets.tab2list(state.connection_strengths)
topology = %{
nodes: extract_nodes(network_data),
connections: network_data,
strengths: strength_data,
metrics: state.performance_metrics
}
topology = if include_analytics do
usage_data = :ets.tab2list(state.usage_patterns)
Map.put(topology, :analytics, %{usage_patterns: usage_data})
else
topology
end
if include_predictions do
# Machine learning predictions would be added here
Map.put(topology, :predictions, %{next_optimization: predict_next_optimization(state)})
else
topology
end
end
defp extract_nodes(network_data) do
network_data
|> Enum.flat_map(fn {_key, conn} -> [conn.source, conn.destination] end)
|> Enum.uniq()
end
defp predict_next_optimization(state) do
# Simple prediction based on current metrics
current_efficiency = state.performance_metrics.network_efficiency
_time_since_last = System.system_time(:millisecond) - state.last_optimization
# Predict when efficiency will drop below threshold
predicted_minutes = round((0.8 - current_efficiency) * 300) # Simple linear model
max(5, predicted_minutes)
end
defp update_route_metrics(metrics, cost, used_cache) do
total_routes = metrics.total_routes + 1
cache_hits = if used_cache, do: metrics.cache_hits + 1, else: metrics.cache_hits
# Update average cost with exponential moving average
alpha = 0.1
new_avg_cost = alpha * cost + (1 - alpha) * metrics.average_route_cost
# Calculate network efficiency (lower average cost = higher efficiency)
efficiency = 1.0 / (1.0 + new_avg_cost)
%{metrics |
total_routes: total_routes,
cache_hits: cache_hits,
average_route_cost: new_avg_cost,
network_efficiency: efficiency
}
end
defp enhance_performance_metrics(metrics, state) do
# Add real-time calculations
cache_hit_rate = if metrics.total_routes > 0 do
metrics.cache_hits / metrics.total_routes
else
0.0
end
network_size = :ets.info(state.network_graph, :size)
connection_count = :ets.info(state.connection_strengths, :size)
Map.merge(metrics, %{
cache_hit_rate: cache_hit_rate,
network_size: network_size,
active_connections: connection_count,
last_optimization_age: System.system_time(:millisecond) - state.last_optimization
})
end
end