IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 23460


Ignore:
Timestamp:
Mar 20, 2009, 1:54:24 PM (17 years ago)
Author:
jhoblitt
Message:

rework transaction redo loops so labels work correctly

File:
1 edited

Legend:

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

    r23458 r23460  
    163163
    164164    my $uri;
    165 TRANS: do {
     165TRANS: while (1) {
    166166        eval {
    167167            {
     
    237237            $log->logdie("error: $@");
    238238        }
    239     } while ($@);
     239        last;
     240    }
    240241
    241242    $log->debug("leaving");
     
    275276    $newkey = parse_neb_key($newkey);
    276277
    277 TRANS: do {
     278TRANS: while (1) {
    278279        eval {
    279280            # rename storage_object
     
    300301            $log->logdie("database error: $@");
    301302        }
    302     } while $@;
     303        last;
     304    }
    303305
    304306    $log->debug("leaving");
     
    342344    # key1.swap -> key2
    343345
    344 TRANS: do {
     346TRANS: while (1) {
    345347        eval {
    346348            {
     
    395397            $log->logdie("database error: $@");
    396398        }
    397     } while ($@);
     399        last;
     400    }
    398401
    399402    $log->debug("leaving");
     
    466469
    467470    my $uri;
    468 TRANS: do {
     471TRANS: while (1) {
    469472        eval {
    470473            my $so_id;
     
    523526            }
    524527            $log->debug("rollback");
     528            if ($@ =~ /Deadlock found/) {
     529                $log->warn("database deadlock retrying transaction: $@");
     530                redo TRANS;
     531            }
    525532            $log->logdie("error: $@");
    526533        }
    527     } while ($@);
     534        last;
     535    }
    528536
    529537    $log->debug("leaving");
     
    565573    my $write_lock;
    566574
    567 TRANS: do {
     575TRANS: while (1) {
    568576        eval {
    569577            {
     
    634642            $log->logdie("error: $@");
    635643        }
    636     } while ($@);
     644        last;
     645    }
    637646
    638647    $log->debug("leaving");
     
    674683    my $write_lock;
    675684
    676 TRANS: do {
     685TRANS: while (1) {
    677686        eval {
    678687            {
     
    746755            $log->logdie("error: $@");
    747756        }
    748     } while ($@);
     757        last;
     758    }
    749759
    750760    $log->debug( "leaving" );
     
    788798    $key = parse_neb_key($key);
    789799
    790 TRANS: do {
     800TRANS: while (1) {
    791801        eval {
    792802            my $query;
     
    828838            $log->logdie("database error: $@");
    829839        }
    830     } while ($@);
     840        last;
     841    }
    831842
    832843    $log->debug("leaving");
     
    957968    $key = parse_neb_key($key);
    958969
    959 TRANS: do {
     970TRANS: while (1) {
    960971        eval {
    961972            my $query = $db->prepare_cached( $sql->remove_object_xattr );
     
    981992            $log->logdie("database error: $@");
    982993        }
    983     } while ($@);
     994        last;
     995    }
    984996
    985997    $log->debug("leaving");
     
    11431155    $log->debug( "entered - @_" );
    11441156
    1145 TRANS: do {
     1157TRANS: while (1) {
    11461158        eval {
    11471159            my $so_id;
     
    12091221            $log->logdie( "database error: $@" );
    12101222        }
    1211     } while ($@);
     1223        last;
     1224    }
    12121225
    12131226    $log->debug( "leaving" );
Note: See TracChangeset for help on using the changeset viewer.