Fast node access rebuild

Component ID

1341036

Component name

Fast node access rebuild

Component type

module

Maintenance status

Development status

Component security advisory coverage

not-covered

Component created

Component changed

Component body

This module was designed to solve the specific problem of rebuilding the node access table quickly.
This task would sometimes take the standard Drupal system tens of hours on sites with hundreds of thousands of nodes. Add to this, the fact that the standard drupal node access rebuild removes all access entries before rebuilding, and this can cause a site to be unavailable for many hours if the permissions have to be rebuilt.

The principle of this module is that this process can be sped up by making multiple simultaneous javascript calls to a rebuild script, which processes mutliples nodes at a time.
By adjusting the javascript request interval and the number of nodes to process per request, the module can be tuned for a specific site to make enough concurrent requests to provide a significant speed boost over serial processing, while not overloading the server.
Like the built-in drupal rebuild, the browser page must be left open during the rebuild, as the progress to completion is handled by client-side javascript.

The module works by returning a count of nodes (possibly matching a set of optional filters), calculating the highest and lowest node id within that set, then calculating the range between these. It then divides this range into blocks of node ids, according to the number per block setting on the administration page.
When the user initiates processing, the module then progresses through these blocks, making a javascript (JSON) page request for each block of nodes, at a rate defined on the module settings
page. Any appropriate filters are sent along with the javascript request to the server which does a database query to find the matching nodes for that block, and then does a node access rebuild
on those nodes. The results for the node id groups are displayed as coloured cells.