On Nov 3, 4:29 pm, rehs...@googlemail.com (Jens Rehsack) wrote:
> 2010/11/3 Martin J. Evans <martin.ev...@easysoft.com>:
>
> > Is it really worth changing DBD::Oracle for what effectively is a one liner?
>
> No, because it's not safe for each Oracle configuration. It must keep up to 
> the
> developer to figure out when it's safe.
>
> > Perhaps some better documentation on connect would suffice once we get to 
> > the bottom of Brian's observation.
>
> Yes :)
>

Additional documentation would be helpful but it does not solve the
problem when the user is using a high-level tool such as DBIx::Class
or even Apache::DBI (e.g. Apache::DBI->connect_on_init($data_source,
$username, $auth, \%attr)) that manages the connection for the user.
With these types of tools, it is often difficult to have code executed
in the appropriate scope.  For instance, with DBIx::Class:

  {
    local $SIG{INT};
    MyDB::Schema->connect($dbi_dsn, $user, $pass, \%dbi_params); #
this does not do a DBI->connect
  }

  # later on...
  $schema->resultset('Artist')->search(...); # this does the connect

I don't know if it's realistic to expect every tool that builds on top
of DBI to provide a way for the user to inject this localizing
functionality at the appropriate point.  As a compromise solution,
perhaps an additional DBI attribute could be added that would allow
the user to either specifically localize the INT signal or more
flexibly, specify a set of signals that need to be localized.
Something like this:

  DBI->connect($dbi_dsn, $user, $pass, { ora_loc_sigs => ['INT'] });

I've created another gist here 
https://gist.github.com/660058#file_strace_of_interrupted_process.txt
that shows some Perl code and a relevant part of that processes strace
output.  Is there any further information that I can provide that
would be helpful to diagnose what is actually triggering this behavior
for me?

Reply via email to