Re: fork and keeping connection DBD::Oracle ?
From: gary sekinger (gary_at_sekinger.com)
Date: 07/30/04
- Next message: Ravi Kongara: "Re: insert into statement problem"
- Previous message: gary sekinger: "Re: fork and keeping connection DBD::Oracle ?"
- In reply to: gary sekinger: "Re: fork and keeping connection DBD::Oracle ?"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Fri, 30 Jul 2004 16:54:23 GMT
Here's a slightly changed version of the program. This version runs
fine on an older version of DBI but fails on the newer version.
Older version:
perl: 5.005_03
dbi: 1.21
Newer version:
perl: 5.005_03
dbi: 1.37
Output from the older version:
<rack-bsd27 gsekinger 75> perl test.pl
Fri Jul 30 12:52:21 2004: DBI Version is 1.21
Fri Jul 30 12:52:21 2004: parent: process 876, connected to database
"testzilla" on host "zilla.palab.panasas.com"
Fri Jul 30 12:52:21 2004: parent: 876 now has new child 877
Fri Jul 30 12:52:21 2004: child: 877 is alive
Fri Jul 30 12:52:21 2004: parent: DB Version is '2.0'
Fri Jul 30 12:52:21 2004: child: DB Version is '2.0'
Fri Jul 30 12:52:22 2004: parent: DB Version is '2.0'
Fri Jul 30 12:52:22 2004: child: DB Version is '2.0'
Fri Jul 30 12:52:23 2004: parent: DB Version is '2.0'
Fri Jul 30 12:52:23 2004: child: DB Version is '2.0'
Fri Jul 30 12:52:24 2004: parent: DB Version is '2.0'
Fri Jul 30 12:52:24 2004: child: DB Version is '2.0'
Fri Jul 30 12:52:25 2004: parent: DB Version is '2.0'
Fri Jul 30 12:52:25 2004: child: DB Version is '2.0'
Fri Jul 30 12:52:26 2004: parent: DB Version is '2.0'
Fri Jul 30 12:52:26 2004: child: DB Version is '2.0'
Fri Jul 30 12:52:27 2004: parent: DB Version is '2.0'
Fri Jul 30 12:52:27 2004: child: DB Version is '2.0'
Fri Jul 30 12:52:28 2004: parent: DB Version is '2.0'
Fri Jul 30 12:52:28 2004: child: DB Version is '2.0'
Fri Jul 30 12:52:29 2004: parent: DB Version is '2.0'
Fri Jul 30 12:52:29 2004: child: DB Version is '2.0'
Fri Jul 30 12:52:30 2004: parent: DB Version is '2.0'
Fri Jul 30 12:52:30 2004: child: DB Version is '2.0'
Fri Jul 30 12:52:31 2004: parent: DB Version is '2.0'
Fri Jul 30 12:52:31 2004: child: DB Version is '2.0'
Fri Jul 30 12:52:32 2004: parent: DB Version is '2.0'
Fri Jul 30 12:52:32 2004: child: disconnected
Fri Jul 30 12:52:33 2004: parent: DB Version is '2.0'
Fri Jul 30 12:52:34 2004: parent: DB Version is '2.0'
Fri Jul 30 12:52:35 2004: parent: DB Version is '2.0'
Fri Jul 30 12:52:36 2004: parent: DB Version is '2.0'
Fri Jul 30 12:52:37 2004: parent: rc from child was 877
Fri Jul 30 12:52:37 2004: parent: exiting
<rack-bsd27 gsekinger 76>
Output from the newer version:
<cassiar gsekinger 96> perl test.pl
Fri Jul 30 12:51:55 2004: DBI Version is 1.37
Fri Jul 30 12:51:55 2004: parent: process 63901, connected to database
"testzilla" on host "zilla.palab.panasas.com"
Fri Jul 30 12:51:55 2004: parent: 63901 now has new child 63902
Fri Jul 30 12:51:55 2004: child: 63902 is alive
Fri Jul 30 12:51:55 2004: parent: DB Version is '2.0'
Fri Jul 30 12:51:55 2004: child: DB Version is '2.0'
Fri Jul 30 12:51:56 2004: parent: DB Version is '2.0'
Fri Jul 30 12:51:56 2004: child: DB Version is '2.0'
Fri Jul 30 12:51:57 2004: parent: DB Version is '2.0'
Fri Jul 30 12:51:57 2004: child: DB Version is '2.0'
Fri Jul 30 12:51:58 2004: parent: DB Version is '2.0'
Fri Jul 30 12:51:58 2004: child: DB Version is '2.0'
Fri Jul 30 12:51:59 2004: parent: DB Version is '2.0'
Fri Jul 30 12:51:59 2004: child: DB Version is '2.0'
Fri Jul 30 12:52:00 2004: parent: DB Version is '2.0'
Fri Jul 30 12:52:00 2004: child: DB Version is '2.0'
Fri Jul 30 12:52:01 2004: parent: DB Version is '2.0'
Fri Jul 30 12:52:01 2004: child: DB Version is '2.0'
Fri Jul 30 12:52:02 2004: parent: DB Version is '2.0'
Fri Jul 30 12:52:02 2004: child: DB Version is '2.0'
Fri Jul 30 12:52:03 2004: parent: DB Version is '2.0'
Fri Jul 30 12:52:03 2004: child: DB Version is '2.0'
Fri Jul 30 12:52:04 2004: parent: DB Version is '2.0'
Fri Jul 30 12:52:04 2004: child: DB Version is '2.0'
Fri Jul 30 12:52:05 2004: parent: DB Version is '2.0'
Fri Jul 30 12:52:05 2004: child: DB Version is '2.0'
Fri Jul 30 12:52:06 2004: parent: DB Version is '2.0'
Fri Jul 30 12:52:06 2004: child: disconnected
DBD::mysql::db selectrow_array failed: MySQL server has gone away at
test.pl line 75.
Use of uninitialized value at test.pl line 76 (#1)
(W) An undefined value was used as if it were already defined. It
was
interpreted as a "" or a 0, but maybe it was a mistake. To
suppress this
warning assign an initial value to your variables.
Fri Jul 30 12:52:07 2004: parent: DB Version is ''
Fri Jul 30 12:52:08 2004: parent: DB Version is ''
Fri Jul 30 12:52:09 2004: parent: DB Version is ''
Fri Jul 30 12:52:10 2004: parent: DB Version is ''
Fri Jul 30 12:52:11 2004: parent: rc from child was 63902
Fri Jul 30 12:52:11 2004: parent: exiting
<cassiar gsekinger 97>
program:
#!/usr/bin/perl -w
use strict;
use diagnostics;
use DBI;
use POSIX ":sys_wait_h";
####################################################
# global stuff: database variables & such
####################################################
my $db_host;
my $db_name;
my $db_user_name;
my $db_password;
my $dsn;
my $sql = '';
my $location = 'pan-east';
my $global_child_pid;
sub pan_qa_log($) {
my $line = $_[0];
print localtime() . ": $line\n";
}
sub LaunchChild() {
my $db_version;
my $pid = fork();
if (!defined($pid)) {
# I am the parent, when fork fails
pan_qa_log("parent: Error: can not fork!");
return;
}
else {
if ($pid) {
# I am the parent, when fork succeeds
pan_qa_log("parent: $$ now has new child $pid");
$global_child_pid = $pid;
return;
}
}
pan_qa_log(" child: $$ is alive");
my $child_dbh = DBI->connect($dsn, $db_user_name, $db_password);
my $i = 0;
do {
$db_version = $child_dbh->selectrow_array(qq{SELECT db_version
FROM location WHERE location = '$location'});
pan_qa_log " child: DB Version is '$db_version'";
sleep(1);
$i++;
} until ($i > 10);
$child_dbh->disconnect();
pan_qa_log " child: disconnected";
exit(1);
}
##################################################################################
#main program
##################################################################################
my $db_version;
my $i = 0;
pan_qa_log("DBI Version is $DBI::VERSION");
#default values
$db_host = "the mysql host computer";
$db_name = "testzilla";
$db_user_name = "sqluser";
$db_password = "";
$dsn = "DBI:mysql:database=${db_name};host=${db_host}";
my $dbh = DBI->connect($dsn, $db_user_name, $db_password);
pan_qa_log "parent: process $$, connected to database \"$db_name\" on
host \"$db_host\"";
LaunchChild();
do {
$db_version = $dbh->selectrow_array(qq{SELECT db_version FROM
location WHERE location = '$location'});
pan_qa_log "parent: DB Version is '$db_version'";
sleep(1);
$i++;
} until ($i > 15);
my $kid = 0;
$kid = waitpid($global_child_pid,&WNOHANG);
pan_qa_log("parent: rc from child was $kid");
$dbh->disconnect();
pan_qa_log "parent: exiting";
- Next message: Ravi Kongara: "Re: insert into statement problem"
- Previous message: gary sekinger: "Re: fork and keeping connection DBD::Oracle ?"
- In reply to: gary sekinger: "Re: fork and keeping connection DBD::Oracle ?"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|