I've done a bit more digging. The PHP error logs contain this during the upgrade:
May 10 00:06:37.491133 2018] [:error] [pid 5496:tid 960] [client
10.1.12.12:50666] PHP Fatal error: Maximum execution time of 600 seconds
exceeded in E:\\moodlebase\\moodle\\lib\\dml\\mysqli_native_moodle_database.php
on line 1079
Line 1079 contains this code:
$result = $this->mysqli->query($rawsql, MYSQLI_STORE_RESULT);
I've checked everything I could think of for the 600 second timeout, but nothing gels. The php.ini file has a max_execution_time of 30 seconds, but our config.php file in the moodle directory sets set_time_limit to 7200 seconds. The connection time limit for MySQL is 60 seconds. I can't find any setting that matches this 600 second timeout.