Merge lp:~niedbalski/charm-helpers/lp-1461669 into lp:charm-helpers

Proposed by Jorge Niedbalski
Status: Merged
Merged at revision: 382
Proposed branch: lp:~niedbalski/charm-helpers/lp-1461669
Merge into: lp:charm-helpers
Diff against target: 82 lines (+45/-9)
2 files modified
charmhelpers/contrib/database/mysql.py (+11/-9)
tests/contrib/database/test_mysql.py (+34/-0)
To merge this branch: bzr merge lp:~niedbalski/charm-helpers/lp-1461669
Reviewer Review Type Date Requested Status
Mario Splivalo (community) Approve
Billy Olsen Approve
Felipe Reyes (community) Approve
charmers Pending
Review via email: mp+261029@code.launchpad.net

Description of the change

Charm-helpers fix for 1461669

To post a comment you must log in.
Revision history for this message
Felipe Reyes (freyes) wrote :

LGTM, +1

review: Approve
383. By Jorge Niedbalski

Move log to any size

Revision history for this message
Billy Olsen (billy-olsen) wrote :

LGTM. In a separate mp, I propose we set the default value to something a bit smarter than 80% of the total RAM due to the lxc limitations.

review: Approve
Revision history for this message
Mario Splivalo (mariosplivalo) wrote :

LGTM too. The default is 50%, although, maybe it would be best to have default of 256M, unless available memory is less than that (then default to 20% of RAM, or something like it)?

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'charmhelpers/contrib/database/mysql.py'
2--- charmhelpers/contrib/database/mysql.py 2015-05-06 12:59:16 +0000
3+++ charmhelpers/contrib/database/mysql.py 2015-06-03 20:33:05 +0000
4@@ -385,23 +385,25 @@
5 mysql_config['key_buffer'] = self.human_to_bytes('32M')
6 total_memory = self.human_to_bytes(self.get_mem_total())
7
8- log("Option 'dataset-size' has been deprecated, instead by default %d%% of system \
9- available RAM will be used for innodb_buffer_pool_size allocation" %
10- (self.DEFAULT_INNODB_BUFFER_FACTOR * 100), level="WARN")
11-
12+ dataset_bytes = config.get('dataset-size', None)
13 innodb_buffer_pool_size = config.get('innodb-buffer-pool-size', None)
14
15 if innodb_buffer_pool_size:
16 innodb_buffer_pool_size = self.human_to_bytes(
17 innodb_buffer_pool_size)
18-
19- if innodb_buffer_pool_size > total_memory:
20- log("innodb_buffer_pool_size; {} is greater than system available memory:{}".format(
21- innodb_buffer_pool_size,
22- total_memory), level='WARN')
23+ elif dataset_bytes:
24+ log("Option 'dataset-size' has been deprecated, please use"
25+ "innodb_buffer_pool_size option instead", level="WARN")
26+ innodb_buffer_pool_size = self.human_to_bytes(
27+ dataset_bytes)
28 else:
29 innodb_buffer_pool_size = int(
30 total_memory * self.DEFAULT_INNODB_BUFFER_FACTOR)
31
32+ if innodb_buffer_pool_size > total_memory:
33+ log("innodb_buffer_pool_size; {} is greater than system available memory:{}".format(
34+ innodb_buffer_pool_size,
35+ total_memory), level='WARN')
36+
37 mysql_config['innodb_buffer_pool_size'] = innodb_buffer_pool_size
38 return mysql_config
39
40=== modified file 'tests/contrib/database/test_mysql.py'
41--- tests/contrib/database/test_mysql.py 2015-05-06 12:59:16 +0000
42+++ tests/contrib/database/test_mysql.py 2015-06-03 20:33:05 +0000
43@@ -237,6 +237,40 @@
44 @mock.patch.object(mysql.PerconaClusterHelper, 'get_mem_total')
45 @mock.patch.object(mysql, 'config_get')
46 @mock.patch.object(mysql, 'log')
47+ def test_parse_config_innodb_buffer_unset(self, mog, config, mem):
48+ mem.return_value = "100G"
49+ config.return_value = {
50+ 'innodb-buffer-pool-size': None,
51+ 'dataset-size': None,
52+ }
53+
54+ helper = mysql.PerconaClusterHelper()
55+ mysql_config = helper.parse_config()
56+
57+ self.assertEqual(
58+ mysql_config.get('innodb-buffer-pool-size'),
59+ int(helper.human_to_bytes(mem.return_value) *
60+ helper.DEFAULT_INNODB_BUFFER_FACTOR))
61+
62+ @mock.patch.object(mysql.PerconaClusterHelper, 'get_mem_total')
63+ @mock.patch.object(mysql, 'config_get')
64+ @mock.patch.object(mysql, 'log')
65+ def test_parse_config_innodb_dataset_size(self, mog, config, mem):
66+ mem.return_value = "100G"
67+ config.return_value = {
68+ 'dataset-size': "10G",
69+ }
70+
71+ helper = mysql.PerconaClusterHelper()
72+ mysql_config = helper.parse_config()
73+
74+ self.assertEqual(
75+ mysql_config.get('innodb-buffer-pool-size'),
76+ int(helper.human_to_bytes("10G")))
77+
78+ @mock.patch.object(mysql.PerconaClusterHelper, 'get_mem_total')
79+ @mock.patch.object(mysql, 'config_get')
80+ @mock.patch.object(mysql, 'log')
81 def test_parse_config_wait_timeout(self, mog, config, mem):
82 mem.return_value = "100G"
83

Subscribers

People subscribed via source and target branches