IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jan 30, 2008, 4:26:33 PM (18 years ago)
Author:
jhoblitt
Message:

fix issues causes by adding fkey's to the instance table

File:
1 edited

Legend:

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

    r16244 r16265  
    11# Copyright (c) 2004  Joshua Hoblitt
    22#
    3 # $Id: Server.pm,v 1.50 2008-01-26 02:04:46 jhoblitt Exp $
     3# $Id: Server.pm,v 1.51 2008-01-31 02:26:33 jhoblitt Exp $
    44
    55package Nebulous::Server;
     
    161161        my $volume;
    162162        ($volume, $key) = parse_neb_key($key);
    163         if (defined $volume) {
    164             die "$volume is not a valid volume name"
    165                 unless $self->_is_valid_volume_name($volume);
    166         }
     163        # vol_name overrides the key implied volume
    167164        $vol_name ||= $volume;
    168 
    169     }
    170 
    171     my ($uri, $vol_id);
     165    }
     166
     167    if (defined $vol_name and !$self->_is_valid_volume_name($vol_name)) {
     168        die "$vol_name is not a valid volume name"
     169    }
     170       
     171    my ($vol_id, $vol_path, $vol_xattr) = $self->_get_storage_volume($vol_name);
     172
     173    my $uri;
    172174    eval {
    173175        {
     
    177179        }
    178180
    179         my $object_id;
     181        my $so_id;
    180182        {
    181183            # get object ID
    182184            my $query = $db->prepare_cached( $sql->last_insert_id );
    183185            $query->execute;
    184             ($object_id) = $query->fetchrow_array;
     186            ($so_id) = $query->fetchrow_array;
    185187            # XXX finish seems to be required when using LAST_INSERT_ID() or we
    186188            # get a warning about the stmt handling still be active the next
     
    192194            # create storage_object_attr
    193195            my $query = $db->prepare_cached( $sql->new_object_attr );
    194             $query->execute($object_id);
     196            $query->execute($so_id);
    195197        }
    196198
     
    198200            # create instance with no URI
    199201            my $query = $db->prepare_cached( $sql->new_object_instance );
    200             $query->execute;
     202            $query->execute($vol_id);
    201203        }
    202204
     
    218220
    219221        # TODO add some stuff here to retry if unsucessful
    220         ($uri, $vol_id) = $self->_create_empty_instance_file($key, $ins_id, $vol_name);
     222        $uri = $self->_create_empty_instance_file($key, $so_id, $ins_id, $vol_path, $vol_xattr);
    221223        $log->debug("created $uri on volume ID: $vol_id");
    222224
     
    328330        my $volume;
    329331        ($volume, $key) = parse_neb_key($key);
    330         if (defined $volume) {
    331             die "$volume is not a valid volume name"
    332                 unless $self->_is_valid_volume_name($volume);
    333         }
     332        # vol_name overrides the key implied volume
    334333        $vol_name ||= $volume;
    335334    }
    336335
    337     my ($uri, $vol_id);
     336    if (defined $vol_name and !$self->_is_valid_volume_name($vol_name)) {
     337        die "$vol_name is not a valid volume name"
     338    }
     339       
     340    my ($vol_id, $vol_path, $vol_xattr) = $self->_get_storage_volume($vol_name);
     341
     342    my $uri;
    338343    eval {
    339344        my $so_id;
     
    355360        {
    356361            my $query = $db->prepare_cached( $sql->new_instance );
    357             $query->execute($so_id);
     362            $query->execute($so_id, $vol_id);
    358363        }
    359364
     
    374379
    375380        # TODO add some stuff here to retry if unsucessful
    376         ($uri, $vol_id) = $self->_create_empty_instance_file($key, $ins_id, $vol_name);
     381        $uri = $self->_create_empty_instance_file($key, $so_id, $ins_id, $vol_path, $vol_xattr);
    377382
    378383        {
     
    12111216    my $self = shift;
    12121217
    1213     my ($key, $ins_id, $volume) = @_;
    1214 
    1215     my $log = $self->log;
    1216     my $sql = $self->sql;
    1217     my $db  =$self->db;
    1218 
    1219     # Find the storage volume to use.
    1220     # ->_get_storage_volume() throws an exception on failure.
    1221     my ($vol_id, $vol_path, $xattr);
     1218    my ($key, $so_id, $ins_id, $vol_path, $xattr) =  @_;
     1219
     1220    my $log = $self->log;
     1221    my $sql = $self->sql;
     1222    my $db  =$self->db;
     1223
    12221224    my ($storage_filename);
    12231225    my ($uri);
    12241226    eval {
    1225         ($vol_id, $vol_path, $xattr) = $self->_get_storage_volume($volume);
    12261227        $storage_filename = $self->_generate_storage_filename($key, $ins_id);
    12271228        # XXX put a hook for directory hashing here
     
    12401241    }
    12411242
    1242     return ($uri, $vol_id);
     1243    return $uri;
    12431244}
    12441245
Note: See TracChangeset for help on using the changeset viewer.