NAME

IPC::ConcurrencyLimit::Lock::MySQL - Locking via MySQL GET_LOCK

SYNOPSIS

use IPC::ConcurrencyLimit;

DESCRIPTION

This locking strategy uses MySQL's GET_LOCK to implement locking across multiple hosts.

METHODS

new

Given a hash ref with options, attempts to obtain a lock in the pool. On success, returns the lock object, otherwise undef.

Required parameters:

lock_name

The name prefix for the named GET_LOCK locks to use. Make sure this doesn't collide with any other locks.

make_new_dbh

A code reference that, when called, will return a NEW database handle for use in locking. If it returns a handle that is used for other purposes as well, there can be strange action at a distance since MySQL allow exactly one lock at a time per connection. If a second GET_LOCK is issued for the same connection, the old lock will be silently released!

max_procs

The maximum no. of locks (and thus usually processes) to allow at one time.

Options:

timeout

The time-out in seconds when trying to obtain a lock. Defaults to 0, non-blocking.

AUTHOR

Steffen Mueller, smueller@cpan.org

ACKNOWLEDGMENT

This module was originally developed for booking.com. With approval from booking.com, this module was generalized and put on CPAN, for which the author would like to express his gratitude.

COPYRIGHT AND LICENSE

(C) 2011, 2013 Steffen Mueller. All rights reserved.

This code is available under the same license as Perl version
5.8.1 or higher.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.