[mirrorbrain-commits] [opensuse-svn] r6535 - trunk/tools/download-redirector-v2/scanner

From: Novell Forge SVN <noreply_at_novell.com>
Date: Sun, 22 Feb 2009 05:51:54 -0700 (MST)
Author: poeml
Date: 2009-02-22 05:51:51 -0700 (Sun, 22 Feb 2009)
New Revision: 6535

Modified:
   trunk/tools/download-redirector-v2/scanner/scanner.pl
Log:
scanner: 
- remove dead code, and remove obsolete options from the program help
- when scanning all mirrors, start with those that have been scanned longest ago
- in parallel scan, don't clutter output when no error occured


Modified: trunk/tools/download-redirector-v2/scanner/scanner.pl
===================================================================
--- trunk/tools/download-redirector-v2/scanner/scanner.pl	2009-02-22 01:30:58 UTC (rev 6534)
+++ trunk/tools/download-redirector-v2/scanner/scanner.pl	2009-02-22 12:51:51 UTC (rev 6535)
_at_@ -131,7 +131,6 @@
 my $recursion_delay = 0;	# seconds delay per *_readdir recuursion
 my $force_scan = 0;
 my $enable_after_scan = 0;
-my $topdirs = 'distribution|tools|repositories';
 my $cfgfile = '/etc/mirrorbrain.conf';
 my $brain_instance = '';
 
_at_@ -240,14 +239,15 @@
 
 my $dbh = DBI->connect( $db_cred->{dbi}, $db_cred->{user}, $db_cred->{pass}, $db_cred->{opt}) or die $DBI::errstr;
 
-my $sql = qq{SELECT * FROM server where country != '**'};
+# we fetch last_scan timestamp as epoch, because below we want to sort by it.
+my $sql = qq{SELECT id, identifier, baseurl, baseurl_ftp, baseurl_rsync, enabled, extract(epoch from last_scan) as last_scan FROM server WHERE country != '**' };
 print "$sql\n" if $sqlverbose;
 my $ary_ref = $dbh->selectall_hashref($sql, 'id')
 		   or die $DBI::errstr;
 
 my _at_scan_list;
 
-for my $row(sort { $a->{id} <=> $b->{id} } values %$ary_ref) {
+for my $row(sort { int(\$a->{last_scan}) <=> int(\$b->{last_scan}) } values %$ary_ref) {
   if(keys %only_server_ids) {
     next if !defined $only_server_ids{$row->{id}} and !defined $only_server_ids{$row->{identifier}};
 
_at_@ -260,6 +260,7 @@
     push _at_scan_list, $row;
   }
 }
+#print Dumper \%only_server_ids, \_at_scan_list;
 
 if(scalar(keys %only_server_ids) > 2 * scalar(_at_scan_list)) {
   # print Dumper \%only_server_ids, \_at_scan_list;
_at_@ -408,30 +409,10 @@
   -f        Force. Scan listed mirror_ids even if they are not enabled.
   -d dir    Scan only in dir under mirror's baseurl. 
             Default: start at baseurl. Consider using -x and or -k with -d .
-  -x        Extra-Schedule run. Do not update 'scanner.last_scan' tstamp.
-            Default: 'scanner.last_scan' is updated after each run.
+  -x        Extra-Schedule run. Do not update 'server.last_scan' tstamp.
+            Default: 'server.last_scan' is updated after each run.
   -k        Keep dead files. Default: Entries not found again are removed.
 
-  -N url mirror_id
-            Add (or replace) a new url to the named mirror.
-  -N enabled=1 mirror_id
-  	    Enable a mirror.
-  -N url rsync=url ftp=url score=100 country=de region=europe name=identifier
-            Create a new mirror.
-	    Scanned path names (starting after url) should start with 
-	    '$topdirs'.
-	    Urls may be suffixed with #\_at_^foo/\@bar/\@ to modify scanned path names.
-
-  -Z mirror_id
-	    Delete the named mirror completly from the database.
-	    (Use "-N enabled=0 mirror_id" to disable a mirror.
-	     Use "-N http='' mirror_id" to delete an url.)
-
-  -A mirror_id path
-  -A url
-  	    Add an url to the mirror (as if it was found by scanning).
-	    If only one parameter is given, mirror_id is derived from url.
-
   -j N      Run up to N scanner queries in parallel.
 
   -i regexp 
_at_@ -440,13 +421,6 @@
 
 Both, names(identifier) and numbers(id) are accepted as mirror_ids.
 };
- my $hide = qq{
-            
-  -D mirror_id path
-  -D url
-  	    As -A, but removes an url from a mirror.
-};
-
   print STDERR "\nERROR: $msg\n" if $msg;
   return 0;
 }
_at_@ -476,86 +450,7 @@
 
 
 
-sub mirror_new
-{
-  my ($dbh, $mirror_new, $old) = _at__;
 
-  my $fields;
-  my %proto2field = 
-    (
-     http => 'baseurl', ftp => 'baseurl_ftp', rsync => 'baseurl_rsync', 'rsync:' => 'baseurl_rsync',
-     name => 'identifier'
-    );
-
-  my $name;
-  if($mirror_new->[0] =~ m{^(http|ftp|rsync:?)://([^/]+)/(.*)$}) {
-    my ($proto, $host, $path) = ($1,$2,$3);
-
-    if($path !~ m{#} and $path =~ s{(^|/)($topdirs)(/.*?)?$}{}) {
-      warn qq{path truncated before component "/$2/": $path\n};
-      warn qq{Press Enter to continue, CTRL-C to abort\n};
-      <STDIN>;
-    }
-    $fields->{$proto2field{$proto}} = "$proto://$host/$path";
-    shift _at_$mirror_new;
-    $name = $host;
-  }
-
-  die "mirror_new: try (http|ftp|rsync)://hostname/path\n (seen '$mirror_new')\n"
-    unless $name or scalar _at_$mirror_new;
-
-  for my $i (0..$#$mirror_new) {
-    die "mirror_new: cannot parse $mirror_new->[$i]" unless $mirror_new->[$i] =~ m{^([^=]+)=(.*)$};
-    my ($key, $val) = ($1, $2);
-    $key = $proto2field{$key} if defined $proto2field{$key};
-    $fields->{$key} = $val;
-  }
-
-  if($#$old == 0) {	# exactly one id given.
-    for my $k (keys %$fields) {
-      delete $fields->{$k} if $fields->{$k} eq ($old->[0]{$k}||'');
-    }
-
-    unless (keys %$fields) {
-      warn "nothing changes.\n";
-      return 1;
-    }
-    warn "updating id=$old->[0]{id}: _at_{[keys %$fields]}\n";
-    my $sql = "UPDATE server SET " . 
-      join(', ', map { "$_ = ".$dbh->quote($fields->{$_}) } keys %$fields) . 
-      " WHERE id = $old->[0]{id}";
-
-    print "$sql\n" if $sqlverbose;
-    $dbh->do($sql) or die "$sql: ".$DBI::errstr;
-  }
-  else {
-    $fields->{identifier} ||= $name||'';
-    $fields->{country} = $1 if !$fields->{country} and $fields->{identifier} =~ m{\.(\w\w)$};
-    die "cannot create new mirror without name or url.\n" unless $fields->{identifier};
-
-    $fields->{score} = 100 unless defined $fields->{score};
-    $fields->{enabled} = 1 unless defined $fields->{enabled};
-    my $dup_id;
-    for my $o(_at_$old) {
-      $dup_id = "$o->{id}: identifier"    if lc $o->{identifier} eq lc $fields->{identifier};
-      $dup_id = "$o->{id}: baseurl"       if $fields->{baseurl} and $fields->{baseurl} eq ($o->{baseurl}||'');
-      $dup_id = "$o->{id}: baseurl_ftp"   if $fields->{baseurl_ftp} and $fields->{baseurl_ftp} eq ($o->{baseurl_ftp}||'');
-      $dup_id = "$o->{id}: baseurl_rsync" if $fields->{baseurl_rsync} and $fields->{baseurl_rsync} eq ($o->{baseurl_rsync}||'');
-    }
-    die "new mirror and existing $dup_id is identical\n" if $dup_id;
-
-    my $sql = "INSERT INTO server SET " . 
-      join(', ', map { "$_ = ".$dbh->quote($fields->{$_}) } keys %$fields);
-
-    print "$sql\n" if $sqlverbose;
-    $dbh->do($sql) or die "$sql: ".$DBI::errstr;
-  }
-return 0;
-}
-
-
-
-
 sub wait_worker
 {
   my ($a, $n) = _at__;
_at_@ -574,8 +469,11 @@
       $pids{$p} = $i; # not? okay wait.
     }
     my $p = wait;
+    my $rc = $?;
     if(defined(my $i = $pids{$p})) {
-      print "$a->[$i]{identifier}: [#$i, id=$a->[$i]{serverid} pid=$p exit: $?]\n" if $verbose;
+      if (($verbose > 1) || ($rc != 0)) {
+        print "$a->[$i]{identifier}: [#$i, id=$a->[$i]{serverid} pid=$p exit: $?]\n";
+      }
       undef $a->[$i];
       return $i;  # now, been there, done that.
     }

_______________________________________________
Opensuse-svn mailing list
Opensuse-svn_at_forge.novell.com
http://forge.novell.com/mailman/listinfo/opensuse-svn


_______________________________________________
mirrorbrain-commits mailing list

Note: To remove yourself from this list, send a mail with the content
 	unsubscribe
to the address mirrorbrain-commits-request_at_mirrorbrain.org
Received on Sun Feb 22 2009 - 12:52:40 GMT

This archive was generated by hypermail 2.3.0 : Mon Feb 20 2012 - 23:47:04 GMT