Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
project
lightning_core
Commits
b85de9ac
Commit
b85de9ac
authored
Jan 24, 2020
by
phenaproxima
Browse files
Make the updatedb pre-command hook clear plugin discovery caches only, rather than all caches.
parent
67c622e7
Changes
2
Hide whitespace changes
Inline
Side-by-side
drush.services.yml
View file @
b85de9ac
...
@@ -4,6 +4,7 @@ services:
...
@@ -4,6 +4,7 @@ services:
arguments
:
arguments
:
-
'
@extension.list.profile'
-
'
@extension.list.profile'
-
'
%install_profile%'
-
'
%install_profile%'
-
'
@plugin.cache_clearer'
tags
:
tags
:
-
{
name
:
drush.command
}
-
{
name
:
drush.command
}
...
...
src/Commands/Hooks.php
View file @
b85de9ac
...
@@ -5,6 +5,7 @@ namespace Drupal\lightning_core\Commands;
...
@@ -5,6 +5,7 @@ namespace Drupal\lightning_core\Commands;
use
Consolidation\AnnotatedCommand\CommandData
;
use
Consolidation\AnnotatedCommand\CommandData
;
use
Consolidation\OutputFormatters\Options\FormatterOptions
;
use
Consolidation\OutputFormatters\Options\FormatterOptions
;
use
Drupal\Core\Extension\ProfileExtensionList
;
use
Drupal\Core\Extension\ProfileExtensionList
;
use
Drupal\Core\Plugin\CachedDiscoveryClearerInterface
;
use
Drush\Commands\DrushCommands
;
use
Drush\Commands\DrushCommands
;
use
Symfony\Component\Console\Event\ConsoleCommandEvent
;
use
Symfony\Component\Console\Event\ConsoleCommandEvent
;
...
@@ -27,6 +28,13 @@ class Hooks extends DrushCommands {
...
@@ -27,6 +28,13 @@ class Hooks extends DrushCommands {
*/
*/
private
$installProfile
;
private
$installProfile
;
/**
* The plugin cache clearer service.
*
* @var \Drupal\Core\Plugin\CachedDiscoveryClearerInterface
*/
private
$pluginCacheClearer
;
/**
/**
* Hooks constructor.
* Hooks constructor.
*
*
...
@@ -34,25 +42,32 @@ class Hooks extends DrushCommands {
...
@@ -34,25 +42,32 @@ class Hooks extends DrushCommands {
* The profile extension list service.
* The profile extension list service.
* @param string $install_profile
* @param string $install_profile
* The install_profile parameter.
* The install_profile parameter.
* @param \Drupal\Core\Plugin\CachedDiscoveryClearerInterface $plugin_cache_clearer
* The plugin cache clearer service.
*/
*/
public
function
__construct
(
ProfileExtensionList
$profile_list
,
$install_profile
)
{
public
function
__construct
(
ProfileExtensionList
$profile_list
,
$install_profile
,
CachedDiscoveryClearerInterface
$plugin_cache_clearer
)
{
$this
->
profileList
=
$profile_list
;
$this
->
profileList
=
$profile_list
;
$this
->
installProfile
=
$install_profile
;
$this
->
installProfile
=
$install_profile
;
$this
->
pluginCacheClearer
=
$plugin_cache_clearer
;
}
}
/**
/**
* Clears all caches before database updates begin.
* Clears all
plugin
caches before database updates begin.
*
*
* A common cause of errors during database updates is update hooks
* A common cause of errors during database updates is update hooks
* inadvertently using stale data from the myriad caches in Drupal core and
* inadvertently using stale data from the myriad caches in Drupal core and
* contributed modules. Clearing all caches before updates begin ensures that
* contributed modules. To migitate this, we do a bit of cache pruning before
* the system always has the freshest and most accurate data to work with,
* database updates begin.
* which is especially helpful during major surgery like a database update.
*
* drupal_flush_all_caches() is extremely aggressive because it rebuilds the
* router and other things, but it's a bit too much of a sledgehammer for our
* purposes. A good compromise is to clear all plugin discovery caches (which
* will include entity type definitions).
*
*
* @hook pre-command updatedb
* @hook pre-command updatedb
*/
*/
public
function
preUpdate
()
{
public
function
preUpdate
()
{
drupal_flush_all_cache
s
();
$this
->
pluginCacheClearer
->
clearCachedDefinition
s
();
}
}
/**
/**
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment