Pending Transaction

Durante a operação regular dos HSMs e com todos os nós funcionando normalmente não devem haver muitas situações de Transação Pendente. Estas são transações de replicação que por algum motivo começaram o protocolo de transação distribuída (Two Phase Commit), mas não puderem ser concluídas. Uma transação pendente envolve ao menos dois nós do pool, um deles sendo o coordenador e outro um participante. Na maioria dos casos o próprio mecanismo de replicação do HSM pode se recuperar sozinho e resolver a pendência que estava impedindo a transação de completar. Noutros casos, por exemplo um defeito de hardware ou problema de comunicação pode exigir a intervenção do operador.

                        Dinamo - Local Management Console






                       ┌──────────────┤  ├──────────────┐
                       │                                │
                       │  No pending transaction found. │
                       │                                │
                       │            ┌────┐              │
                       │            │ OK │              │
                       │            └────┘              │
                       │                                │
                       │                                │
                       └────────────────────────────────┘







  Service running...                                Replication Domain: <list>
Nó sem replicação pendente

Uma transação pendente vai deixar todo o pool bloqueado para novas operações de escrita (write); as operações de leitura (read) continuam sendo feitas normalmente.

Quando existe uma transação a tela irá exibir várias informações sobre ela:

  • Now: data e hora atuais (quando foi aberta a tela), apenas para efeito informativo;
  • Data/Time: data e hora (timestamp) quando foi gerada a transação;
  • GUID: identificador único da transação, todos os nós envolvidos numa transação replicada reconhecem a transação pelo mesmo identificador;
  • State: o estado do protocolo Tow Phase Commit onde a transação parou;
  • Type: tipo de transação, como por exemplo criação ou remoção de chave, criação ou remoção de usuários.
  • Source: usuário responsável pela transação, aquele que fez a requisição inicial de serviço;
  • Target: usuário afetado pela transação, pode ser o mesmo indicado em Source, ou um outro se a transação envolver operações numa partição de usuário remoto (via permissionamento);
  • Nodes: a lista de nós conhecida pela HSM no momento da transação; é com esta lista de nós que o HSM vai tentar concluir a replicação. O primeiro nó na lista é sempre o coordenador. O nó que aparece com a marcação PA (Pending Ack) é aquele que não completou a comunicação do protocolo de replicação. Este normalmente é um bom ponto de partida para investigação das causas de problema.
                        Dinamo - Local Management Console


         ┌─────────────────────────┤  ├─────────────────────────┐
         │                                                      │
         │  Now       : 2023-12-17 16:17:00                     │
         │  Date/Time : 2023-12-17 16:16:32                     │
         │                                                      │
         │  GUID      : 0102030405060708                        │
         │  State     : Phase 2 - Coordinator                   │
         │  Type      : Lock/Probe/Test                         │
         │  Source    : ET_NULL_USR                             │
         │  Target    : ET_NULL_OBJ                             │
         │  Nodes     : 172.17.0.3                              │
         │              172.17.0.3      - PA                    │
         │                                                      │
         │                        ┌────┐                        │
         │                        │ OK │                        │
         │                        └────┘                        │
         │                                                      │
         └──────────────────────────────────────────────────────┘



  Service running...                                Replication Domain: <list>
Informação sobre uma transação pendente

O mecanismo de replicação tem um serviço automático de recuperação (recovery), que de tempo em tempo vai tentar algumas medidas, como retransmissão, para eliminar a pendência e concluir a transação. O intervalo de tempo em que roda o serviço de recuperação automática é definido na opção Policy do menu de replicação.

A razão para o surgimento de um Transação Pendente na maior parte das vezes pode ser algo simples, como um nó com serviço parado ou com problema de comunicação com o restante do pool (cabo de rede, porta de switch, link down, etc), e algumas vezes pode precisar de uma investigação mais profunda. Todas as informações mostradas são relevantes para identificar a causa e solução do problema.

Algumas informações de Transação Pendente também podem ser exibidas pala Console Remota do HSM.