when running permissions rebuild i get the following:

An AJAX HTTP error occurred. HTTP Result Code: 500 Debugging information follows. Path: /batch?id=184&op=do StatusText: Service unavailable (with message) ResponseText: PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '658-2-workflow_access' for key 'PRIMARY': INSERT INTO {node_access} (nid, realm, gid, grant_view, grant_update, grant_delete) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5), (:db_insert_placeholder_6, :db_insert_placeholder_7, :db_insert_placeholder_8, :db_insert_placeholder_9, :db_insert_placeholder_10, :db_insert_placeholder_11), (:db_insert_placeholder_12, :db_insert_placeholder_13, :db_insert_placeholder_14, :db_insert_placeholder_15, :db_insert_placeholder_16, :db_insert_placeholder_17), (:db_insert_placeholder_18, :db_insert_placeholder_19, :db_insert_placeholder_20, :db_insert_placeholder_21, :db_insert_placeholder_22, :db_insert_placeholder_23), (:db_insert_placeholder_24, :db_insert_placeholder_25, :db_insert_placeholder_26, :db_insert_placeholder_27, :db_insert_placeholder_28, :db_insert_placeholder_29), (:db_insert_placeholder_30, :db_insert_placeholder_31, :db_insert_placeholder_32, :db_insert_placeholder_33, :db_insert_placeholder_34, :db_insert_placeholder_35); Array ( [:db_insert_placeholder_0] => 658 [:db_insert_placeholder_1] => workflow_access_owner [:db_insert_placeholder_2] => 1 [:db_insert_placeholder_3] => 1 [:db_insert_placeholder_4] => 0 [:db_insert_placeholder_5] => 0 [:db_insert_placeholder_6] => 658 [:db_insert_placeholder_7] => workflow_access [:db_insert_placeholder_8] => 2 [:db_insert_placeholder_9] => 1 [:db_insert_placeholder_10] => 0 [:db_insert_placeholder_11] => 0 [:db_insert_placeholder_12] => 658 [:db_insert_placeholder_13] => workflow_access [:db_insert_placeholder_14] => 3 [:db_insert_placeholder_15] => 1 [:db_insert_placeholder_16] => 1 [:db_insert_placeholder_17] => 1 [:db_insert_placeholder_18] => 658 [:db_insert_placeholder_19] => workflow_access [:db_insert_placeholder_20] => 4 [:db_insert_placeholder_21] => 1 [:db_insert_placeholder_22] => 1 [:db_insert_placeholder_23] => 1 [:db_insert_placeholder_24] => 658 [:db_insert_placeholder_25] => workflow_access [:db_insert_placeholder_26] => 9 [:db_insert_placeholder_27] => 1 [:db_insert_placeholder_28] => 1 [:db_insert_placeholder_29] => 1 [:db_insert_placeholder_30] => 658 [:db_insert_placeholder_31] => workflow_access [:db_insert_placeholder_32] => 2 [:db_insert_placeholder_33] => 1 [:db_insert_placeholder_34] => 0 [:db_insert_placeholder_35] => 0 ) in node_access_write_grants() (line 3564 of E:\www\hdl\modules\node\node.module).

prior to running rebuild the entry did not exist in the node_access table; so the rebuild process is trying to add it twice.

Comments

liquidcms’s picture

not sure i follow but looking at code for workflow_access_node_access_records(), does it not create a grant set for each workflow field? and since field name is not part of the grant primary key (nid-gid-realm) will this not be an issue?

liquidcms’s picture

Title: workflow access preventing permissions rebuild » multiple workflow fields preventing permissions rebuild
johnv’s picture

This also happens when you have workflow_access and both workflow_field and workflow_node active.

  • johnv committed fab5a37 on 7.x-2.x
    Issue #2446811: Remove multiple workflows in...
johnv’s picture

Title: multiple workflow fields preventing permissions rebuild » Add support for multiple workflow fields in workflow_access
Category: Bug report » Feature request
Priority: Major » Normal

Above commit removes the fatal error, hence the lower priority. There is no D8-version work workflow_access yet, so nothing to do there.
It also removes an arbitrary workflow from the node_acces tables. A 'todo' comment is added to remind us to add the support for multiple workflows per entity type in workflow_access.

This happens in workflow_access_node_access_records() in file workflow_access.module.
New code should evaluate combinations of multiple workflow_access permissions.

This leaves us a feature request. Patches are welcome.

johnv’s picture

johnv’s picture

Version: 7.x-2.x-dev » 8.x-1.x-dev

workflow_access is now ported to D8, so, this issue is moved to the highest version.

johnv’s picture

Title: Add support for multiple workflow fields in workflow_access » Permissiosn: Add support for multiple workflow fields in workflow_access
johnv’s picture

Title: Permissiosn: Add support for multiple workflow fields in workflow_access » Permissions: Add support for multiple workflow fields in workflow_access