Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions leapp/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
from leapp.utils.workarounds import apply_workarounds

VERSION = "0.18.0"
FULL_VERSION = VERSION
from leapp.__version__ import VERSION, FULL_VERSION

apply_workarounds()
2 changes: 2 additions & 0 deletions leapp/__version__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
VERSION = "0.18.0"
FULL_VERSION = VERSION
4 changes: 4 additions & 0 deletions leapp/exceptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ def __init__(self, message):
self.message = message


class FrameworkInitializationError(LeappError):
pass


class RepositoryConfigurationError(LeappError):
pass

Expand Down
2 changes: 2 additions & 0 deletions leapp/utils/workarounds/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import leapp.utils.workarounds.mp
import leapp.utils.workarounds.fqdn
import leapp.utils.workarounds.resources


def apply_workarounds():
leapp.utils.workarounds.mp.apply_workaround()
leapp.utils.workarounds.fqdn.apply_workaround()
leapp.utils.workarounds.resources.apply_workaround()
40 changes: 40 additions & 0 deletions leapp/utils/workarounds/resources.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import resource
from leapp.exceptions import FrameworkInitializationError


def apply_workaround():
"""
Set resource limits for the maximum number of open file descriptors and the maximum writable file size.

: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 FrameworkInitializationError(
'Unable to set the required soft limit of resource due to system restrictions. '
'This limit is necessary to prevent the program from crashin. '
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
'This limit is necessary to prevent the program from crashin. '
'This limit is necessary to prevent the program from crashing. '

'Resource type: {}, error: {}'.format(rtype_string, err)
)
except OSError as err:
raise FrameworkInitializationError(
'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
fsize_limit = resource.RLIM_INFINITY

if soft_nofile < nofile_limit:
set_resource_limit(resource.RLIMIT_NOFILE, nofile_limit, nofile_limit)

if soft_fsize != fsize_limit:
set_resource_limit(resource.RLIMIT_FSIZE, fsize_limit, fsize_limit)
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from distutils.util import convert_path

main_ns = {}
ver_path = convert_path('leapp/__init__.py')
ver_path = convert_path('leapp/__version__.py')
with open(ver_path) as ver_file:
exec(ver_file.read(), main_ns)

Expand Down