01. DADOS GERAIS
Produto: | TOTVS CRM Gestão de Clientes |
---|
Linha de Produto: | |
---|
Segmento: | |
---|
Módulo: | Contas |
---|
Função: |
|
---|
País: | Brasil |
---|
Ticket: |
|
---|
Requisito/Story/Issue (informe o requisito relacionado) : |
DTCRMSD-828
-
Obtendo detalhes do item...
STATUS
|
---|
02. SITUAÇÃO/REQUISITO
Quando ocorrem atualizações de compartilhamento e reprocessamento de regras de visibilidade, dependendo da quantidade de registros modificados, nota-se um consumo excessivo de recursos de banco de dados e aumento no tempo de resposta de requisições. Isso se dá decorrente do processo de atualização do updatedAt
dos registros na base do cliente. Esse processo ocorre de maneira sincrona a fim de disponibilizar para o mobile os registros que sofreram alterações de acesso, e para tanto, como é um processo ostensivo, além de impactar a performance da operação, leva a também fragmentar as tabelas desnecessariamente no banco de dados.
03. SOLUÇÃO
A solução para resolver o problema mecionado acima foi retardar a execução dos updatedAt
s, realizando os mesmos de maneira isolada, num fluxo a parte, não sincrono com a requisição, eliminando operações repetidas.
- Foi disponibilizado um esquema compartilhado que registra todas as inteções de atualização de updatedAt em todos os tenants ao invés de aplicá-las diretamente na base.
- A cada 10 minutos um scheduler lê essa tabela, processa todos as intenções de atualização realizadas no intervalo, e confirma todas as atualizações de
updatedAt
s. - Ações repetidas são processadas apenas uma vez e compartilhamentos mais permissivos desativam atualizações mais restritivas, garantindo assim o menor número de atualizações seja realizada.
- Qualquer fluxo que altere / edite regras de compartilhamento passam a realizar a atualização do
updatedAt
tardia com a disponibilização desse fluxo.
- O mecanismo é configurável por variável de ambiente, podendo ser ativado / desativado dinâmicamente.
- A partir desse fluxo os registros disponibilizados para o mobile ao passo que uma regra é alterada levam um ciclo de atualização para serem efetivamente disponibilizados para sincronização.
- Foi disponibilizado essa alteração na biblioteca do forseti-client podendo ela ser disponibilizada em outro serviço conforme interesse.
- A configuração parametrizável do tempo entre cada ciclo de checagem / efetivação da alteração do
updatedAt
já foi realizada e estará sendo entregue nas próximas releases.
05. ASSUNTOS RELACIONADOS
Não há.