I've discussed this with Lars. The problem is that we need to run
mysql_upgrade in the postinst as it is expected that /var/lib/mysql is
upgraded when the package is upgraded. However, mysql_upgrade requires
the daemon to be running, and the daemon must be restarted after it is
finished running. This is tricky to do in a postinst with respect to
policy-rc.d.

I think this is the more general case of this specific bug.

We moved mysql_upgrade to the postinst from the upstart service script
in 5.7 when we did the systemd work. Otherwise we struggle to restart
mysqld after mysql_upgrade has run.

I think the solution is to consider the daemon start/stop for the
purposes of mysql_upgrade outside the scope of policy-rc.d, while
ensuring that it doesn't appear to be running during that time to
anything else. For example, run it with TCP disabled and on a Unix
socket in a temporary location only, just for the purpose of
mysql_upgrade to talk to it. Then it would effectively be the same as
running a version of mysql_upgrade that does not require a running
daemon. This special start/stop of mysqld could use start-stop-daemon
with a custom configuration to run with TCP disabled and put the pidfile
and Unix socket in a temporary location. I'm told that mysqld will fail
to start if it cannot get an exclusive lock on specific files inside
/var/lib/mysql, so we should be safe from concurrent access issues with
a daemon we do not know about.

However, if policy-rc.d means that a daemon remains running when the
postinst is running, we will just not be able to run mysql_upgrade.
Perhaps we should warn in this case.

** Changed in: mysql-5.7 (Ubuntu)
     Assignee: (unassigned) => Lars Tangvald (lars-tangvald)

** Changed in: mysql-5.7 (Ubuntu)
       Status: New => Triaged

** Changed in: mysql-5.7 (Ubuntu)
   Importance: Undecided => High

** Tags added: mysql-5.7-transition

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1592669

Title:
  postinst fails when daemon is not running (or is disabled by policy-
  rc.d)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1592669/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to