Class PostgresReplicationAdmin
Por que @Connectable e não @Transactional: as funções
pg_drop_replication_slot() e pg_create_logical_replication_slot()
não podem rodar dentro de um transaction block — Postgres lança
"... cannot run inside a transaction block". Por isso a conexão é aberta
sem BEGIN, com autoCommit=true; cada comando vira sua própria transação
implícita.
Não-atomicidade aceita: se um dos passos do resetSlot(String, String) falhar
no meio (ex.: drop sucesso, create falha), o slot fica em estado parcial. O operador
rerroda o reset ou usa psql pra recriar o slot manualmente
(ver docs/resetar-powersync.md).
-
Nested Class Summary
Nested Classes -
Constructor Summary
ConstructorsConstructorDescriptionPostgresReplicationAdmin(io.micronaut.data.connection.ConnectionOperations<Connection> connectionOperations) Cria o admin com as operações de conexão JDBC do Micronaut Data. -
Method Summary
Modifier and TypeMethodDescriptioncurrentLsn(String slotName) Captura o LSN atual confirmado do slot (read-only).Termina backend ativo no slot (se houver), drop e cria slot novo.
-
Constructor Details
-
PostgresReplicationAdmin
public PostgresReplicationAdmin(io.micronaut.data.connection.ConnectionOperations<Connection> connectionOperations) Cria o admin com as operações de conexão JDBC do Micronaut Data.- Parameters:
connectionOperations- fonte de conexões JDBC usada pelos comandos@Connectable
-
-
Method Details
-
currentLsn
-
resetSlot
Termina backend ativo no slot (se houver), drop e cria slot novo.Sem block transacional (ver classe javadoc). Cada comando é executado em sua própria transação implícita; falha em qualquer ponto deixa estado parcial.
- Parameters:
slotName- nome do slot de replicação lógica a resetarplugin- plugin de output usado na criação do slot (ex.:pgoutput)- Returns:
- resultado com PID terminado (se aplicável), LSN antes e depois.
-