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>
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>
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.