Index: admin.php
===================================================================
--- admin.php	(revision 38520)
+++ admin.php	(working copy)
@@ -43,40 +43,55 @@
 	 */
 	do_action( 'after_db_upgrade' );
 } elseif ( get_option('db_version') != $wp_db_version && empty($_POST) ) {
-	if ( !is_multisite() ) {
-		wp_redirect( admin_url( 'upgrade.php?_wp_http_referer=' . urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ) ) );
-		exit;
 
-	/**
-	 * Filters whether to attempt to perform the multisite DB upgrade routine.
-	 *
-	 * In single site, the user would be redirected to wp-admin/upgrade.php.
-	 * In multisite, the DB upgrade routine is automatically fired, but only
-	 * when this filter returns true.
-	 *
-	 * If the network is 50 sites or less, it will run every time. Otherwise,
-	 * it will throttle itself to reduce load.
-	 *
-	 * @since 3.0.0
-	 *
-	 * @param bool $do_mu_upgrade Whether to perform the Multisite upgrade routine. Default true.
-	 */
-	} elseif ( apply_filters( 'do_mu_upgrade', true ) ) {
-		$c = get_blog_count();
+	// Make sure the DB version isn't stale in cache
+	wp_installing( true );
 
-		/*
-		 * If there are 50 or fewer sites, run every time. Otherwise, throttle to reduce load:
-		 * attempt to do no more than threshold value, with some +/- allowed.
+	if ( get_option('db_version') == $wp_db_version ) {
+
+		wp_installing( false );
+		wp_cache_flush();
+		wp_cache_delete( 'alloptions', 'site-options' );
+
+	} else {
+
+		if ( !is_multisite() ) {
+			wp_redirect( admin_url( 'upgrade.php?_wp_http_referer=' . urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ) ) );
+			exit;
+
+		/**
+		 * Filters whether to attempt to perform the multisite DB upgrade routine.
+		 *
+		 * In single site, the user would be redirected to wp-admin/upgrade.php.
+		 * In multisite, the DB upgrade routine is automatically fired, but only
+		 * when this filter returns true.
+		 *
+		 * If the network is 50 sites or less, it will run every time. Otherwise,
+		 * it will throttle itself to reduce load.
+		 *
+		 * @since 3.0.0
+		 *
+		 * @param bool $do_mu_upgrade Whether to perform the Multisite upgrade routine. Default true.
 		 */
-		if ( $c <= 50 || ( $c > 50 && mt_rand( 0, (int)( $c / 50 ) ) == 1 ) ) {
-			require_once( ABSPATH . WPINC . '/http.php' );
-			$response = wp_remote_get( admin_url( 'upgrade.php?step=1' ), array( 'timeout' => 120, 'httpversion' => '1.1' ) );
-			/** This action is documented in wp-admin/network/upgrade.php */
-			do_action( 'after_mu_upgrade', $response );
-			unset($response);
+		} elseif ( apply_filters( 'do_mu_upgrade', true ) ) {
+			$c = get_blog_count();
+
+			/*
+			 * If there are 50 or fewer sites, run every time. Otherwise, throttle to reduce load:
+			 * attempt to do no more than threshold value, with some +/- allowed.
+			 */
+			if ( $c <= 50 || ( $c > 50 && mt_rand( 0, (int)( $c / 50 ) ) == 1 ) ) {
+				require_once( ABSPATH . WPINC . '/http.php' );
+				$response = wp_remote_get( admin_url( 'upgrade.php?step=1' ), array( 'timeout' => 120, 'httpversion' => '1.1' ) );
+				/** This action is documented in wp-admin/network/upgrade.php */
+				do_action( 'after_mu_upgrade', $response );
+				unset($response);
+			}
+			unset($c);
 		}
-		unset($c);
+
 	}
+
 }
 
 require_once(ABSPATH . 'wp-admin/includes/admin.php');
