/[Sack]/trunk/bin/sack.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/bin/sack.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 79 by dpavlin, Fri Sep 25 23:22:32 2009 UTC revision 80 by dpavlin, Sat Sep 26 10:14:03 2009 UTC
# Line 176  sub pull_node_file { Line 176  sub pull_node_file {
176          close($fh);          close($fh);
177  }  }
178    
179    my $merge_digest_mapping;
180    
181  sub merge_out {  sub merge_out {
182          my ( $from_node, $new ) = @_;          my ( $from_node, $new ) = @_;
183    
# Line 201  sub merge_out { Line 203  sub merge_out {
203                          if ( $k1 =~ m{#} ) {                          if ( $k1 =~ m{#} ) {
204                                  die "ASSERT $k1 $k2" unless $k2 =~ m{^\d+$};                                  die "ASSERT $k1 $k2" unless $k2 =~ m{^\d+$};
205  #warn "XXX $k1 $k2";  #warn "XXX $k1 $k2";
                                 my $md5 = $remote_digest->{nr_md5}->[$k2];  
   
                                 if ( ! $md5 ) {  
                                         $missing->{nr_md5}->{$from_node}++; # FIXME die?  
                                         next;  
                                 }  
206    
207                                  if ( my $local_k2 = $digest->{md5_nr}->{$md5} ) {                                  if ( defined $merge_digest_mapping->{$from_node}->[ $k2 ] ) {
208                                          $k2 = $local_k2;                                          $k2 = $merge_digest_mapping->{$from_node}->[ $k2 ];
                                         $local++;  
                                 } elsif ( my $full = $remote_digest->{md5}->{$md5} ) {  
                                         $k2 = $digest->to_int( $remote_digest->{md5}->{$md5} );  
                                         $remote++;  
209                                  } else {                                  } else {
210                                          $missing->{md5}->{$from_node}++;  
211                                            my $md5 = $remote_digest->{nr_md5}->[$k2];
212    
213                                            if ( ! $md5 ) {
214                                                    $missing->{nr_md5}->{$from_node}++; # FIXME die?
215                                                    next;
216                                            }
217    
218                                            my $local_k2;
219    
220                                            if ( $local_k2 = $digest->{md5_nr}->{$md5} ) {
221                                                    $local++;
222                                            } elsif ( my $full = $remote_digest->{md5}->{$md5} ) {
223                                                    $local_k2 = $digest->to_int( $remote_digest->{md5}->{$md5} );
224                                                    $remote++;
225                                            } else {
226                                                    $missing->{md5}->{$from_node}++;
227                                            }
228    
229                                            $k2 = $merge_digest_mapping->{$from_node}->[ $k2 ] = $local_k2;
230    
231                                  }                                  }
232                          }                          }
233    
# Line 248  sub merge_out { Line 260  sub merge_out {
260    
261          $t_merge = time - $t_merge;          $t_merge = time - $t_merge;
262          my $digests = $local + $remote;          my $digests = $local + $remote;
263          printf STDERR "\n[$port] merge %d in %.4fs %.2f/s digests local: %.1f%% %d/%d\n", $tick, $t_merge, $digests / $t_merge, $local * 100 / $digests, $local, $remote;          printf STDERR "\n[$port] merge %d in %.4fs %.2f/s digests local: %.1f%% %d/%d\n", $tick, $t_merge, $digests / $t_merge, $local * 100 / ( $digests || 1 ), $local, $remote;
264          push @reports, [ "$tick merged $from_node", $t_merge, $tick / $t_merge ];          push @reports, [ "$tick merged $from_node", $t_merge, $tick / $t_merge ];
265    
266          warn "[$port] missing ", dump $missing if $missing;          warn "[$port] missing ", dump $missing if $missing;

Legend:
Removed from v.79  
changed lines
  Added in v.80

  ViewVC Help
Powered by ViewVC 1.1.26