mod_perl ApacheDBI AutoCommit

C

Christophe Goer

Hello,

I'm facing quite a big problem since i started to use ApacheDBI with
mod_perl and Apache.

I'm working on Apache 1.3 with mod_perl and Postgres 7.2.

before ApacheDBI, I was caching my $dbh with an home made singleton object.

I used to open connection with AutoCommit On, change AutoCommit on the
fly this way :

my $dbh = DBI->connect( ... {AutoCommit => 1, ..} ) ...

local $dbh->{AutoCommit} = 0;

eval
{

# call to EmilSignal on the parent object
$this->EmitSignal( $event_id, @extra_args );
# call to Update on another object call "Thread"
$thread->Update(); #Serialize thread.

$dbh->commit();

};

if ($@) {
$dbh->rollback();
die $@;
}


local $dbh->{AutoCommit} = 1;

....

This was working fine, each of those (this->EmitSignal and
$thread->Update) was retrieving the same dbh from the singleton,
autocommit was off and $dbh->commit was commiting all.

When i was logging $dbh->{AutoCommit}, there was no value (=0)

Since i installed ApacheDBI, this doesn't work anymore. When i log the
$dbh retrieved from the different objects (Thread and the parent
object), i've got the same reference, something like
Apache::DBI::db=HASH(0x8f1b840) for all of them.

by my error_log gives me Warning in Perl code: commit ineffective with
AutoCommit enabled at
/home/httpd_akio/pgakio/lib/perl/Akio/ThreadManager.pm line 170

when i log $dbh->{AutoCommit}, it's 1 and not 0!!

It seems that the $dbh->{AutoCommit} = 0; only affects the $dbh used in
the block, and not the one used in the subroutines, something like if
the Apache::DBI retrieve from the subroutines was the one created by the
connect_on_init from the startup.pl.

Am i missing someting?

Thanks a lot for your help

Christophe
 
C

Christophe Goer

With further investigation in ApacheDBI, it seems that all the handlers
are cached in global %Apache::DBI::Connected. So you only modify the
local copy that is send by Apache::DBI.

Isn't it possible to change parameters of the cached handlers??

Christophe
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,055
Latest member
SlimSparkKetoACVReview

Latest Threads

Top