Index: /trunk/ippScripts/scripts/rawcheck_mddb.pl
===================================================================
--- /trunk/ippScripts/scripts/rawcheck_mddb.pl	(revision 40313)
+++ /trunk/ippScripts/scripts/rawcheck_mddb.pl	(revision 40314)
@@ -167,4 +167,7 @@
 	$down_volume{$name} = 1;
     }
+    else {
+	$down_volume{$name} = 0;
+    }
 
     if (($name =~ /ippb05/)||($name =~ /ippb02/)) {
@@ -262,5 +265,5 @@
 
 	# Get md database results for this exp_id/class_id
-	my $md_query = "select file_id,ins_id,mvol_name,site_name,file,disk_sum,(STRCMP(md5sum,disk_sum) = 0) AS is_valid FROM obj JOIN ins USING(file_id) JOIN vol USING(mvol_id) WHERE exp_id = $exp_id AND class_id = '${class_id}'";
+	my $md_query = "select file_id,ins_id,mvol_name,site_name,file,disk_sum,(STRCMP(md5sum,disk_sum) = 0) AS is_valid FROM obj LEFT JOIN ins USING(file_id) LEFT JOIN vol USING(mvol_id) WHERE exp_id = $exp_id AND class_id = '${class_id}'";
 	my $md_instances = $mddb->selectall_arrayref( $md_query );
 	
@@ -270,47 +273,52 @@
 	foreach my $r (@{ $md_instances }) {
 	    my ($file_id,$ins_id,$vol_name,$site_name,$f,$disk_sum,$is_valid) = @{ $r };
-	    $f =~ s%//%/%g;
-	    unless (exists($unified_list{$f})) {
-		if (-e $f) {
-		    $unified_list{$f}{exists} = 1;
-		}
-		else {
-		    $unified_list{$f}{exists} = 0;
-		}
-	    }
-	    # This should only happen if the same scan was ingested twice.
-	    # Be paranoid and refuse to cull if this is the case.
-	    if (exists($unified_list{$f}{md_ins_id})) {
-		if (($file_id   == $unified_list{$f}{md_file_id})&&
-		    ($vol_name  eq $unified_list{$f}{md_vol})&&
-		    ($site_name eq $unified_list{$f}{md_site})&&
-		    ($disk_sum  eq $unified_list{$f}{disk_sum})&&
-		    ($is_valid  == $unified_list{$f}{is_valid})) {
-		    print "#DUPLICATE INS: $ins_id have $unified_list{$f}{md_ins_id} already\n";
-		    mddb_delete_instance($mddb,$ins_id);
-		    $do_cull = -1;
-		    next;
-		}
-		else {
-		    # The data is inconsistent.  Make a human fix it.
-		    print "INS ERROR: $f -> \n";
-		    print "\t($file_id $ins_id $vol_name $site_name $disk_sum $is_valid)\n";
-		    print "\t($unified_list{$f}{md_file_id} $unified_list{$f}{md_ins_id} $unified_list{$f}{md_vol} $unified_list{$f}{md_site} $unified_list{$f}{disk_sum} $unified_list{$f}{is_valid})\n";
-		    die;
-		}
-	    }
-
-	    $unified_list{$f}{md_file_id} = $file_id;
-	    $unified_list{$f}{md_ins_id}  = $ins_id;
-	    $unified_list{$f}{md_vol}     = $vol_name;
-	    $unified_list{$f}{md_site}    = $site_name;
-	    $unified_list{$f}{disk_sum}   = $disk_sum;
-	    $unified_list{$f}{is_valid}   = $is_valid;	    
-	    
-	    if ($md_file_id == -1) {
-		$md_file_id = $file_id;
-	    }
-	    elsif ($file_id != $md_file_id) {
-		die "Instance $ins_id has bad file_id $file_id expected $md_file_id";
+
+	    if ((defined($f))&&(defined($ins_id))) { 
+		$f =~ s%//%/%g;
+		unless (exists($unified_list{$f})) {
+		    if (-e $f) {
+			$unified_list{$f}{exists} = 1;
+		    }
+		    else {
+			$unified_list{$f}{exists} = 0;
+		    }
+		}
+		# This should only happen if the same scan was ingested twice.
+		# Be paranoid and refuse to cull if this is the case.
+		if (exists($unified_list{$f}{md_ins_id})) {
+		    if (($file_id   == $unified_list{$f}{md_file_id})&&
+			($vol_name  eq $unified_list{$f}{md_vol})&&
+			($site_name eq $unified_list{$f}{md_site})&&
+			($disk_sum  eq $unified_list{$f}{disk_sum})&&
+			($is_valid  == $unified_list{$f}{is_valid})) {
+			print "#DUPLICATE INS: $ins_id have $unified_list{$f}{md_ins_id} already\n";
+			mddb_delete_instance($mddb,$ins_id);
+			$do_cull = -1;
+			next;
+		    }
+		    else {
+			# The data is inconsistent.  Make a human fix it.
+			print "INS ERROR: $f -> \n";
+			print "\t($file_id $ins_id $vol_name $site_name $disk_sum $is_valid)\n";
+			print "\t($unified_list{$f}{md_file_id} $unified_list{$f}{md_ins_id} $unified_list{$f}{md_vol} $unified_list{$f}{md_site} $unified_list{$f}{disk_sum} $unified_list{$f}{is_valid})\n";
+			die;
+		    }
+		}
+		
+		$unified_list{$f}{md_file_id} = $file_id;
+		$unified_list{$f}{md_ins_id}  = $ins_id;
+		$unified_list{$f}{md_vol}     = $vol_name;
+		$unified_list{$f}{md_site}    = $site_name;
+		$unified_list{$f}{disk_sum}   = $disk_sum;
+		$unified_list{$f}{is_valid}   = $is_valid;	    
+	    }
+
+	    if (defined($file_id)) {
+		if ($md_file_id == -1) {
+		    $md_file_id = $file_id;
+		}
+		elsif ($file_id != $md_file_id) {
+		    die "Instance $ins_id has bad file_id $file_id expected $md_file_id";
+		}
 	    }
 	}
