mysqld --print-defaults Too Many Values to unpack

Bug #1348652 reported by Ionuț Arțăriși
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack DBaaS (Trove)
Fix Released
Medium
Ionuț Arțăriși

Bug Description

trove-guestagent throws this Traceback:

44bb3d9542ca88017368bf72a560 - - -] Running cmd (subprocess): sudo /usr/sbin/mysqld --print-defaults execute /usr/lib64/python2.6/site-packages/trove/
openstack/common/processutils.py:137
2014-07-25 13:30:27.738 3192 ERROR trove.openstack.common.rpc.amqp [req-c68a5483-cca6-480a-a67f-a23b47868c36 477e49237f0548dab38838103e4e0326 406c44bb
3d9542ca88017368bf72a560 - - -] Exception during message handling
2014-07-25 13:30:27.738 3192 TRACE trove.openstack.common.rpc.amqp Traceback (most recent call last):
2014-07-25 13:30:27.738 3192 TRACE trove.openstack.common.rpc.amqp File "/usr/lib64/python2.6/site-packages/trove/openstack/common/rpc/amqp.py", lin
e 440, in _process_data
2014-07-25 13:30:27.738 3192 TRACE trove.openstack.common.rpc.amqp **args)
2014-07-25 13:30:27.738 3192 TRACE trove.openstack.common.rpc.amqp File "/usr/lib64/python2.6/site-packages/trove/openstack/common/rpc/dispatcher.py
", line 172, in dispatch
2014-07-25 13:30:27.738 3192 TRACE trove.openstack.common.rpc.amqp result = getattr(proxyobj, method)(ctxt, **kwargs)
2014-07-25 13:30:27.738 3192 TRACE trove.openstack.common.rpc.amqp File "/usr/lib64/python2.6/site-packages/trove/guestagent/datastore/mysql/manager
.py", line 117, in prepare
2014-07-25 13:30:27.738 3192 TRACE trove.openstack.common.rpc.amqp app.stop_db()
2014-07-25 13:30:27.738 3192 TRACE trove.openstack.common.rpc.amqp File "/usr/lib64/python2.6/site-packages/trove/guestagent/datastore/mysql/service
.py", line 675, in stop_db
2014-07-25 13:30:27.738 3192 TRACE trove.openstack.common.rpc.amqp self.state_change_wait_time, update_db):
2014-07-25 13:30:27.738 3192 TRACE trove.openstack.common.rpc.amqp File "/usr/lib64/python2.6/site-packages/trove/guestagent/datastore/service.py",
line 148, in wait_for_real_status_to_change_to
2014-07-25 13:30:27.738 3192 TRACE trove.openstack.common.rpc.amqp actual_status = self._get_actual_db_status()
2014-07-25 13:30:27.738 3192 TRACE trove.openstack.common.rpc.amqp File "/usr/lib64/python2.6/site-packages/trove/guestagent/datastore/mysql/service
.py", line 176, in _get_actual_db_status
2014-07-25 13:30:27.738 3192 TRACE trove.openstack.common.rpc.amqp mysql_args = load_mysqld_options()
2014-07-25 13:30:27.738 3192 TRACE trove.openstack.common.rpc.amqp File "/usr/lib64/python2.6/site-packages/trove/guestagent/datastore/mysql/service
.py", line 141, in load_mysqld_options
2014-07-25 13:30:27.738 3192 TRACE trove.openstack.common.rpc.amqp key, value = item.split("=")
2014-07-25 13:30:27.738 3192 TRACE trove.openstack.common.rpc.amqp ValueError: too many values to unpack
2014-07-25 13:30:27.738 3192 TRACE trove.openstack.common.rpc.amqp

This is because the mysql defaults can contain custom attribute settings e.g.

# mysqld --print-defaults
mysqld would have been started with the following arguments:
--port=3306 --socket=/var/lib/mysql/mysql.sock --datadir=/var/lib/mysql --skip-external-locking --key_buffer_size=16M --max_allowed_packet=1M --table_open_cache=64 --sort_buffer_size=512K --net_buffer_length=8K --read_buffer_size=256K --read_rnd_buffer_size=512K --myisam_sort_buffer_size=8M --server-id=1 --plugin-load=blackhole=ha_blackhole.so --plugin-load=federated=ha_federated.so --plugin-load=archive=ha_archive.so

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to trove (master)

Fix proposed to branch: master
Review: https://review.openstack.org/109595

Changed in trove:
assignee: nobody → Ionuț Arțăriși (mapleoin)
status: New → In Progress
Changed in trove:
importance: Undecided → Medium
milestone: none → juno-3
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to trove (master)

Reviewed: https://review.openstack.org/109595
Committed: https://git.openstack.org/cgit/openstack/trove/commit/?id=bffb80e6e038d7cf078482fe0c6372092d00d9bf
Submitter: Jenkins
Branch: master

commit bffb80e6e038d7cf078482fe0c6372092d00d9bf
Author: Ionuț Arțăriși <email address hidden>
Date: Fri Jul 25 16:03:24 2014 +0200

    handle repeating mysqld options containing equals

    Let load_mysqld_options handle repeating options such as:
    "--plugin-load=blackhole=ha_blackhole.so
    --plugin-load=federated=ha_federated.so" without crashing by storing all
    the mysql_options we get in a dictionary with lists as values.

    Change-Id: I634532e13bab80d476e4a1e8558b23da33656f60
    Closes-Bug: #1348652

Changed in trove:
status: In Progress → Fix Committed
Thierry Carrez (ttx)
Changed in trove:
status: Fix Committed → Fix Released
Thierry Carrez (ttx)
Changed in trove:
milestone: juno-3 → 2014.2
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.