Fix NPE bug in torrentinfo set call
Fixes https://sentry.io/coreos/backend-production/issues/747494304
This commit is contained in:
		
							parent
							
								
									436e8cb760
								
							
						
					
					
						commit
						366bddd20a
					
				
					 2 changed files with 12 additions and 4 deletions
				
			
		|  | @ -338,10 +338,14 @@ def get_storage_locations(uuid): | |||
| 
 | ||||
| def save_torrent_info(storage_object, piece_length, pieces): | ||||
|   try: | ||||
|     return TorrentInfo.create(storage=storage_object, piece_length=piece_length, pieces=pieces) | ||||
|   except IntegrityError: | ||||
|     # TorrentInfo already exists for this storage. | ||||
|     pass | ||||
|     return TorrentInfo.get(storage=storage_object, piece_length=piece_length) | ||||
|   except TorrentInfo.DoesNotExist: | ||||
|     try: | ||||
|       return TorrentInfo.create(storage=storage_object, piece_length=piece_length, pieces=pieces) | ||||
|     except IntegrityError: | ||||
|       # TorrentInfo already exists for this storage. | ||||
|       return TorrentInfo.get(storage=storage_object, piece_length=piece_length) | ||||
| 
 | ||||
| 
 | ||||
| def get_torrent_info(blob): | ||||
|   try: | ||||
|  |  | |||
|  | @ -564,6 +564,10 @@ def test_torrent_info(pre_oci_model): | |||
|   assert pre_oci_model.get_torrent_info(layers[0].blob) is None | ||||
|   pre_oci_model.set_torrent_info(layers[0].blob, 2, 'foo') | ||||
| 
 | ||||
|   # Set it again exactly, which should be a no-op. | ||||
|   pre_oci_model.set_torrent_info(layers[0].blob, 2, 'foo') | ||||
| 
 | ||||
|   # Check the information we've set. | ||||
|   torrent_info = pre_oci_model.get_torrent_info(layers[0].blob) | ||||
|   assert torrent_info is not None | ||||
|   assert torrent_info.piece_length == 2 | ||||
|  |  | |||
		Reference in a new issue