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
=== modified file 'charmhelpers/contrib/database/mysql.py'
--- charmhelpers/contrib/database/mysql.py 2015-05-06 12:59:16 +0000
+++ charmhelpers/contrib/database/mysql.py 2015-06-03 20:33:05 +0000
@@ -385,23 +385,25 @@
385 mysql_config['key_buffer'] = self.human_to_bytes('32M')385 mysql_config['key_buffer'] = self.human_to_bytes('32M')
386 total_memory = self.human_to_bytes(self.get_mem_total())386 total_memory = self.human_to_bytes(self.get_mem_total())
387387
388 log("Option 'dataset-size' has been deprecated, instead by default %d%% of system \388 dataset_bytes = config.get('dataset-size', None)
389 available RAM will be used for innodb_buffer_pool_size allocation" %
390 (self.DEFAULT_INNODB_BUFFER_FACTOR * 100), level="WARN")
391
392 innodb_buffer_pool_size = config.get('innodb-buffer-pool-size', None)389 innodb_buffer_pool_size = config.get('innodb-buffer-pool-size', None)
393390
394 if innodb_buffer_pool_size:391 if innodb_buffer_pool_size:
395 innodb_buffer_pool_size = self.human_to_bytes(392 innodb_buffer_pool_size = self.human_to_bytes(
396 innodb_buffer_pool_size)393 innodb_buffer_pool_size)
397394 elif dataset_bytes:
398 if innodb_buffer_pool_size > total_memory:395 log("Option 'dataset-size' has been deprecated, please use"
399 log("innodb_buffer_pool_size; {} is greater than system available memory:{}".format(396 "innodb_buffer_pool_size option instead", level="WARN")
400 innodb_buffer_pool_size,397 innodb_buffer_pool_size = self.human_to_bytes(
401 total_memory), level='WARN')398 dataset_bytes)
402 else:399 else:
403 innodb_buffer_pool_size = int(400 innodb_buffer_pool_size = int(
404 total_memory * self.DEFAULT_INNODB_BUFFER_FACTOR)401 total_memory * self.DEFAULT_INNODB_BUFFER_FACTOR)
405402
403 if innodb_buffer_pool_size > total_memory:
404 log("innodb_buffer_pool_size; {} is greater than system available memory:{}".format(
405 innodb_buffer_pool_size,
406 total_memory), level='WARN')
407
406 mysql_config['innodb_buffer_pool_size'] = innodb_buffer_pool_size408 mysql_config['innodb_buffer_pool_size'] = innodb_buffer_pool_size
407 return mysql_config409 return mysql_config
408410
=== modified file 'tests/contrib/database/test_mysql.py'
--- tests/contrib/database/test_mysql.py 2015-05-06 12:59:16 +0000
+++ tests/contrib/database/test_mysql.py 2015-06-03 20:33:05 +0000
@@ -237,6 +237,40 @@
237 @mock.patch.object(mysql.PerconaClusterHelper, 'get_mem_total')237 @mock.patch.object(mysql.PerconaClusterHelper, 'get_mem_total')
238 @mock.patch.object(mysql, 'config_get')238 @mock.patch.object(mysql, 'config_get')
239 @mock.patch.object(mysql, 'log')239 @mock.patch.object(mysql, 'log')
240 def test_parse_config_innodb_buffer_unset(self, mog, config, mem):
241 mem.return_value = "100G"
242 config.return_value = {
243 'innodb-buffer-pool-size': None,
244 'dataset-size': None,
245 }
246
247 helper = mysql.PerconaClusterHelper()
248 mysql_config = helper.parse_config()
249
250 self.assertEqual(
251 mysql_config.get('innodb-buffer-pool-size'),
252 int(helper.human_to_bytes(mem.return_value) *
253 helper.DEFAULT_INNODB_BUFFER_FACTOR))
254
255 @mock.patch.object(mysql.PerconaClusterHelper, 'get_mem_total')
256 @mock.patch.object(mysql, 'config_get')
257 @mock.patch.object(mysql, 'log')
258 def test_parse_config_innodb_dataset_size(self, mog, config, mem):
259 mem.return_value = "100G"
260 config.return_value = {
261 'dataset-size': "10G",
262 }
263
264 helper = mysql.PerconaClusterHelper()
265 mysql_config = helper.parse_config()
266
267 self.assertEqual(
268 mysql_config.get('innodb-buffer-pool-size'),
269 int(helper.human_to_bytes("10G")))
270
271 @mock.patch.object(mysql.PerconaClusterHelper, 'get_mem_total')
272 @mock.patch.object(mysql, 'config_get')
273 @mock.patch.object(mysql, 'log')
240 def test_parse_config_wait_timeout(self, mog, config, mem):274 def test_parse_config_wait_timeout(self, mog, config, mem):
241 mem.return_value = "100G"275 mem.return_value = "100G"
242276

Subscribers

People subscribed via source and target branches