-
Notifications
You must be signed in to change notification settings - Fork 676
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update technical note for Object Cache with Drupal #9051
base: main
Are you sure you want to change the base?
Update technical note for Object Cache with Drupal #9051
Conversation
D9 and D7 needed the steps that are no longer considered optional.
@@ -119,6 +119,26 @@ contributors: [cityofoaksdesign, carolynshannon, jms-pantheon, whitneymeredith] | |||
|
|||
</Alert> | |||
|
|||
<Accordion title="Database Cleanup (recommended)" id="database-cleanup-drupal" icon="lightbulb"> | |||
|
|||
After enabling Redis, there are cache tables in the database that are no longer being used. Even when the Drupal cache is cleared, these tables will not be emptied. For sites that were live for awhile before Redis was enabled, there could be significant amounts of data in these tables. Removing this data could increase the speed of cloning, exporting, and backing up the database. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ccharlton are these tables not emptied by regular cache clears? I see the logic in emptying them, but I'm surprised we need to specify direct sql
queries.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are instances where stale data has snagged customers on setup. Moving the tip to recommended but not required seemed more appropriate than leaving it as optional.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
But does the stale data get removed with a cache clear? I would rather recommending to customer that they click the cache clear button than they figure out (perhaps for the first time) how to directly run mysql commands against Pantheon.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ccharlton, can you respond here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@stevector and @ccharlton after Redis is enabled on a site, truncating the cache tables / bins that have moved to Redis storage is a required step and is not automatically done by enabling the Redis module, running drush cr, or clicking the cache clear button in the Pantheon dashboard. This is currently not documented in a stable release of the Redis module: https://www.drupal.org/project/redis/issues/3177375
If this step is skipped once Redis is enabled, the result is race conditions when invalidating cache which are incredibly difficult to diagnose and can result in very strange issues on the site - eg config appears to revert to old values after running a drush config:import after a deployment. The most failsafe approach is to just truncate all cache* tables which can be done with a direct mysql query, or via drush:
# Get a list of all cache tables
CACHETABLES="$(terminus drush <site>.<env> -- sql:query "SHOW TABLES LIKE 'cache%';")"
# Trucate each cache table in a loop to avoid resource contention and potential deadlocks.
for table in $CACHETABLES; do
terminus drush <site>.<env> -- sql:query "TRUNCATE TABLE $table;"
done
@codyfishman posted his similar PR here: #9052 |
D9 and D7 needed the steps that are no longer considered optional.
Closes #
Summary
Object Cache for Drupal - changes optional to recommended and makes sure D9 people see the info.
Release:
Post Launch
Do not remove - To be completed by the docs team upon merge:
/old-path/
=>/new-path/
(if applicable)