PowerScale: O OneFS perde bloqueios do NFSv4 na reinicialização do nó
Summary: Os clients NFSv4 podem perder bloqueios ou não conseguir liberar bloqueios corretamente após a reinicialização do nó.
Symptoms
Esse problema está presente em todas as versões do OneFS antes de corrigir o desenvolvimento.
Ele pode afetar qualquer aplicativo que usa operações de bloqueio e NFSv4.
Esse problema tem sido observado com mais frequência com aplicativos "Message Queue", como ActiveMQ ou OpenMQ, pois eles usam extensivamente os mecanismos de bloqueio NFSv4.
Para aplicativos MQ; geralmente, ele se manifesta como um servidor MQ secundário assumindo o controle para o primário quando não deveria.
Isso causa interrupções ou inconsistências de dados que exigem intervenção manual no lado do aplicativo para serem resolvidas.
Quando observado em capturas de pacotes, o client bloqueia um arquivo com sucesso enquanto um segundo client tenta accessá-lo.
Quando o nó do client de bloqueio está conectado às reinicializações, o segundo client é concedido ao bloqueio.
O primeiro client recebe um erro quando a trava termina, pois ele não tem mais o bloqueio.
O problema pode ser reproduzido da seguinte forma:
- No primeiro client, monte uma exportação usando o NFSv4.0.
- No segundo client, monte a mesma exportação usando o NFSv4.0.
- No primeiro client, bloqueie um arquivo por 5 minutos.
- No segundo client, inicie um loop tentando bloquear o mesmo arquivo.
- Reinicialize o nó do OneFS ao qual o primeiro client está conectado.
- Se o problema estiver presente, o segundo client será concedido um bloqueio antes do fim do primeiro bloqueio do client.
Cause
Houve um erro em nossa lógica para mover as conexões NFSv4 para outros nós que fazia com que os bloqueios fosse liberados na reinicialização do nó.
Resolution
Corrigir:
Faça upgrade ou faça o patch para uma das seguintes versões do OneFS.
- 9.1.0.19+
- 9.2.1.12+
- 9.4.0.3+
- 9.5.0.0+
Solução alternativa:
Não há soluções temporárias para esse problema.