|  | @@ -894,10 +894,19 @@ class Repository:
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def _rebuild_sparse(self, segment):
 | 
	
		
			
				|  |  |          """Rebuild sparse bytes count for a single segment relative to the current index."""
 | 
	
		
			
				|  |  | -        self.compact[segment] = 0
 | 
	
		
			
				|  |  | +        try:
 | 
	
		
			
				|  |  | +            segment_size = self.io.segment_size(segment)
 | 
	
		
			
				|  |  | +        except FileNotFoundError:
 | 
	
		
			
				|  |  | +            # segment does not exist any more, remove it from the mappings
 | 
	
		
			
				|  |  | +            # note: no need to self.compact.pop(segment), as we start from empty mapping.
 | 
	
		
			
				|  |  | +            self.segments.pop(segment)
 | 
	
		
			
				|  |  | +            return
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          if self.segments[segment] == 0:
 | 
	
		
			
				|  |  | -            self.compact[segment] += self.io.segment_size(segment)
 | 
	
		
			
				|  |  | +            self.compact[segment] = segment_size
 | 
	
		
			
				|  |  |              return
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        self.compact[segment] = 0
 | 
	
		
			
				|  |  |          for tag, key, offset, size in self.io.iter_objects(segment, read_data=False):
 | 
	
		
			
				|  |  |              if tag == TAG_PUT:
 | 
	
		
			
				|  |  |                  if self.index.get(key, (-1, -1)) != (segment, offset):
 |