Protocolo em duas fases - CCR


  1. A primeira fase do procedimento começa quando o mestre informa ao escravo que será iniciado o processamento de uma ação atômica. Durante o processamento, o mestre e o escravo podem trocar dados entre si. Quando termina o processamento da ação atômica, o mestre pergunta ao escravo se ele está preparado para atualizar os dados delimitados. Se o escravo responder que sim, a primeira fase é encerrada e o procedimento entra na segunda fase. Se ele responder que não, a ação retorna (roll-back) para seu início.

  2. Na segunda fase do procedimento, o mestre atualiza os dados em seu sistema local e solicita ao escravo que faça o mesmo. Cabe salientar que o mestre atualiza os dados, mas mantém uma cópia dos valores dos dados delimitados antes da atualização. Ao terminar a cópia dos valores dos dados delimitados, o escravo envia uma mensagem para o mestre avisando se a atualização foi bem-sucedida ou não. Em caso positivo, o mestre desfaz-se da cópia dos valores iniciais dos dados delimitados. Em caso negativo, a ação retorna para o seu início, fazendo com que o mestre e o escravo restaurem os valores iniciais dos dados delimitados. Também existem primitivas para comandar o reinício de uma ação atômica (C-ROLLBACK) e para recuperar os dados delimitados (C-RECOVER) . Cabe ressaltar que o procedimento adotado para restaurar os dados não faz parte do padrão CCR, sendo responsabilidade do processo de aplicação específico definí-lo.

O CCR também pode ser usado para coordenar a atualização de dados feita por várias ações atômicas concorrentes. A coordenação baseia-se na serialização da execução das ações concorrentes. O CCR só permite que uma ação se inicie quando não existir nenhuma outra em andamento. O que é facilmente implementado já que o serviço CCR só atende a um par de entidades de aplicação, interagindo no contexto de uma única associação de aplicação.

Para tratar casos onde mais de dois usuários estão envolvidos em uma aplicação distribuída, a ISO desenvolveu um outro padrão denominado Distributed Transaction Processing (DTP) .