Adiciona suporte transacional do MongoDB, para transações envolvendo múltiplas coleções.
Onde a revisão poderia começar?
Sugiro olhar para as modificações no módulo documentstore/services.py, pois elas demontram o uso do que foi implementado. Em seguida sugiro olhar para a classe adapters.TransactionalSession.
Como este poderia ser testado manualmente?
Será um pouco trabalhoso. Você precisará de um replica set de MongoDB na versão > 4.0. Uma vez configurado o replica set, você terá que executar o comando kernelctl create-collections para que seja criada a estrutura inicial do banco de dados (apenas para MongoDB < 4.4), e habilitar o suporte transacional na diretiva KERNEL_APP_MONGODB_TRANSACTIONS_ENABLED. Por padrão esta diretiva foi definida com o valor False para ser coerente com as demais diretivas, que facilitam a instalação com instâncias standalone.
Para ver a funcionalidade em ação será necessário provocar uma exceção que interrompa a execução normal de uma operação composta que envolva escrita em várias coleções, como por exemplo o registro de um novo documento. Você poderá alterar o código incluindo uma divisão por zero imediatamente antes da invocação do método session.notify, no módulo services.py.
Algum cenário de contexto que queira dar?
Esta modificação corrige potenciais perdas de dados resultado de operações que falham parcialmente, como por exemplo o registro de uma nova versão do XML mas que falhou ao registrar o respectivo evento no feed de mudanças.
Adiciona suporte transacional do MongoDB, para transações envolvendo múltiplas coleções.
Onde a revisão poderia começar?
Sugiro olhar para as modificações no módulo
documentstore/services.py
, pois elas demontram o uso do que foi implementado. Em seguida sugiro olhar para a classeadapters.TransactionalSession
.Como este poderia ser testado manualmente?
Será um pouco trabalhoso. Você precisará de um replica set de MongoDB na versão > 4.0. Uma vez configurado o replica set, você terá que executar o comando
kernelctl create-collections
para que seja criada a estrutura inicial do banco de dados (apenas para MongoDB < 4.4), e habilitar o suporte transacional na diretivaKERNEL_APP_MONGODB_TRANSACTIONS_ENABLED
. Por padrão esta diretiva foi definida com o valorFalse
para ser coerente com as demais diretivas, que facilitam a instalação com instâncias standalone.Para ver a funcionalidade em ação será necessário provocar uma exceção que interrompa a execução normal de uma operação composta que envolva escrita em várias coleções, como por exemplo o registro de um novo documento. Você poderá alterar o código incluindo uma divisão por zero imediatamente antes da invocação do método
session.notify
, no móduloservices.py
.Algum cenário de contexto que queira dar?
Esta modificação corrige potenciais perdas de dados resultado de operações que falham parcialmente, como por exemplo o registro de uma nova versão do XML mas que falhou ao registrar o respectivo evento no feed de mudanças.
Screenshots
n/a
Quais são tickets relevantes?
140
Referências