various tools (including pt-query-digest, pt-heartbeat) failing due to fatal sprintf warnings
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
percona-toolkit (Ubuntu) |
Fix Released
|
High
|
Trent Lloyd | ||
Xenial |
Incomplete
|
High
|
Trent Lloyd |
Bug Description
[Impact]
On Xenial (Bionic and later are not affected due to a newer version already incorporating this patch), various tools from percona-toolkit fail because of new warnings from sprintf that are generated by the new Perl version in Xenial.
These warnings are fatal because all of the tools set "use strict" and "use warnings FATAL => 'all';"
This can be tested simply by parsing any MySQL log with pt-query-digest, however, it affects many other tools.
[Test Case]
apt-get install mysql-server percona-toolkit # set any root password you like, we'll just use the debian.cnf credentials
mysql --defaults-
long_query_
pt-query-digest /var/lib/
Result:
The pipeline caused an error: Pipeline process 5 (iteration) caused an error: Redundant argument in sprintf at /usr/bin/
Terminating pipeline because process 4 (iteration) caused too many errors.
This issue was fixed upstream:
https:/
[Regression Potential]
The following tools are updated by this patch:
pt-diskstats
pt-fk-error-logger
pt-heartbeat
pt-index-usage
pt-kill
pt-online-
pt-query-digest
pt-slave-delay
pt-slave-find
pt-table-checksum
pt-table-sync
pt-table-usage
pt-upgrade
Generally speaking most of these tools fail to work at all due to this bug, which will limit the regression potential to a reasonable extent.
This patch is taken from upstream and largely updates common code used by all tools in a generic fashion.
However it is difficult to fully test all of the tools, as the test suite is not included in the released binary. I attempted to run the upstream test suite, however there are no instructions on how to do so and I failed in figuring out how to get it to successfully execute.
To that end I submit that it will be difficult to test this patch in a reliable fashion, and would seek feedback on what we should do about that.
[Other Info]
The way the upstream percona-toolkit repository works is they have these perl modules that are statically "compiled in" to the various tool perl scripts, with both the source libraries and that resulting static tool committed to git.
They do not always update every tool when changes are made to those modules. So if you rebuild every tool, even from the same source as the release, you will get unrelated changes to the actual fix.
The source of the package (as released) does not contain the libraries (lib/**) or the tests (t/**) so these are not included in the package patch, in contrast to the upstream git diff.
Changed in percona-toolkit (Ubuntu): | |
status: | New → Confirmed |
importance: | Undecided → High |
assignee: | nobody → Trent Lloyd (lathiat) |
Changed in percona-toolkit (Ubuntu Xenial): | |
status: | New → Confirmed |
importance: | Undecided → High |
assignee: | nobody → Trent Lloyd (lathiat) |
description: | updated |
Changed in percona-toolkit (Ubuntu): | |
status: | Confirmed → Fix Released |
Attaching patch for the issue.
The way the upstream percona-toolkit repository works is they have these perl modules that are statically "compiled in" to the various tool perl scripts, with both the source libraries and that resulting static tool committed to git.
They do not always update every tool when changes are made to those modules. So if you rebuild every tool, even from the same source as the release, you will get unrelated changes to the actual fix.
The source of the package (as released) does not contain the libraries (lib/**) or the tests (t/**) so these are not included in the package patch, in contrast to the upstream git diff.
I fixed all occurrences of the problem in all tools, but only tested pt-heartbeat and pt-query-digest. It is difficult to accurately test all of the tools, however, pretty much all of the tools were completely broken in basic functionality by the lack of this fix, and the change is an exact copy of the upstream fix.
The changed tools are: schema- change
pt-diskstats
pt-fk-error-logger
pt-heartbeat
pt-index-usage
pt-kill
pt-online-
pt-query-digest
pt-slave-delay
pt-slave-find
pt-table-checksum
pt-table-sync
pt-table-usage
pt-upgrade