concrete/src/Application/Application.php
public function handleAutomaticUpdates()
    {
        $config = $this['config'];
        $installed = $config->get('concrete.version_db_installed');
        $core = $config->get('concrete.version_db');
        if ($installed < $core) {
            $this->make(MutexInterface::class)->execute(Update::MUTEX_KEY, function () {
                Update::updateToCurrentVersion();
            });
        }
    }
public function handleAutomaticUpdates()
    {
        $config = $this['config'];
        $installed = $config->get('concrete.version_db_installed');
        $core = $config->get('concrete.version_db');
        if ($installed < $core) {
            $this->make(MutexInterface::class)->execute(Update::MUTEX_KEY, function () {
                Update::updateToCurrentVersion();
            });
        }
    }
public function handleAutomaticUpdates ( ) { $ config = $ this [ 'config' ] ; $ installed = $ config -> get ( 'concrete.version_db_installed' ) ; $ core = $ config -> get ( 'concrete.version_db' ) ; if ( $ installed < $ core ) { $ this -> make ( MutexInterface :: class ) -> execute ( Update :: MUTEX_KEY , function ( ) { Update :: updateToCurrentVersion ( ) ; } ) ; } }
Check if the core needs to be updated, and if so, updates it.

@throws \Concrete\Core\System\Mutex\MutexBusyException throws a MutexBusyException exception if there upgrade process is already running
@throws \Concrete\Core\Updater\Migrations\MigrationIncompleteException throws a MigrationIncompleteException exception if there's still some migration pending
Check if the core needs to be updated and if so updates it .