SóProvas


ID
2486080
Banca
FGV
Órgão
IBGE
Ano
2017
Provas
Disciplina
Arquitetura de Software
Assuntos

Atomicidade de transações é uma propriedade muito importante em sistemas distribuídos. Uma maneira de implementar essa propriedade é por meio do protocolo two-phase commit (2PC). Em relação a esse protocolo, analise as afirmativas a seguir:

I. Durante a primeira fase do protocolo, o nó coordenador da transação consulta um nó participante para saber se ele está apto para concluir a transação e, após conhecer a resposta dele, consulta o próximo nó participante.

II. Se o nó coordenador da transação falhar, os participantes podem não receber a decisão final para executar commit ou rollback e, portanto, ficarem bloqueados.

III. Se o nó participante falhar após receber a decisão final para executar um commit, a transação será abortada pelo nó coordenador da transação.

Está correto o que se afirma em:

Alternativas
Comentários
  • Funcionamento do 2PC

    1ª Fase: todos os nós participantes da transação sinalizam ao coordenador que sua parte da transação foi realizada. O coordenador envia uma mensagem preparar “para commit”. Cada nó fará uma gravação forçada em disco de todos os registros de log e informações necessárias para recuperação local, e em seguida envia um sinal “OK” ao coordenador, caso contrário envia um sinal “não OK”. Na falta de uma resposta o coordenador considera o nó “não OK”.
    2ª Fase: se todos os nós respondem “OK’ e o voto do coordenador também for “OK”, a transação foi bem sucedida e o coordenador envia um sinal “commit” para os nós, caso contrário, a transação falhou e o coordenador envia uma mensagem para “rollback”. Neste caso a transação será desfeita utilizando-se os arquivos de log.

    III-ERRADA, visto que o coordendor já enviou o ok.

  • Acredito que a 3 está correta, pois se o nó participante não enviar um OK ao final do commit o nó coordenador ordena que todos os nós façam um rollback utilizando um log chamado Undolog.  Isso acontece tanto em caso de falha no commit quanto em time-out caso os nós não consigam avisar o coordenador que o commit foi bem sucedido.

    DISCORDO do gabarito.

  • Johnny, acredito que o erro está em dizer que o nó coordenador aborta a transação, quando na verdade a transação se completa por todos os outros nós que sinalizam com "OK", e caso algum nó exceda o tempo de resposta dado pelo nó coordenador, este sinaliza para um rollback.