Jump to:
| Project: | Taxonomy Access Control |
| Version: | 6.x-1.0 |
| Component: | Code |
| Category: | bug report |
| Priority: | critical |
| Assigned: | Unassigned |
| Status: | closed (fixed) |
| Issue tags: | /batch error?Id=*op=do, rebuilding database access permissions fail, TAC, update.php |
Issue Summary
Drupal 6.14, Taxonomy Access Control 6.x-1.0. Rebuilding database fail then almost all nodes become accessible to normal users.
The problem arose by updating Drupal core from 6.13 to 6.14. Having launched successfully update.php, I was asked to rebuild the database access permissions in '/admin/tell/node-settings'. But the process of rebuilding failed in every attempt announcing the error '/batch error?Id=33*op=do', while the id number incremented at every attempt. As a result, almost all nodes became inaccessible to every user except user 1. Restoring the table {node_access} from the backup did not resolve the problem.
After struggling a while with this issue, I tried rebuilding the database access permissions with TAC deactivated. The process went thru with no error.
This problem can have been there before the update 6.14 because I was not asked to rebuild and did not make rebuilding of permissions for a long time.
While TAC still seems to work normally, I am now worried about the idea there may be some wrong access behavior…
Maybe TAC is not fully compatible with core 6.14? I would be really grateful if this issue could be fixed since the TAC module is IMHO so necessary that I even cannot understand why it's not part of Drupal's standard modules.
Any help will be of course greatly appreciate :)
Comments
#1
It seems the problem is caused by drupal batch node access processing which is called each time after any access module is activated. I found many threads in the forum complaining about same kind of problem occurring while any other access modules is activated. I presume something should be reworked in drupal batch process code...
The batch process first delete the node_access table, then start to invoke every access module to refill it with current permissions. As soon it hangs, the remaining access records will be missing. The linked nodes become then simply unaccessible to everybody but user 1.
The only workaround I found till now is to manually insert the right missing node_access records in the database then to call node_access_needs_rebuild(false) to get ride of the annoying drupal's 'access permissions need to be rebuild' message.
Maybe this ugly workaround nevertheless will help some others guys :)