Skip to content

Retenção do arquivo

media.dvr.depth

O DVR do Sapsan é um armazenamento próprio em disco: o stream é gravado append-only em arquivos por hora, por pista, em vários discos ao mesmo tempo. Ler o arquivo não atrapalha gravá-lo.

Limpeza e retenção

A limpeza roda uma vez por hora (5 minutos depois da virada da hora):

  • max_depth age com granularidade de hora: só são apagadas as horas plenamente vencidas;
  • blobs com episódios protegidos nunca são apagados pela retenção;
  • o blob da hora atual (a que está sendo gravada) nunca é apagado.

A proteção contra estouro do disco funciona à parte: quando o espaço livre cai abaixo de min_free_bytes (por padrão, 1 % da capacidade do disco), o Sapsan apaga os blobs mais velhos desconsiderando a retenção até liberar espaço suficiente.

Retenção de episódios no central

O central coleta o último estado dos episódios e suas imagens dos streamers e os armazena no PostgreSQL. Os episódios retidos continuam disponíveis quando o streamer de origem está indisponível. Esse armazenamento é independente da gravação de vídeo.

Em DVR do stream ou de seu modelo, Retenção adicional de episódios (horas) define dvr.episodes_additional_depth; a API e o YAML usam segundos. O total é dvr.max_depth + dvr.episodes_additional_depth. A profundidade adicional não definida equivale a zero. Se a seção DVR existe mas max_depth não está definido, usam-se dez anos; zero explícito continua sendo zero. Sem seção DVR, ou com total zero, o central não retém episódios.

O prazo começa em closed_at para episódios fechados e em updated_at para os abertos. Alterações na configuração DVR efetiva, incluindo o modelo, recalculam a retenção de todos os episódios restantes. A seção DVR do próprio stream substitui a seção do modelo por inteiro. Excluir um stream exclui seus episódios e imagens. Aumentar a retenção não recupera episódios já removidos fisicamente pela limpeza em segundo plano.