| 
					
				 | 
			
			
				@@ -1191,13 +1191,9 @@ class Repository: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         except KeyError: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             pass 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            self.segments[segment] -= 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            size = self.io.read(segment, offset, id, read_data=False) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            self.storage_quota_use -= size 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            self.compact[segment] += size 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            segment, size = self.io.write_delete(id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            self.compact[segment] += size 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            self.segments.setdefault(segment, 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # note: doing a delete first will do some bookkeeping, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # like updating the shadow_index, quota, ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            self._delete(id, segment, offset) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         segment, offset = self.io.write_put(id, data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.storage_quota_use += len(data) + self.io.put_header_fmt.size 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.segments.setdefault(segment, 0) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1220,6 +1216,10 @@ class Repository: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             segment, offset = self.index.pop(id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         except KeyError: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             raise self.ObjectNotFound(id, self.path) from None 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self._delete(id, segment, offset) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def _delete(self, id, segment, offset): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # common code used by put and delete 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.shadow_index.setdefault(id, []).append(segment) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.segments[segment] -= 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         size = self.io.read(segment, offset, id, read_data=False) 
			 |