[dancer-users] Lock session files with Dancer2::Session::YAML?

Stefan Hornburg (Racke) racke at linuxia.de
Sat May 3 07:29:16 BST 2014


On 05/02/2014 10:07 PM, Maxwell Carey wrote:
> Is it possible to lock session files created by Dancer2::Session::YAML in order to avoid race conditions when two processes try to write to the same session at the same time? For example, if I have the following routes:
> 
> get '/foo' => sub {
>     my $foo = session 'foo';
>     session 'foo' => ++$foo;
> };
> 
> get '/bar' => sub {
>     my $bar = session 'bar';
>     session 'bar' => ++$bar;
> };
> 
> and both are called at the same time, one route "wins", resulting in either the value of 'foo' or 'bar' being updated, but not both.
> 
> If it's not possible (or easy) to lock the file, I would be open to an alternative storage backend, although I was hoping to keep things as simple as possible, i.e. 
> I don't want to have to spin up a new MySQL database or equivalent. The existing Dancer2::Session:: backends all seem somewhat...involved. Any ideas?
> 

It makes a lot of sense to lock sessions, in any session backend (not only file based). Locking file based sessions
isn't a big deal.

Regards
	Racke


-- 
LinuXia Systems => http://www.linuxia.de/
Expert Interchange Consulting and System Administration
ICDEVGROUP => http://www.icdevgroup.org/
Interchange Development Team



More information about the dancer-users mailing list