Skip to content

Commit

Permalink
Check for value error + put setrlimit to local private function
Browse files Browse the repository at this point in the history
  • Loading branch information
tomasfratrik committed Oct 30, 2024
1 parent 8abbc1b commit 9924578
Showing 1 changed file with 20 additions and 8 deletions.
28 changes: 20 additions & 8 deletions commands/command_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,18 +150,30 @@ def set_resource_limits():
:raises: `CommandError` if the resource limits cannot be set
"""

def set_resource_limit(resource_type, soft, hard):
rtype_string = (
'open file descriptors' if resource_type == resource.RLIMIT_NOFILE
else 'writable file size' if resource_type == resource.RLIMIT_FSIZE
else 'unknown resource'
)
try:
resource.setrlimit(resource_type, (soft, hard))
except ValueError as err:
raise CommandError(
'Failure occurred while attempting to set soft limit higher than the hard limit. '
'Resource type: {}, error: {}'.format(rtype_string, err)
)
except OSError as err:
raise CommandError(
'Failed to set resource limit. Resource type: {}, error: {}'.format(rtype_string, err)
)

soft_nofile, _ = resource.getrlimit(resource.RLIMIT_NOFILE)
soft_fsize, _ = resource.getrlimit(resource.RLIMIT_FSIZE)
nofile_limit = 1024*16

if soft_nofile < nofile_limit:
try:
resource.setrlimit(resource.RLIMIT_NOFILE, (nofile_limit, nofile_limit))
except OSError as err:
raise CommandError('Failed to set limit for maximum number of open file descriptors: {}'.format(err))
set_resource_limit(resource.RLIMIT_NOFILE, nofile_limit, nofile_limit)

if soft_fsize != resource.RLIM_INFINITY:
try:
resource.setrlimit(resource.RLIMIT_FSIZE, (resource.RLIM_INFINITY, resource.RLIM_INFINITY))
except OSError as err:
raise CommandError('Failed to set limit for maximum writeable file size: {}'.format(err))
set_resource_limit(resource.RLIMIT_FSIZE, resource.RLIM_INFINITY, resource.RLIM_INFINITY)

0 comments on commit 9924578

Please sign in to comment.