FIREFLO_DB_URL não definido e o FireFlo roda com configuração em
arquivo e call records escritos em data/cdr/.
Só dois recursos exigem banco: a sweep de expiração de CDR, que precisa consultar registros sem
desfecho, e crédito pré-pago, já que crédito só entra pelo banco. Rating, roteamento por menor
custo e CDRs funcionam sem banco. A metade só de leitura do painel de controle também funciona. Mas o
painel edita configuração, e em modo de arquivo não há o que editar.
Conexão
FIREFLO_CONFIG_IMPORT é separada de FIREFLO_DB_MIGRATE de propósito: uma aplica DDL só para
frente, a outra substitui as regras que decidem o que os clientes são cobrados. --dry-run ignora.A chave de origem
Uma chave move todos os domínios de uma vez.
Definida pelo ambiente como
FIREFLO_CONFIG_SOURCE.
As tabelas
As propriedades de um worker são projetadas em
outSms.instance.<name>.<key> e publicadas
exatamente como linhas de app_config, então a camada de fallback e o retuning ao vivo não são
afetados. Mantenha uma configuração em um lugar ou no outro. Se ambos definirem a mesma chave, a
tabela do worker vence e a duplicata é logada.
O que muda quando você está em modo db
- Uma mudança leva até um intervalo de poll, contra por volta de 200 ms para uma edição de arquivo.
- Uma leitura que falha mantém a configuração anterior em vez de zerar.
- Mudanças são anunciadas exatamente como uma edição de arquivo, então editar
app_configre-afina workers em execução.tps,maxRetries,pause, TLVs registrados. E setaroutSms.instance.<x>.enablepara false para aquele fornecedor dentro de um intervalo. - Apagar uma linha reverte a chave para o que a próxima camada segura. Uma variável de ambiente, ou o padrão codificado. Em vez de deixar sem definir.
- Todo file watcher recua.
conf/smsg.propertiesainda é lido no startup.
app_route e app_rate do schema pré-normalizado ainda são lidos quando as tabelas normalizadas
estão vazias, com aviso. Nada é convertido automaticamente. O rule_line empacotado não pode ser
dividido em SQL.
Versionamento de schema
O schema é um arquivo baseline,V1.19.0__baseline.sql, gerado em vez de fundido à mão: os originais
foram aplicados a um banco temporário, dump feito com pg_dump --schema-only, e o dump verificado
aplicando a um segundo banco e diffando os dois. Mudanças posteriores continuam em V1.20.0. Só para
frente é a regra.
É numerado na versão mais alta que substitui, não na mais baixa, de propósito. Uma implantação
que parou pela metade trataria um baseline de número mais baixo como já aplicado e migraria para um
no-op, silenciosamente perdendo o que veio depois. Em 1.19.0 ele tenta aplicar e falha na primeira
tabela que já existe. Recuperável, onde a versão silenciosa corrompe por omissão.
Veja fireflo db para test, migrate, info, validate e repair, e
Escolhendo uma origem de configuração para o caminho de
migração entre arquivo e banco.