IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Mar 30, 2012, 2:49:37 PM (14 years ago)
Author:
eugene
Message:

merge changes from trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20111122/Nebulous-Server/bin/neb-admin

    r32682 r33638  
    313313    SELECT S.*,vol_id FROM (
    314314      -- Select objects that are in our so_id range, with two copies (and two requested copies)
    315       SELECT MAX(ins_id) AS MAXins_id,MIN(ins_id) AS MINins_id,so_id,ext_id,value AS user_copies FROM
     315      SELECT MAX(ins_id) AS MAXins_id,MIN(ins_id) AS MINins_id,so_id,ext_id FROM
    316316       storage_object JOIN storage_object_xattr USING(so_id) RIGHT JOIN instance USING(so_id)
    317317       WHERE name = 'user.copies' AND value >= 2
     
    469469        my $so_id = $obj->{so_id};
    470470        my $key   = $obj->{ext_id};
    471         my $copies = $obj->{user_copies};
     471#       my $copies = $obj->{user_copies};
    472472
    473473        my $source_vol_id = $obj->{vol_id};
     
    487487        my %md = (
    488488            key           => $key,
    489             copies        => $copies,
     489#           copies        => $copies,
    490490            so_id         => $so_id,
    491491            source_vol_id => $source_vol_id,
     
    543543                       'ipp056.0' => 64,'ipp057.0' => 65,'ipp058.0' => 66,'ipp059.0' => 67,'ipp060.0' => 68,'ipp061.0' => 69,'ipp062.0' => 70,
    544544                       'ipp063.0' => 71,'ipp064.0' => 72,'ipp065.0' => 73,'ipp066.0' => 74);
    545     %{ $destination{VOL} }  = ('ota01' => 7,       'ota02' => 8,       'ota03' => 3,       'ota04' => 3,       'ota05' => 4,       'ota06' => 4,
    546                                'ota10' => 50,      'ota11' => 50,      'ota12' => 6,       'ota13' => 6,       'ota14' => 7,       'ota15' => 8,       'ota16' => 15,      'ota17' => 15,
    547                                'ota20' => 16,      'ota21' => 18,      'ota22' => 18,      'ota23' => 17,      'ota24' => 9,       'ota25' => 9,       'ota26' => 10,      'ota27' => 11,
    548                                'ota30' => 12,      'ota31' => 52,      'ota32' => 14,      'ota33' => 14,      'ota34' => 19,      'ota35' => 16,      'ota36' => 20,      'ota37' => 12,
    549                                'ota40' => 32,      'ota41' => 11,      'ota42' => 10,      'ota43' => 17,      'ota44' => 49,      'ota45' => 23,      'ota46' => 24,      'ota47' => 25,
    550                                'ota50' => 26,      'ota51' => 27,      'ota52' => 28,      'ota53' => 29,      'ota54' => 30,      'ota55' => 31,      'ota56' => 51,      'ota57' => 33,
    551                                'ota60' => 34,      'ota61' => 35,      'ota62' => 36,      'ota63' => 37,      'ota64' => 38,      'ota65' => 39,      'ota66' => 41,      'ota67' => 42,
    552                                'ota71' => 43,      'ota72' => 44,      'ota73' => 45,      'ota74' => 46,      'ota75' => 47,      'ota76' => 48);
     545# This is replaced below.
     546#     %{ $destination{VOL} }  = ('ota01' => 7,       'ota02' => 8,       'ota03' => 3,       'ota04' => 3,       'ota05' => 4,       'ota06' => 4,
     547#                              'ota10' => 50,      'ota11' => 50,      'ota12' => 6,       'ota13' => 6,       'ota14' => 7,       'ota15' => 8,       'ota16' => 15,      'ota17' => 15,
     548#                              'ota20' => 16,      'ota21' => 18,      'ota22' => 18,      'ota23' => 17,      'ota24' => 9,       'ota25' => 9,       'ota26' => 10,      'ota27' => 11,
     549#                              'ota30' => 12,      'ota31' => 52,      'ota32' => 14,      'ota33' => 14,      'ota34' => 19,      'ota35' => 16,      'ota36' => 20,      'ota37' => 12,
     550#                              'ota40' => 32,      'ota41' => 11,      'ota42' => 10,      'ota43' => 17,      'ota44' => 49,      'ota45' => 23,      'ota46' => 24,      'ota47' => 25,
     551#                              'ota50' => 26,      'ota51' => 27,      'ota52' => 28,      'ota53' => 29,      'ota54' => 30,      'ota55' => 31,      'ota56' => 51,      'ota57' => 33,
     552#                              'ota60' => 34,      'ota61' => 35,      'ota62' => 36,      'ota63' => 37,      'ota64' => 38,      'ota65' => 39,      'ota66' => 41,      'ota67' => 42,
     553#                              'ota71' => 43,      'ota72' => 44,      'ota73' => 45,      'ota74' => 46,      'ota75' => 47,      'ota76' => 48);
    553554    %{ $destination{HOST} } = ('ota01' => 'ipp010','ota02' => 'ipp011','ota03' => 'ipp006','ota04' => 'ipp054','ota05' => 'ipp007','ota06' => 'ipp055',
    554555                               'ota10' => 'ipp008','ota11' => 'ipp056','ota12' => 'ipp009','ota13' => 'ipp057','ota14' => 'ipp058','ota15' => 'ipp059','ota16' => 'ipp012','ota17' => 'ipp060',
     
    577578                          'ipp023' => 1,'ipp024' => 1,'ipp025' => 1,'ipp026' => 1,'ipp028' => 1,'ipp029' => 1,'ipp030' => 1,'ipp031' => 1,'ipp032' => 1,'ipp033' => 1,
    578579                          'ipp034' => 1,'ipp035' => 1,'ipp036' => 1,'ipp038' => 1,'ipp039' => 1,'ipp040' => 1,'ipp041' => 1,'ipp042' => 1,'ipp045' => 1,'ipp046' => 1,
    579                           'ipp047' => 1,'ipp048' => 1,'ipp049' => 1,'ipp050' => 1,'ipp051' => 1,'ipp052' => 1);
     580                          'ipp047' => 1,'ipp048' => 1,'ipp049' => 1,'ipp050' => 1,'ipp051' => 1,'ipp052' => 1,
     581                          # These hosts are blocked due to concern about their RAID arrays.
     582#                         'ipp054' => 1,'ipp055' => 1,'ipp056' => 1,'ipp057' => 1,'ipp058' => 1,'ipp059' => 1,
     583#                         'ipp060' => 1,'ipp061' => 1,'ipp062' => 1,'ipp063' => 1,'ipp064' => 1,'ipp065' => 1, 'ipp066' => 1
     584#                         'ipp064' => 1, 'ipp066' => 1
     585                          'ipp064' => 1
     586        );
    580587    if (not defined $so_id_start) { $so_id_start = 0; }
    581588    if (not defined $so_id_range) { $so_id_range = 100000; }
     
    597604
    598605    # Determine a list of first instances
     606#     my $query = $dbh->prepare(
     607#       "
     608# SELECT S.so_id,ext_id,ins_id,uri,substr(uri,-10,5) AS class_id,vol_id,name AS vol_name,host AS vol_host FROM (
     609#   select * FROM (
     610#   select MAX(ins_id) AS MAXins_id, MIN(ins_id) AS MINins_id, so_id,ext_id,value AS user_copies FROM storage_object
     611#     JOIN storage_object_xattr USING(so_id)
     612#     RIGHT JOIN instance USING(so_id)
     613#      WHERE name = 'user.copies'
     614#      AND value >= 2
     615#      AND ext_id LIKE '%ota%fits'
     616#      AND so_id >= $so_id_start
     617#      AND so_id <  $so_id_end
     618#      GROUP BY so_id
     619#   ) AS V
     620#   WHERE MAXins_id != MINins_id
     621#   ) AS S
     622#   JOIN instance ON (S.MINins_id = instance.ins_id AND S.so_id = instance.so_id)
     623#   JOIN volume USING(vol_id) WHERE volume.available = 1
     624#   LIMIT $limit
     625#   OFFSET $offset
     626# ");
    599627    my $query = $dbh->prepare(
    600628        "
    601 SELECT S.so_id,ext_id,ins_id,uri,substr(uri,-10,5) AS class_id,vol_id,name AS vol_name,host AS vol_host FROM (
    602   select * FROM (
    603   select MAX(ins_id) AS MAXins_id, MIN(ins_id) AS MINins_id, so_id,ext_id,value AS user_copies FROM storage_object
    604     JOIN storage_object_xattr USING(so_id)
    605     RIGHT JOIN instance USING(so_id)
    606      WHERE name = 'user.copies'
    607      AND value >= 2
    608      AND ext_id LIKE '%ota%fits'
    609      AND so_id >= $so_id_start
    610      AND so_id <  $so_id_end
    611      GROUP BY so_id
    612   ) AS V
    613   WHERE MAXins_id != MINins_id
    614   ) AS S
    615   JOIN instance ON (S.MINins_id = instance.ins_id AND S.so_id = instance.so_id) JOIN volume USING(vol_id) WHERE volume.available = 1
    616   LIMIT $limit
    617   OFFSET $offset
     629SELECT Z.so_id,ext_id,Z.ins_id,Z.uri,substr(Z.uri,-10,5) AS class_id,Z.vol_id,vol_name,vol_host,
     630       instance.vol_id AS  second_vol_id,volume.name AS second_name,volume.host AS second_host FROM (
     631  SELECT S.so_id,ext_id,ins_id,uri,substr(uri,-10,5) AS class_id,vol_id,name AS vol_name,host AS vol_host,MAXins_id FROM (
     632    select * FROM (
     633      select MAX(ins_id) AS MAXins_id, MIN(ins_id) AS MINins_id, so_id,ext_id FROM storage_object
     634        JOIN storage_object_xattr USING(so_id)
     635        RIGHT JOIN instance USING(so_id)
     636         WHERE name = 'user.copies'
     637         AND value >= 2
     638         AND ext_id LIKE '%ota%fits'
     639         AND so_id >= $so_id_start
     640         AND so_id <  $so_id_end
     641         GROUP BY so_id
     642      ) AS V
     643      WHERE MAXins_id != MINins_id
     644    ) AS S
     645    JOIN instance ON (S.MINins_id = instance.ins_id AND S.so_id = instance.so_id)
     646    JOIN volume USING(vol_id) WHERE volume.available = 1
     647    AND volume.name AS $requested_source
     648  ) AS Z
     649JOIN instance ON (MAXins_id = instance.ins_id AND Z.so_id = instance.so_id)
     650JOIN volume ON(instance.vol_id = volume.vol_id) WHERE volume.available = 1
     651LIMIT $limit
     652OFFSET $offset
    618653");
     654
    619655    $query->execute();
    620656
     
    650686        my $source_host   = $obj->{vol_host};
    651687
     688        my $second_vol_id   = $obj->{second_vol_id};
     689        my $second_vol_name = $obj->{second_name};
     690        my $second_vol_host = $obj->{second_host};
    652691
    653692        my $destination_vol_id = $destination{VOL}{$class_id};
     
    660699            next;
    661700        }
    662         if (defined($blocked_volume{$destination_host})) {
    663             next;
    664         }
     701       
    665702        $destination_uri =~ s/$source_name/$destination_name/;
    666703       
     
    680717            destination_host   => $destination_host,
    681718            destination_uri    => $destination_uri,
     719            second_host        => $second_vol_host,
     720            second_vol_id      => $second_vol_id
     721#           blocked_host_bool  => defined($blocked_volume{$destination_host})
    682722        );
     723       
     724        if ((defined($blocked_volume{$destination_host}))||
     725            ($source_vol_id == $destination_vol_id)||
     726            ($second_vol_id == $destination_vol_id)||
     727            ($source_name   eq $destination_name)||
     728            ($second_vol_name eq $destination_name)) {
     729#           print_metadata("targetFailed", \%md);
     730            next;
     731        }
     732
    683733        if ($source_vol_id != $destination_vol_id) {
    684734            print_metadata("targetPending", \%md);
Note: See TracChangeset for help on using the changeset viewer.