MeliGraph.Config (MeliGraph v0.3.1)

Copy Markdown View Source

Configuração centralizada, validada uma vez no start_link. Passada para todos os processos da supervision tree via conf:.

Inspirado no padrão do Oban: um struct imutável que carrega todas as configurações necessárias, eliminando Application.get_env espalhado e permitindo múltiplas instâncias com configurações diferentes.

Summary

Functions

Cria e valida uma nova configuração a partir das opções fornecidas.

Types

on_ready()

@type on_ready() :: nil | {module(), atom(), [term()]}

t()

@type t() :: %MeliGraph.Config{
  algorithms: [atom()],
  cluster_call_timeout: pos_integer(),
  distribution: :local | :horde,
  graph_type: :directed | :bipartite,
  name: atom(),
  on_ready: on_ready(),
  plugins: [{module(), keyword()}],
  reconcile_grace: non_neg_integer(),
  reconcile_interval: pos_integer(),
  registry: atom(),
  result_ttl: pos_integer(),
  segment_max_edges: pos_integer(),
  segment_ttl: pos_integer(),
  testing: :disabled | :sync
}

Functions

new(opts)

@spec new(keyword()) :: t()

Cria e valida uma nova configuração a partir das opções fornecidas.

Opções obrigatórias

  • :name - nome da instância (atom)
  • :graph_type - :directed ou :bipartite

Opções opcionais

  • :segment_max_edges - máximo de arestas por segmento (padrão: 1_000_000)
  • :segment_ttl - TTL dos segmentos em ms (padrão: 24h)
  • :result_ttl - TTL dos resultados em cache em ms (padrão: 30min)
  • :algorithms - lista de algoritmos habilitados (padrão: [:pagerank, :salsa])
  • :testing - modo de testing: :disabled ou :sync (padrão: :disabled)
  • :plugins - lista de {módulo, opts} dos plugins (padrão: Pruner + CacheCleaner)
  • :distribution - :local (padrão) ou :horde (modo distribuído opt-in)
  • :on_ready - MFA {module, function, args} chamada quando a instância sobe (e em cada realocação no modo :horde) para reconstruir o grafo; nil (padrão) marca a instância como pronta imediatamente
  • :cluster_call_timeout - timeout em ms das chamadas cross-node (padrão: 15s)
  • :reconcile_interval - intervalo em ms do reconciliador que vigia a presença do dono no modo :horde (padrão: 2s); só usado em :horde
  • :reconcile_grace - quanto tempo em ms o grafo pode ficar sem dono antes do reconciliador re-disparar a alocação (padrão: 5s). Deve ser maior que a recuperação automática do Horde (~1-2s) para evitar dupla-alocação