handle better restart with running clients
[cloudstore.git] / lib / CloudStore / Store.pm
index 4b91ee0..2791ed0 100644 (file)
@@ -275,7 +275,12 @@ sub rsync_log {
 
 sub blob_path {
        my ( $self, $data, $path ) = @_;
-       my $blob = $self->{pid}->{ $data->{pid} }->{dir} || die "no dir for $data->{pid} in ",dump( $self->{pid} );
+       my $blob = $self->{pid}->{ $data->{pid} }->{dir};
+       if ( ! $blob ) {
+               warn "ERROR: $data->{pid} not found, possible restart?";
+               $self->init_pid_login( $self->{pid}, $data->{login} );
+               $blob = $self->{pid}->{ $data->{pid} }->{dir} || die "no dir for ", dump( $self->{pid}->{ $data->{pid} } );
+       }
        $blob .= '/' . ( defined $path ? $path : $data->{file} );
        return $blob;
 }
@@ -321,6 +326,11 @@ sub md5pool {
        my $md5 = $data->{md5} || die "no md5 in ",dump $data;
        my $path = $self->blob_path($data);
 
+       if ( ! -e $path ) {
+               warn "ERROR missing path $path";
+               return;
+       }
+
        my $pool_md5 = "$pool/$md5";
 
        if ( -e $pool_md5 ) {