IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 13309


Ignore:
Timestamp:
May 8, 2007, 1:47:03 PM (19 years ago)
Author:
jhoblitt
Message:

more debugging tracing
change ->db() check if the dbh is still alive before blindly creating a new connection
restructure ->create_object() to use a single eval block

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Nebulous-Server/lib/Nebulous/Server.pm

    r13303 r13309  
    11# Copyright (c) 2004  Joshua Hoblitt
    22#
    3 # $Id: Server.pm,v 1.42 2007-05-08 02:31:34 jhoblitt Exp $
     3# $Id: Server.pm,v 1.43 2007-05-08 23:47:03 jhoblitt Exp $
    44
    55package Nebulous::Server;
     
    5454
    5555        $db->commit;
     56        $log->debug("commit");
    5657    };
    5758    if ( $@ ) {
    5859        $db->rollback if $db;
     60        $log->debug("rollback");
    5961        $log->logdie( "database error: $@" );
    6062    }
    6163
    6264    $log->debug( "connected to database: ", sub { $db->data_sources; } );
    63 
    64     $log->debug( "leaving" );
    6565
    6666    my $self = bless {}, ref $class || $class;
     
    7070    $self->config($config);
    7171
     72    $log->debug( "leaving" );
     73   
    7274    return $self;
    7375}
     
    8082        return $self;
    8183    }
    82    
     84
    8385    my $log     = $self->log;
    8486    my $sql     = $self->sql;
    8587    my $config  = $self->config;
    8688
     89    # if the dbh is still alive, return it
     90    if (defined $self->{db} and $self->{db}->ping) {
     91        $log->debug("db handle is still alive");
     92        return $self->{db};
     93    }
     94    # otherwise create a new connection
     95    $log->debug("db handle is dead");
     96
    8797    # if we're running under mod_perl & Apache::DBI is loaded we want to
    88     # reconnect to the database everytime the dbh is request.  The rational is
     98    # reconnect to the database everytime the dbh is requested.  The rational is
    8999    # that if we're running under mod_perl this is probably a log running
    90100    # processes and the database might have gone away on us.  Apache::DBI will
     
    107117
    108118            $db->commit;
     119            $log->debug("commit");
    109120        };
    110121        if ( $@ ) {
    111122            $db->rollback if $db;
     123            $log->debug("rollback");
    112124            $log->logdie( "database error: $@" );
    113125        }
     
    145157    $log->debug( "entered - @_" );
    146158
    147     my $ins_id;
     159    my ($uri, $vol_id);
    148160    eval {
    149161        {
     
    177189        }
    178190
     191        my $ins_id;
    179192        {
    180193            # get instance ID
     
    187200            $query->finish;
    188201        }
    189     };
    190     if ($@) {
    191         $db->rollback;
    192         $log->logdie("database error: $@");
    193     }
    194 
    195     # Unfortunately, since we want to use the instance row's ID as part of the
    196     # actual on disk file name we can't try to create the file until after
    197     # we've create both a new storage_storage object and instance.
    198 
    199     # TODO add some stuff here to retry if unsucessful
    200     my ($uri, $vol_id);
    201     eval {
     202
     203        # Unfortunately, since we want to use the instance row's ID as part of the
     204        # actual on disk file name we can't try to create the file until after
     205        # we've create both a new storage_storage object and instance.
     206
     207        # TODO add some stuff here to retry if unsucessful
    202208        ($uri, $vol_id) = $self->_create_empty_instance_file($key, $ins_id, $vol_name);
    203     };
    204     if ($@) {
    205         $db->rollback;
    206         $log->logdie($@);
    207     }
    208 
    209     $log->debug("created $uri on volume ID: $vol_id");
    210 
    211     eval {
    212         {
     209        $log->debug("created $uri on volume ID: $vol_id");
     210
     211        {
     212            # update the instance with URI & vol_id that the file is on
    213213            my $query = $db->prepare_cached( $sql->update_instance_uri );
    214214            # vol_id, uri, ins_id
     
    221221    if ($@) {
    222222        $db->rollback;
    223         $log->logdie("database error: $@");
     223        $log->debug("rollback");
     224        $log->logdie("error: $@");
    224225    }
    225226
     
    267268
    268269        $db->commit;
    269     };
    270     if ($@) {
    271         $db->rollback;
     270        $log->debug("commit");
     271    };
     272    if ($@) {
     273        $db->rollback;
     274        $log->debug("rollback");
    272275        $log->logdie("database error: $@");
    273276    }
     
    315318                $query->finish;
    316319                $db->rollback;
     320                $log->debug("rollback");
    317321                $log->logdie( "storage object does not exist" );
    318322            }
     
    339343    if ($@) {
    340344        $db->rollback;
     345        $log->debug("rollback");
    341346        $log->logdie( "database error: $@" );
    342347    }
     
    353358    if ($@) {
    354359        $db->rollback;
     360        $log->debug("rollback");
    355361        $log->logdie($@);
    356362    }
     
    364370
    365371        $db->commit;
    366     };
    367     if ($@) {
    368         $db->rollback;
     372        $log->debug("commit");
     373    };
     374    if ($@) {
     375        $db->rollback;
     376        $log->debug("rollback");
    369377        $log->logdie("database error: $@");
    370378    }
     
    423431        $query->finish;
    424432        $db->rollback;
     433        $log->debug("rollback");
    425434        $log->logdie( "database error: $@" );
    426435    }
     
    431440        if ( $write_lock ) {
    432441            eval { $db->rollback; };
     442            $log->debug("rollback");
    433443            $log->logdie( "database error: $@" ) if $@;
    434444
     
    438448        if ( $read_lock > 0 ) {
    439449            eval { $db->rollback; };
     450            $log->debug("rollback");
    440451            $log->logdie( "database error: $@" ) if $@;
    441452
     
    453464
    454465            $db->commit;
     466            $log->debug("commit");
    455467        };
    456468        if ( $@ ) {
    457469            $db->rollback;
     470            $log->debug("rollback");
    458471            $log->logdie( "database error: $@" );
    459472        }
     
    468481        if ( $write_lock ) {
    469482            eval { $db->rollback; };
     483            $log->debug("rollback");
    470484            $log->logdie( "database error: $@" ) if $@;
    471485
     
    483497
    484498            $db->commit;
     499            $log->debug("commit");
    485500        };
    486501        if ( $@ ) {
    487502            $db->rollback;
     503            $log->debug("rollback");
    488504            $log->logdie( "database error: $@" );
    489505        }
     
    546562        $query->finish;
    547563        $db->rollback;
     564        $log->debug("rollback");
    548565        $log->logdie( "database error: $@" );
    549566    }
     
    553570        if ( $read_lock ) {
    554571            eval { $db->rollback; };
     572            $log->debug("rollback");
    555573            $log->logdie( "database error: $@" ) if $@;
    556574           
     
    559577        unless ( $write_lock ) {
    560578            eval { $db->rollback; };
     579            $log->debug("rollback");
    561580            $log->logdie( "database error: $@" ) if $@;
    562581
     
    574593
    575594            $db->commit;
     595            $log->debug("commit");
    576596        };
    577597        if ( $@ ) {
    578598            $db->rollback;
     599            $log->debug("rollback");
    579600            $log->logdie( "database error: $@" );
    580601        }
     
    590611        if ( $write_lock ) {
    591612            eval { $db->rollback; };
     613            $log->debug("rollback");
    592614            $log->logdie( "database error: $@" ) if $@;
    593615           
     
    597619        if ( $read_lock == 0 ) {
    598620            eval { $db->rollback; };
     621            $log->debug("rollback");
    599622            $log->logdie( "database error: $@" ) if $@;
    600623           
     
    613636
    614637            $db->commit;
     638            $log->debug("commit");
    615639        };
    616640        if ( $@ ) {
    617641            $db->rollback;
     642            $log->debug("rollback");
    618643            $log->logdie( "database error: $@" );
    619644        }
     
    686711    if ($@) {
    687712        $db->rollback;
     713        $log->debug("rollback");
    688714        $log->logdie("database error: $@");
    689715    }
     
    691717    eval {
    692718        $db->commit;
    693     };
    694     if ($@) {
    695         $db->rollback;
     719        $log->debug("commit");
     720    };
     721    if ($@) {
     722        $db->rollback;
     723        $log->debug("rollback");
    696724        $log->logdie("database error: $@");
    697725    }
     
    738766    if ($@) {
    739767        $db->rollback;
     768        $log->debug("rollback");
    740769        $log->logdie("database error: $@");
    741770    }
     
    778807    if ($@) {
    779808        $db->rollback;
     809        $log->debug("rollback");
    780810        $log->logdie("database error: $@");
    781811    }
     
    827857    if ($@) {
    828858        $db->rollback;
     859        $log->debug("rollback");
    829860        $log->logdie("database error: $@");
    830861    }
     
    832863    eval {
    833864        $db->commit;
    834     };
    835     if ($@) {
    836         $db->rollback;
     865        $log->debug("commit");
     866    };
     867    if ($@) {
     868        $db->rollback;
     869        $log->debug("rollback");
    837870        $log->logdie("database error: $@");
    838871    }
     
    10191052
    10201053        $db->commit;
     1054        $log->debug("commit");
    10211055    };
    10221056    if ( $@ ) {
    10231057        $db->rollback;
     1058        $log->debug("rollback");
    10241059        $log->logdie( "database error: $@" );
    10251060    }
     
    10641099    if ( $@ ) {
    10651100        $db->rollback;
     1101        $log->debug("rollback");
    10661102        $log->logdie("database error: $@");
    10671103    }
     
    11221158    if ($@) {
    11231159        $db->rollback;
     1160        $log->debug("rollback");
    11241161        $log->logdie("database error: $@");
    11251162    }
     
    11511188    if ($@) {
    11521189        $db->rollback;
     1190        $log->debug("rollback");
    11531191        $log->logdie( "database error: $@" );
    11541192    }
     
    11801218    if ($@) {
    11811219        $db->rollback;
     1220        $log->debug("rollback");
    11821221        $log->logdie( "database error: $@" );
    11831222    }
  • trunk/Nebulous/lib/Nebulous/Server.pm

    r13303 r13309  
    11# Copyright (c) 2004  Joshua Hoblitt
    22#
    3 # $Id: Server.pm,v 1.42 2007-05-08 02:31:34 jhoblitt Exp $
     3# $Id: Server.pm,v 1.43 2007-05-08 23:47:03 jhoblitt Exp $
    44
    55package Nebulous::Server;
     
    5454
    5555        $db->commit;
     56        $log->debug("commit");
    5657    };
    5758    if ( $@ ) {
    5859        $db->rollback if $db;
     60        $log->debug("rollback");
    5961        $log->logdie( "database error: $@" );
    6062    }
    6163
    6264    $log->debug( "connected to database: ", sub { $db->data_sources; } );
    63 
    64     $log->debug( "leaving" );
    6565
    6666    my $self = bless {}, ref $class || $class;
     
    7070    $self->config($config);
    7171
     72    $log->debug( "leaving" );
     73   
    7274    return $self;
    7375}
     
    8082        return $self;
    8183    }
    82    
     84
    8385    my $log     = $self->log;
    8486    my $sql     = $self->sql;
    8587    my $config  = $self->config;
    8688
     89    # if the dbh is still alive, return it
     90    if (defined $self->{db} and $self->{db}->ping) {
     91        $log->debug("db handle is still alive");
     92        return $self->{db};
     93    }
     94    # otherwise create a new connection
     95    $log->debug("db handle is dead");
     96
    8797    # if we're running under mod_perl & Apache::DBI is loaded we want to
    88     # reconnect to the database everytime the dbh is request.  The rational is
     98    # reconnect to the database everytime the dbh is requested.  The rational is
    8999    # that if we're running under mod_perl this is probably a log running
    90100    # processes and the database might have gone away on us.  Apache::DBI will
     
    107117
    108118            $db->commit;
     119            $log->debug("commit");
    109120        };
    110121        if ( $@ ) {
    111122            $db->rollback if $db;
     123            $log->debug("rollback");
    112124            $log->logdie( "database error: $@" );
    113125        }
     
    145157    $log->debug( "entered - @_" );
    146158
    147     my $ins_id;
     159    my ($uri, $vol_id);
    148160    eval {
    149161        {
     
    177189        }
    178190
     191        my $ins_id;
    179192        {
    180193            # get instance ID
     
    187200            $query->finish;
    188201        }
    189     };
    190     if ($@) {
    191         $db->rollback;
    192         $log->logdie("database error: $@");
    193     }
    194 
    195     # Unfortunately, since we want to use the instance row's ID as part of the
    196     # actual on disk file name we can't try to create the file until after
    197     # we've create both a new storage_storage object and instance.
    198 
    199     # TODO add some stuff here to retry if unsucessful
    200     my ($uri, $vol_id);
    201     eval {
     202
     203        # Unfortunately, since we want to use the instance row's ID as part of the
     204        # actual on disk file name we can't try to create the file until after
     205        # we've create both a new storage_storage object and instance.
     206
     207        # TODO add some stuff here to retry if unsucessful
    202208        ($uri, $vol_id) = $self->_create_empty_instance_file($key, $ins_id, $vol_name);
    203     };
    204     if ($@) {
    205         $db->rollback;
    206         $log->logdie($@);
    207     }
    208 
    209     $log->debug("created $uri on volume ID: $vol_id");
    210 
    211     eval {
    212         {
     209        $log->debug("created $uri on volume ID: $vol_id");
     210
     211        {
     212            # update the instance with URI & vol_id that the file is on
    213213            my $query = $db->prepare_cached( $sql->update_instance_uri );
    214214            # vol_id, uri, ins_id
     
    221221    if ($@) {
    222222        $db->rollback;
    223         $log->logdie("database error: $@");
     223        $log->debug("rollback");
     224        $log->logdie("error: $@");
    224225    }
    225226
     
    267268
    268269        $db->commit;
    269     };
    270     if ($@) {
    271         $db->rollback;
     270        $log->debug("commit");
     271    };
     272    if ($@) {
     273        $db->rollback;
     274        $log->debug("rollback");
    272275        $log->logdie("database error: $@");
    273276    }
     
    315318                $query->finish;
    316319                $db->rollback;
     320                $log->debug("rollback");
    317321                $log->logdie( "storage object does not exist" );
    318322            }
     
    339343    if ($@) {
    340344        $db->rollback;
     345        $log->debug("rollback");
    341346        $log->logdie( "database error: $@" );
    342347    }
     
    353358    if ($@) {
    354359        $db->rollback;
     360        $log->debug("rollback");
    355361        $log->logdie($@);
    356362    }
     
    364370
    365371        $db->commit;
    366     };
    367     if ($@) {
    368         $db->rollback;
     372        $log->debug("commit");
     373    };
     374    if ($@) {
     375        $db->rollback;
     376        $log->debug("rollback");
    369377        $log->logdie("database error: $@");
    370378    }
     
    423431        $query->finish;
    424432        $db->rollback;
     433        $log->debug("rollback");
    425434        $log->logdie( "database error: $@" );
    426435    }
     
    431440        if ( $write_lock ) {
    432441            eval { $db->rollback; };
     442            $log->debug("rollback");
    433443            $log->logdie( "database error: $@" ) if $@;
    434444
     
    438448        if ( $read_lock > 0 ) {
    439449            eval { $db->rollback; };
     450            $log->debug("rollback");
    440451            $log->logdie( "database error: $@" ) if $@;
    441452
     
    453464
    454465            $db->commit;
     466            $log->debug("commit");
    455467        };
    456468        if ( $@ ) {
    457469            $db->rollback;
     470            $log->debug("rollback");
    458471            $log->logdie( "database error: $@" );
    459472        }
     
    468481        if ( $write_lock ) {
    469482            eval { $db->rollback; };
     483            $log->debug("rollback");
    470484            $log->logdie( "database error: $@" ) if $@;
    471485
     
    483497
    484498            $db->commit;
     499            $log->debug("commit");
    485500        };
    486501        if ( $@ ) {
    487502            $db->rollback;
     503            $log->debug("rollback");
    488504            $log->logdie( "database error: $@" );
    489505        }
     
    546562        $query->finish;
    547563        $db->rollback;
     564        $log->debug("rollback");
    548565        $log->logdie( "database error: $@" );
    549566    }
     
    553570        if ( $read_lock ) {
    554571            eval { $db->rollback; };
     572            $log->debug("rollback");
    555573            $log->logdie( "database error: $@" ) if $@;
    556574           
     
    559577        unless ( $write_lock ) {
    560578            eval { $db->rollback; };
     579            $log->debug("rollback");
    561580            $log->logdie( "database error: $@" ) if $@;
    562581
     
    574593
    575594            $db->commit;
     595            $log->debug("commit");
    576596        };
    577597        if ( $@ ) {
    578598            $db->rollback;
     599            $log->debug("rollback");
    579600            $log->logdie( "database error: $@" );
    580601        }
     
    590611        if ( $write_lock ) {
    591612            eval { $db->rollback; };
     613            $log->debug("rollback");
    592614            $log->logdie( "database error: $@" ) if $@;
    593615           
     
    597619        if ( $read_lock == 0 ) {
    598620            eval { $db->rollback; };
     621            $log->debug("rollback");
    599622            $log->logdie( "database error: $@" ) if $@;
    600623           
     
    613636
    614637            $db->commit;
     638            $log->debug("commit");
    615639        };
    616640        if ( $@ ) {
    617641            $db->rollback;
     642            $log->debug("rollback");
    618643            $log->logdie( "database error: $@" );
    619644        }
     
    686711    if ($@) {
    687712        $db->rollback;
     713        $log->debug("rollback");
    688714        $log->logdie("database error: $@");
    689715    }
     
    691717    eval {
    692718        $db->commit;
    693     };
    694     if ($@) {
    695         $db->rollback;
     719        $log->debug("commit");
     720    };
     721    if ($@) {
     722        $db->rollback;
     723        $log->debug("rollback");
    696724        $log->logdie("database error: $@");
    697725    }
     
    738766    if ($@) {
    739767        $db->rollback;
     768        $log->debug("rollback");
    740769        $log->logdie("database error: $@");
    741770    }
     
    778807    if ($@) {
    779808        $db->rollback;
     809        $log->debug("rollback");
    780810        $log->logdie("database error: $@");
    781811    }
     
    827857    if ($@) {
    828858        $db->rollback;
     859        $log->debug("rollback");
    829860        $log->logdie("database error: $@");
    830861    }
     
    832863    eval {
    833864        $db->commit;
    834     };
    835     if ($@) {
    836         $db->rollback;
     865        $log->debug("commit");
     866    };
     867    if ($@) {
     868        $db->rollback;
     869        $log->debug("rollback");
    837870        $log->logdie("database error: $@");
    838871    }
     
    10191052
    10201053        $db->commit;
     1054        $log->debug("commit");
    10211055    };
    10221056    if ( $@ ) {
    10231057        $db->rollback;
     1058        $log->debug("rollback");
    10241059        $log->logdie( "database error: $@" );
    10251060    }
     
    10641099    if ( $@ ) {
    10651100        $db->rollback;
     1101        $log->debug("rollback");
    10661102        $log->logdie("database error: $@");
    10671103    }
     
    11221158    if ($@) {
    11231159        $db->rollback;
     1160        $log->debug("rollback");
    11241161        $log->logdie("database error: $@");
    11251162    }
     
    11511188    if ($@) {
    11521189        $db->rollback;
     1190        $log->debug("rollback");
    11531191        $log->logdie( "database error: $@" );
    11541192    }
     
    11801218    if ($@) {
    11811219        $db->rollback;
     1220        $log->debug("rollback");
    11821221        $log->logdie( "database error: $@" );
    11831222    }
Note: See TracChangeset for help on using the changeset viewer.