handle mysqldump errors again
we rewrite the dump code completely, stealing bits from safe_shell_exec() for the DB credentials, to directly do the search and replace of certain patterns ourselves. this simplifies the pipeline and should also improve performance (because we avoid forking sed twice), unless some memory leaks exist in PHP (which is quite possible). we process the dump one line at a time so memory usage shouldn't be higher. the previous code would not catch errors from mysqldump because the "sed" pipeline would succeed and therefore hide error from earlier in the pipeline. we would need "set -o pipefail" in bash to workaround this issue, but that is not portable and, let's be honest, there already enough crap here as it is to warrant a cleanup. previous attempt at fixing this issue (#2098289) are sometimes unsuccesful because some dumps fail later than 1024 bytes. we still keep that check just in case. the bug (#1324466) was introduced in 571b63de, present since the 1.1 release. this should be refactored to make safe_shell_exec() allow for a hook to modify the dumpfile inline, but for now i just wanted to port a working prototype in place.
Showing with 68 additions and 2 deletions