Skip to content

Commit d39d7ed

Browse files
author
Dhanush Varma
committed
fix: close file handles using with statements
Replace open().read() with with-statement context managers in mod_ci/controllers.py (4 instances) and mod_sample/media_info_parser.py (1 instance) to prevent file descriptor leaks.
1 parent b304ba3 commit d39d7ed

2 files changed

Lines changed: 19 additions & 11 deletions

File tree

mod_ci/controllers.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1188,8 +1188,10 @@ def create_instance(compute, project, zone, test, reportURL) -> Dict:
11881188
if test.platform == TestPlatform.linux:
11891189
image_response = compute.images().getFromFamily(project=config.get('LINUX_INSTANCE_PROJECT_NAME', ''),
11901190
family=config.get('LINUX_INSTANCE_FAMILY_NAME', '')).execute()
1191-
startup_script = open(os.path.join(config.get('INSTALL_FOLDER', ''), 'install', 'ci-vm',
1192-
'ci-linux', 'startup-script.sh'), 'r').read()
1191+
with open(os.path.join(
1192+
config.get('INSTALL_FOLDER', ''), 'install', 'ci-vm',
1193+
'ci-linux', 'startup-script.sh'), 'r') as f:
1194+
startup_script = f.read()
11931195
metadata_items = [
11941196
{'key': 'startup-script', 'value': startup_script},
11951197
{'key': 'reportURL', 'value': reportURL},
@@ -1198,12 +1200,18 @@ def create_instance(compute, project, zone, test, reportURL) -> Dict:
11981200
elif test.platform == TestPlatform.windows:
11991201
image_response = compute.images().getFromFamily(project=config.get('WINDOWS_INSTANCE_PROJECT_NAME', ''),
12001202
family=config.get('WINDOWS_INSTANCE_FAMILY_NAME', '')).execute()
1201-
startup_script = open(os.path.join(config.get('INSTALL_FOLDER', ''), 'install', 'ci-vm',
1202-
'ci-windows', 'startup-script.ps1'), 'r').read()
1203-
service_account = open(os.path.join(config.get('INSTALL_FOLDER', ''),
1204-
config.get('SERVICE_ACCOUNT_FILE', '')), 'r').read()
1205-
rclone_conf = open(os.path.join(config.get('INSTALL_FOLDER', ''), 'install', 'ci-vm',
1206-
'ci-windows', 'rclone.conf'), 'r').read()
1203+
with open(os.path.join(
1204+
config.get('INSTALL_FOLDER', ''), 'install', 'ci-vm',
1205+
'ci-windows', 'startup-script.ps1'), 'r') as f:
1206+
startup_script = f.read()
1207+
with open(os.path.join(
1208+
config.get('INSTALL_FOLDER', ''),
1209+
config.get('SERVICE_ACCOUNT_FILE', '')), 'r') as f:
1210+
service_account = f.read()
1211+
with open(os.path.join(
1212+
config.get('INSTALL_FOLDER', ''), 'install', 'ci-vm',
1213+
'ci-windows', 'rclone.conf'), 'r') as f:
1214+
rclone_conf = f.read()
12071215
metadata_items = [
12081216
{'key': 'windows-startup-script-ps1', 'value': startup_script},
12091217
{'key': 'service_account', 'value': service_account},

mod_sample/media_info_parser.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -210,10 +210,10 @@ def generate_media_xml(sample) -> MediaInfoFetcher:
210210

211211
media_folder = os.path.join(config.get('SAMPLE_REPOSITORY', ''), 'TestFiles')
212212
media_info_path = os.path.join(media_folder, 'media', sample.sha + '.xml')
213-
output_handle = open(media_info_path, 'w')
214213
media_path = os.path.join(media_folder, sample.filename)
215-
process = subprocess.Popen(['mediainfo', '--Output=XML', media_path], stdout=output_handle)
216-
process.wait()
214+
with open(media_info_path, 'w') as output_handle:
215+
process = subprocess.Popen(['mediainfo', '--Output=XML', media_path], stdout=output_handle)
216+
process.wait()
217217
if os.path.isfile(media_info_path):
218218
# Load media info, and replace full pathname
219219
tree = etree.parse(media_info_path)

0 commit comments

Comments
 (0)