Class ResetarPowersyncService

java.lang.Object
br.com.vantroba.bi.transporte.powersync.ResetarPowersyncService

@Singleton public class ResetarPowersyncService extends Object
Orquestra os 9 steps do reset da replicação PowerSync.

Princípios:

  • RESET_SLOT é executado antes de DROP_MONGO — falha em reset deixa Mongo intacto, sistema volta a operar normalmente após RESUME.
  • Cada step grava em steps_completados ao concluir, dando visibilidade durante a execução via GET /admin/resetar-powersync/{id}.
  • Cada step também escreve uma linha em atividade_atual — lida em tempo real pela tela /admin/resetar-powersync/{id} via polling de 2 s.
  • Pool dedicado reset- (single-thread) — não compete com pipeline de XLS.
  • Constructor Details

    • ResetarPowersyncService

      public ResetarPowersyncService(ResetarPowersyncRepository repository, BiConfiguracaoRepository biConfiguracaoRepository, PowerSyncProcessControl processControl, MongoAdminService mongoAdmin, PostgresReplicationAdmin pgAdmin, ResetarPowersyncNotificador notificador, PowersyncMongoConfig mongo, PowersyncPostgresConfig postgres, PowersyncNukeConfig nuke)
      Cria o serviço com suas dependências e o pool single-thread dedicado ao reset.
      Parameters:
      repository - repositório de persistência das execuções de reset
      biConfiguracaoRepository - repositório do marcador ultimo_nuke, atualizado no STEP_FINALIZAR para sinalizar clientes Dart (spec 007 — disconnectAndClear)
      processControl - controle de pause/resume do PowerSync Service
      mongoAdmin - operações administrativas no MongoDB do PowerSync
      pgAdmin - operações administrativas nos slots de replicação do PostgreSQL
      notificador - formata e dispara as notificações Telegram do reset
      mongo - configuração do Mongo do PowerSync (powersync.mongodb.*)
      postgres - configuração da replicação Postgres (powersync.postgres.*)
      nuke - configuração de confirmação e bootstrap (powersync.nuke.*)
  • Method Details

    • isDisabled

      public boolean isDisabled()
      Indica se o endpoint deve responder 503 — config ausente.
      Returns:
      true se o token de confirmação não estiver configurado
    • confirmationToken

      public String confirmationToken()
      Token configurado em powersync.nuke.confirmation-token.
      Returns:
      o token de confirmação, ou string vazia se não configurado
    • buscarStatus

      public Optional<ResetarPowersync> buscarStatus(long id)
      Status de uma execução de reset por id; vazio se não existe.
      Parameters:
      id - identificador da execução de reset
      Returns:
      a execução encontrada, ou Optional.empty() se não existir
    • listar

      public io.micronaut.data.model.Page<ResetarPowersync> listar(io.micronaut.data.model.Pageable pageable)
      Página de execuções de reset, das mais recentes para as mais antigas.
      Parameters:
      pageable - página e tamanho pedidos; a ordenação é sempre por início decrescente
      Returns:
      a página, com o total de execuções registradas
    • executar

      public ResetarPowersync executar(String motivo, String iniciadoPor, Integer waitSecsOverride)
      Cria a row EM_ANDAMENTO (síncrono — pode lançar 409) e dispara a execução em background. Retorna o id pra o cliente fazer polling.
      Parameters:
      motivo - motivo informado para a execução do reset
      iniciadoPor - identificação de quem disparou o reset
      waitSecsOverride - sobrescreve o tempo de espera de bootstrap (segundos); quando null, usa o default configurado
      Returns:
      a execução de reset recém-criada, com o id para polling
    • shutdown

      @PreDestroy public void shutdown()
      Encerra o pool dedicado do reset no shutdown do contêiner (@PreDestroy).