Apache-Sybase-ConPool

 view release on metacpan or  search on metacpan

ConPool.pm  view on Meta::CPAN


sub initialize {
    my $file = shift;

    loadConfig($file);

    my $verbose = $config{'DbVerbose'};
    my $hostname = hostname;
    ($hostname) = split(/\./, $hostname);
	
    my $timeout = $config{'DbTimeout'} || 30;
    if(ct_config(CS_SET, CS_TIMEOUT, $timeout, CS_INT_TYPE) != CS_SUCCEED) {
	warn "[ConPool] ct_config(CS_TIMEOUT) failed\n";
    }   
    
    my $max_connect = $config{'DbNumConnect'} || 40;
    ct_config(CS_SET, CS_MAX_CONNECT, $max_connect, CS_INT_TYPE);
	
    for(my $i = 1; $i <= $config{DbNumPools} || 1; ++$i) {
	my $data = $config{"ConPool$i"};
	if(!$data) {

ConPool.pm  view on Meta::CPAN

    my $count = $share{$srv}->{COUNT};

    my $sem = new IPC::Semaphore($key, 0, 0666);
    my $r;
    my $used = 0;
    my $sleep = 0;

    my %ignore;

    my $sleepTime = $config{'DbSleepTime'} || 0.25;
    my $semTimeout = $config{'SemTimeout'} || 30;

    my $now = time;

    eval {
	my $h = Sys::Signal->set(ALRM => sub { die "Timeout\n"; } );
	alarm($semTimeout);
	$r = $sem->op(0, -1, 0);
	alarm(0);
    };
    if($@ && $@ =~ /Timeout/) {
	warn "[ConPool] semaphore timed out for $srv\n";
	return undef;
    }

    my $diff = time - $now;
    if($diff) {
	warn "[ConPool] Semaphore acquisition for $srv: $diff seconds\n";
    }

 RETRY:;



( run in 0.815 second using v1.01-cache-2.11-cpan-a5abf4f5562 )