Quando eu devo usar CFLOCK?

Esta semana andou rolando na lista CF-Brasil algumas perguntas sobre o uso da tag CFLOCK em CFMX. Não tem segredo ou complicação. Procure nos arquivos da lista ou então leia esta FAQ, feita por Ben Forta e disponível no CFFAQ.com:

A função da tag CFLOCK é a de controlar o acesso simultâneo de um pedaço de código ou mesmo de um escopo inteiro de variável. Versões anteriores do ColdFusion (pré CFMX) tinham uma limitação em que acessos simultâneos não protegidos à variáveis compartilhadas (como SESSION ou APPLICATION) podiam resultar em acessos indevidos à memória do servidor e, como consequência, falha do mesmo. Isso já não acontece com o ColdFusion MX, porém ainda existem casos onde devemos usar a tag CFLOCK. Primeiramente qualquer código que não é feito para acesso multi-usuário (tags de terceiros, acesso a arquivos de sistema, etc) deve ser protegido para garantir o acesso de forma sequenciada (em oposição ao acesso concorrente). Depois, mesmo que o acesso à variáveis compartilhadas não cause problemas no servidor, ele pode causar problemas de inconsistência na sua aplicação. Por exemplo, se uma aplicação atualiza um valor de uma variável do tipo APPLICATION e o código para esta atualização não está protegido com o lock, existe a possibilidade de usuários acessarem valores antigos (ainda não atualizados) e ao mesmo tempo valores novos (já atualizados). Talvez isso não seja um problema, dependendo da sua aplicação, porém se isso estiver afetando-a, é o caso de usar CFLOCK.


2 Comments on “Quando eu devo usar CFLOCK?”

  1. Nadaver com o CFLOCK, mas esse Yahoo!Groups anda bem engraçado. Anteontem me (re-)cadastrei na CF-Brasil. Ontem foi aceito por um moderador mas até agora não recebi nenhuma mensagem.

    Umas semanas atrás entrei para uma lista de assinantes do Velox no Rio. Depois de alguns dias resolvi sair mas só parei de receber e-mail dois ou três dias depois de dar o comando.

    O Yahoo! já foi melhor… 😉

    OK, então falando sobre o CFLOCK… bom saber que o MX é menos chato quanto ao locking. Eu tive que me tornar paranóico com CFLOCK tascando a tag onde devia e não devia pra evitar dor-de-cabeça.

  2. Alex Hubner disse:

    Pois é Cris! Eu estou ficando de saco cheio do Yahoo! Groups. O pior é que não temos muito outras alternativas. O melhor que conheço (depois do Yahoo! do passado) é o Topica.com, mas não sei se ele tem limite de espaço como os míseros 32Mb do Yahoo! ou outros problemas.

    Fora estas opções temos a tupiniquim Grupos.com.br que eu abomino pois eles são muito inseguros (é possível “roubar” uma lista via injections na aplicação deles). Mamão com açúcar, basta fuçar um pouco dentro do processo de transferência de owner que você descobre como…. Ops! Não podia ter dito isso.

    A última solução é hospedar a própria lista, mas isso requer duas coisas: 1) um servidor próprio, 2) dinheiro para pagar a banda consumida com as mensagens. O primeiro não é problema, já o segundo…. Não tô afim de pagar 200 paus de tráfego extra em meus servidores.

    Continuamos com o Yahoo até que a coisa seja insuportável.

    Alguém tem uma sugestão??