Skip to main content
Drupal is a registered trademark of Dries Buytaert
Release: OpenID Connect / OAuth client 3.0.0-alpha9 New alpha version released for module openid_connect (3.0.0-alpha9). Release: Opensolr Search 4.5.0 Minor update available for module opensolr_search (4.5.0). Release: Timelinr 1.0.1 Minor update available for module timelinr (1.0.1). Usage Milestone: Simplify Module simplify crossed 10,000 active installs. Usage Milestone: Views Reference Filter Module entityreference_filter crossed 10,000 active installs. Usage Milestone: Dropdown Language Module dropdown_language crossed 10,000 active installs. Usage Milestone: Paragraphs Browser Module paragraphs_browser crossed 10,000 active installs. Usage Milestone: OpenAPI Module openapi crossed 10,000 active installs. Usage Milestone: Decoupled Router Module decoupled_router crossed 10,000 active installs. Module Revived: Entityqueue Buttons 1.1.2 Module entityqueue_buttons updated after 8 months of inactivity (1.1.2).

Node Access Rebuild Progressive

1,480 sites Security covered Drupal 10–11
View on drupal.org

This module offers a faster way to rebuild content access permissions by processing nodes in chunks, rather than locking down the entire site. It ensures continued site usability during the rebuild process by keeping old access rules active until new ones are computed.

Utility module that provides an alternative mean of rebuilding the Content Access table.

Rationale

The default core behaviour, when a module marks the content_access table for rebuilding, is to delete all entries first and to then rebuild the grants for all nodes.

This conservative approach prevents anyone from accessing a node they should not have access to according to the new rules, until all acces rules have been computed. It bends towards a secure "deny first" approach, but this has a major drawback.
By preventing everyone to access everything at first, it means the whole site is basically unusable during the whole operation. For sites with a large number of nodes and/or lots of complex hook_node_grants implementations, it can be very lenghty and results in a lot of downtime.

The trade off implemented here consists in leaving the "old" access rules in place for a given node until the new ones have been computed.

This means someone could potentially still access some content they should no longer have the rights to until the new rules are in place. But it also means the site can continue to operate normally while the access rebuild takes place in the background.

Approach

The module works by processing nodes in chunks, from highest node.nid to lowest, until all nodes have been recomputed, storing the last processed nid in a variable (d7) / as state (d8).
This ensure no nodes can be skipped, while avoiding having to populate a Queue or other equivalent mechanism, which can be heavy in itself.

This can be processed either at cron run, one "chunk" at each cron call, or more efficiently, all at once through the provided drush command.

Usage

While you can configure the module to run at cron time, the preferred method is to use drush on demand:

drush node-access-rebuild-progressive

Related modules

A similar functionality is provided by https://www.drupal.org/project/queued_node_access_rebuild, although the implementation differs in that it uses Drupal Queue API, making the initial population of the queue problematic for large sets of data.

Depends on

Dependencies of the latest stable release

No dependencies recorded for this project.

Required by

Tracked projects that depend on this one

No tracked projects depend on this one yet.

Activity

Tracked releases
2
Tracked since
Dec 2024
Latest release
1 month ago
Releases (12 mo)
1
Maintenance
Active

Releases

Version Type Core Release date
2.1.0 Stable 10–11 Jul 4, 2026
2.0.3 Stable 9–11 Dec 11, 2024