

Seu próximo nível começa aqui
Seu desenvolvimento não pode ter limites. Garanta sua Assinatura Ilimitada e libere uma preparação completa com os melhores professores do Brasil.
Um arquiteto de sistemas de uma instituição financeira gerencia um ambiente de banco de dados distribuído que opera com o protocolo de efetivação em duas fases (2PC) para garantir a consistência ACID. Em um cenário de auditoria, uma transação T1 envolve o débito na conta de um cliente no servidor X e o crédito na conta de uma loja no servidor Y. Durante a execução, o coordenador da transação emite a ordem de preparação e tanto o servidor X quanto o servidor Y respondem afirmativamente (Vote Commit), entrando no estado de prontidão. Imediatamente após receber os votos, o coordenador toma a decisão de efetivar a transação e grava o registro Commit em seu armazenamento estável, mas falha criticamente antes de conseguir transmitir a mensagem de decisão para qualquer um dos servidores participantes. Diante desse cenário de falha do coordenador após o voto de prontidão dos participantes, qual é o comportamento técnico obrigatório do servidor Y?
O servidor deve aplicar um timeout e abortar unilateralmente a transação para liberar os bloqueios dos registros da conta da loja.
O servidor entra em um estado de bloqueio, mantendo os recursos travados indefinidamente até que o coordenador seja restaurado e informe a decisão tomada.
O servidor deve assumir o papel de novo coordenador e reenviar a mensagem de preparação para o servidor X a fim de concluir a transação.
O servidor consulta seus logs locais e, ao verificar que votou sim, executa o Commit da transação baseando-se na probabilidade estatística de sucesso.
O servidor solicita ao cliente que reenvie a requisição da transação para que um novo identificador global seja gerado e o processo reiniciado.