wiki:filemanager/concorrencia

Version 2 (modified by amuller, 14 years ago) (diff)

--

Como funciona

O controle de concorrência no gerenciador de arquivos se baseia no timestamp da data de modificação do arquivo. Quando o usuário edita o arquivo o sistema atualiza a data automaticamente de 20 em 20 segundos. Quando a data for mais recente que o ultimo minuto ninguém mais além daquele usuário pode editar o arquivo. Como na figura abaixo:

Lock do filemanager

Sugestão de implementação de edição compartilhada

Esta implementação não existe ainda, mas a documentação sugere uma implementação:

  • O usuário requisita a edição do arquivo.
  • O sistema gera uma versão intermediária em memória (possivelmente sessão do usuário) e gera um identificador e passa para o usuário.
  • O usuário edita e envia o arquivo editado.
  • O sistema verifica se o identificador é o mesmo, gera uma representação de diferença (diff) entre a versão intermediária e o arquivo editado do usuário.
  • O sistema efetua o commit no sistema de arquivos.
  • O sistema atualiza a versão intermediária, gera um novo identificador e envia para o usuário.

Esta representação de diferença (diff) deve levar em consideração somente o pedaço diferente e não o arquivo todo. Sendo assim um pedaço do arquivo que esteja diferente da versão intermediária será atualizada no passo final.

Se a função de commit do sistema for implementada de forma a não destruir informações já existentes (aplicar o diff corretamente) vários usuários poderão editar 1 único arquivo ao mesmo tempo.

Attachments