Skip to content
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

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

ccharlton
Copy link
Contributor

@ccharlton ccharlton commented Jun 18, 2024

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.

  • Other prerequisites that must be completed before merging this PR

Release:

  • When ready
  • After date: $DATE

Post Launch

Do not remove - To be completed by the docs team upon merge:

  • Redirect /old-path/ => /new-path/ (if applicable)
  • Include/exclude pages ^ respectively within docs search service provider (if applicable)

D9 and D7 needed the steps that are no longer considered optional.
@ccharlton ccharlton added Type: Fix Content Issue or PR to resolve incorrect information in the docs Source: Pantheor Contribution from within Pantheon, unspecified team labels Jun 18, 2024
@ccharlton ccharlton requested a review from a team as a code owner June 18, 2024 15:40
@@ -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.
Copy link
Contributor

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.

Copy link
Contributor Author

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.

Copy link
Contributor

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.

Copy link
Contributor

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?

Copy link
Member

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

@ccharlton
Copy link
Contributor Author

@codyfishman posted his similar PR here: #9052

@stevector stevector added the Process: Blocked Issue or PR is blocked by something out of scope for the Docs team label Oct 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Process: Blocked Issue or PR is blocked by something out of scope for the Docs team Source: Pantheor Contribution from within Pantheon, unspecified team Type: Fix Content Issue or PR to resolve incorrect information in the docs
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants