mirror of
				https://github.com/matrix-org/synapse.git
				synced 2025-11-04 02:01:03 +01:00 
			
		
		
		
	Add try/finally block to close t_byte_source
This commit is contained in:
		
							parent
							
								
									6b725cf56a
								
							
						
					
					
						commit
						1b6b0b1e66
					
				@ -367,12 +367,16 @@ class MediaRepository(object):
 | 
				
			|||||||
        ))
 | 
					        ))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if t_byte_source:
 | 
					        if t_byte_source:
 | 
				
			||||||
 | 
					            try:
 | 
				
			||||||
                output_path = yield self.write_to_file_and_backup(
 | 
					                output_path = yield self.write_to_file_and_backup(
 | 
				
			||||||
                    t_byte_source,
 | 
					                    t_byte_source,
 | 
				
			||||||
                    self.filepaths.local_media_thumbnail_rel(
 | 
					                    self.filepaths.local_media_thumbnail_rel(
 | 
				
			||||||
                        media_id, t_width, t_height, t_type, t_method
 | 
					                        media_id, t_width, t_height, t_type, t_method
 | 
				
			||||||
                    )
 | 
					                    )
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
 | 
					            finally:
 | 
				
			||||||
 | 
					                t_byte_source.close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            logger.info("Stored thumbnail in file %r", output_path)
 | 
					            logger.info("Stored thumbnail in file %r", output_path)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            t_len = os.path.getsize(output_path)
 | 
					            t_len = os.path.getsize(output_path)
 | 
				
			||||||
@ -395,12 +399,16 @@ class MediaRepository(object):
 | 
				
			|||||||
        ))
 | 
					        ))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if t_byte_source:
 | 
					        if t_byte_source:
 | 
				
			||||||
 | 
					            try:
 | 
				
			||||||
                output_path = yield self.write_to_file_and_backup(
 | 
					                output_path = yield self.write_to_file_and_backup(
 | 
				
			||||||
                    t_byte_source,
 | 
					                    t_byte_source,
 | 
				
			||||||
                    self.filepaths.remote_media_thumbnail_rel(
 | 
					                    self.filepaths.remote_media_thumbnail_rel(
 | 
				
			||||||
                        server_name, file_id, t_width, t_height, t_type, t_method
 | 
					                        server_name, file_id, t_width, t_height, t_type, t_method
 | 
				
			||||||
                    )
 | 
					                    )
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
 | 
					            finally:
 | 
				
			||||||
 | 
					                t_byte_source.close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            logger.info("Stored thumbnail in file %r", output_path)
 | 
					            logger.info("Stored thumbnail in file %r", output_path)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            t_len = os.path.getsize(output_path)
 | 
					            t_len = os.path.getsize(output_path)
 | 
				
			||||||
@ -464,18 +472,6 @@ class MediaRepository(object):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        # Now we generate the thumbnails for each dimension, store it
 | 
					        # Now we generate the thumbnails for each dimension, store it
 | 
				
			||||||
        for (t_width, t_height, t_type), t_method in thumbnails.iteritems():
 | 
					        for (t_width, t_height, t_type), t_method in thumbnails.iteritems():
 | 
				
			||||||
            # Generate the thumbnail
 | 
					 | 
				
			||||||
            if t_type == "crop":
 | 
					 | 
				
			||||||
                t_byte_source = yield make_deferred_yieldable(threads.deferToThread(
 | 
					 | 
				
			||||||
                    thumbnailer.crop,
 | 
					 | 
				
			||||||
                    r_width, r_height, t_type,
 | 
					 | 
				
			||||||
                ))
 | 
					 | 
				
			||||||
            else:
 | 
					 | 
				
			||||||
                t_byte_source = yield make_deferred_yieldable(threads.deferToThread(
 | 
					 | 
				
			||||||
                    thumbnailer.scale,
 | 
					 | 
				
			||||||
                    r_width, r_height, t_type,
 | 
					 | 
				
			||||||
                ))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            # Work out the correct file name for thumbnail
 | 
					            # Work out the correct file name for thumbnail
 | 
				
			||||||
            if server_name:
 | 
					            if server_name:
 | 
				
			||||||
                file_path = self.filepaths.remote_media_thumbnail_rel(
 | 
					                file_path = self.filepaths.remote_media_thumbnail_rel(
 | 
				
			||||||
@ -490,8 +486,29 @@ class MediaRepository(object):
 | 
				
			|||||||
                    media_id, t_width, t_height, t_type, t_method
 | 
					                    media_id, t_width, t_height, t_type, t_method
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            # Generate the thumbnail
 | 
				
			||||||
 | 
					            if t_type == "crop":
 | 
				
			||||||
 | 
					                t_byte_source = yield make_deferred_yieldable(threads.deferToThread(
 | 
				
			||||||
 | 
					                    thumbnailer.crop,
 | 
				
			||||||
 | 
					                    r_width, r_height, t_type,
 | 
				
			||||||
 | 
					                ))
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                t_byte_source = yield make_deferred_yieldable(threads.deferToThread(
 | 
				
			||||||
 | 
					                    thumbnailer.scale,
 | 
				
			||||||
 | 
					                    r_width, r_height, t_type,
 | 
				
			||||||
 | 
					                ))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if not t_byte_source:
 | 
				
			||||||
 | 
					                continue
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            try:
 | 
				
			||||||
                # Write to disk
 | 
					                # Write to disk
 | 
				
			||||||
            output_path = yield self.write_to_file_and_backup(t_byte_source, file_path)
 | 
					                output_path = yield self.write_to_file_and_backup(
 | 
				
			||||||
 | 
					                    t_byte_source, file_path,
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					            finally:
 | 
				
			||||||
 | 
					                t_byte_source.close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            t_len = os.path.getsize(output_path)
 | 
					            t_len = os.path.getsize(output_path)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # Write to database
 | 
					            # Write to database
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user