diff --git a/config/alfresco/ibatis/alfresco-SqlMapConfig.xml b/config/alfresco/ibatis/alfresco-SqlMapConfig.xml
index 88410392d1..fcf1104a40 100644
--- a/config/alfresco/ibatis/alfresco-SqlMapConfig.xml
+++ b/config/alfresco/ibatis/alfresco-SqlMapConfig.xml
@@ -184,7 +184,7 @@ Inbound settings from iBatis
-
+
diff --git a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/node-update-acl-SqlMap.xml b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/node-update-SqlMap.xml
similarity index 56%
rename from config/alfresco/ibatis/org.hibernate.dialect.Dialect/node-update-acl-SqlMap.xml
rename to config/alfresco/ibatis/org.hibernate.dialect.Dialect/node-update-SqlMap.xml
index 803eed8936..59ff55c888 100644
--- a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/node-update-acl-SqlMap.xml
+++ b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/node-update-SqlMap.xml
@@ -11,7 +11,9 @@
update
alf_node
set
- acl_id = #{newSharedAclId}
+ acl_id = #{newSharedAclId},
+ version = version + 1,
+ transaction_id = #{txnId}
where id in
(
select n.id
@@ -27,5 +29,26 @@
)
)
+
+
+
+ update
+ alf_node
+ set
+ version = version + 1,
+ n.transaction_id = #{parent.transaction.id}
+ where id in
+ (
+ select
+ ca.child_node_id
+ from
+ alf_child_assoc ca
+ where
+ ca.parent_node_id = #{parent.id}
+ and ca.is_primary = #{isPrimary}
+ )
+
\ No newline at end of file
diff --git a/config/alfresco/ibatis/org.hibernate.dialect.MySQLInnoDBDialect/node-update-acl-SqlMap.xml b/config/alfresco/ibatis/org.hibernate.dialect.MySQLInnoDBDialect/node-update-SqlMap.xml
similarity index 54%
rename from config/alfresco/ibatis/org.hibernate.dialect.MySQLInnoDBDialect/node-update-acl-SqlMap.xml
rename to config/alfresco/ibatis/org.hibernate.dialect.MySQLInnoDBDialect/node-update-SqlMap.xml
index cad03b9efe..14f1b23f7d 100644
--- a/config/alfresco/ibatis/org.hibernate.dialect.MySQLInnoDBDialect/node-update-acl-SqlMap.xml
+++ b/config/alfresco/ibatis/org.hibernate.dialect.MySQLInnoDBDialect/node-update-SqlMap.xml
@@ -12,7 +12,9 @@
alf_child_assoc assoc
join alf_node child on (child.id = assoc.child_node_id and assoc.is_primary = #{isPrimary})
set
- child.acl_id = #{newSharedAclId}
+ child.acl_id = #{newSharedAclId},
+ child.version = child.version + 1,
+ child.transaction_id = #{txnId}
where
assoc.parent_node_id = #{primaryParentNodeId}
and
@@ -21,5 +23,20 @@
OR child.acl_id = #{optionalOldSharedAclIdInAdditionToNull}
)
+
+
+
+ update
+ alf_node n
+ join alf_child_assoc ca on (ca.child_node_id = n.id)
+ set
+ n.version = n.version + 1,
+ n.transaction_id = #{parentNode.transaction.id}
+ where
+ ca.parent_node_id = #{parentNode.id}
+ and ca.is_primary = #{isPrimary}
+
\ No newline at end of file
diff --git a/source/java/org/alfresco/repo/domain/node/AbstractNodeDAOImpl.java b/source/java/org/alfresco/repo/domain/node/AbstractNodeDAOImpl.java
index 44ac30809d..abd362a6dd 100644
--- a/source/java/org/alfresco/repo/domain/node/AbstractNodeDAOImpl.java
+++ b/source/java/org/alfresco/repo/domain/node/AbstractNodeDAOImpl.java
@@ -1565,7 +1565,12 @@ public abstract class AbstractNodeDAOImpl implements NodeDAO, BatchingDAO
Long optionalOldSharedAlcIdInAdditionToNull,
Long newSharedAclId)
{
- updatePrimaryChildrenSharedAclId(primaryParentNodeId, optionalOldSharedAlcIdInAdditionToNull, newSharedAclId);
+ Long txnId = getCurrentTransactionId();
+ updatePrimaryChildrenSharedAclId(
+ txnId,
+ primaryParentNodeId,
+ optionalOldSharedAlcIdInAdditionToNull,
+ newSharedAclId);
invalidateCachesByNodeId(primaryParentNodeId, null, nodesCache);
}
@@ -3362,12 +3367,6 @@ public abstract class AbstractNodeDAOImpl implements NodeDAO, BatchingDAO
throw new DataIntegrityViolationException("Stale cache detected for Node #" + nodeId);
}
- private ParentAssocsInfo getParentAssocsCacheOnly(Long nodeId)
- {
- // can be null
- return parentAssocsCache.getValue(nodeId);
- }
-
/**
* Update a node's parent associations.
*/
@@ -3848,6 +3847,7 @@ public abstract class AbstractNodeDAOImpl implements NodeDAO, BatchingDAO
protected abstract int updateNode(NodeUpdateEntity nodeUpdate);
protected abstract int updateNodePatchAcl(NodeUpdateEntity nodeUpdate);
protected abstract void updatePrimaryChildrenSharedAclId(
+ Long txnId,
Long primaryParentNodeId,
Long optionalOldSharedAlcIdInAdditionToNull,
Long newSharedAlcId);
diff --git a/source/java/org/alfresco/repo/domain/node/PrimaryChildrenAclUpdateEntity.java b/source/java/org/alfresco/repo/domain/node/PrimaryChildrenAclUpdateEntity.java
index 55403e3ee5..ea5dc2f1e2 100644
--- a/source/java/org/alfresco/repo/domain/node/PrimaryChildrenAclUpdateEntity.java
+++ b/source/java/org/alfresco/repo/domain/node/PrimaryChildrenAclUpdateEntity.java
@@ -27,6 +27,7 @@ package org.alfresco.repo.domain.node;
*/
public class PrimaryChildrenAclUpdateEntity
{
+ Long txnId;
Long primaryParentNodeId;
Long optionalOldSharedAclIdInAdditionToNull;
Long newSharedAclId;
@@ -35,6 +36,16 @@ public class PrimaryChildrenAclUpdateEntity
{
}
+ public Long getTxnId()
+ {
+ return txnId;
+ }
+
+ public void setTxnId(Long txnId)
+ {
+ this.txnId = txnId;
+ }
+
public Long getPrimaryParentNodeId()
{
return primaryParentNodeId;
diff --git a/source/java/org/alfresco/repo/domain/node/ibatis/NodeDAOImpl.java b/source/java/org/alfresco/repo/domain/node/ibatis/NodeDAOImpl.java
index d6c9e168e9..beb3a322f2 100644
--- a/source/java/org/alfresco/repo/domain/node/ibatis/NodeDAOImpl.java
+++ b/source/java/org/alfresco/repo/domain/node/ibatis/NodeDAOImpl.java
@@ -326,11 +326,13 @@ public class NodeDAOImpl extends AbstractNodeDAOImpl
@Override
protected void updatePrimaryChildrenSharedAclId(
+ Long txnId,
Long primaryParentNodeId,
Long optionalOldSharedAlcIdInAdditionToNull,
Long newSharedAlcId)
{
PrimaryChildrenAclUpdateEntity primaryChildrenAclUpdateEntity = new PrimaryChildrenAclUpdateEntity();
+ primaryChildrenAclUpdateEntity.setTxnId(txnId);
primaryChildrenAclUpdateEntity.setPrimaryParentNodeId(primaryParentNodeId);
primaryChildrenAclUpdateEntity.setOptionalOldSharedAclIdInAdditionToNull(optionalOldSharedAlcIdInAdditionToNull);
primaryChildrenAclUpdateEntity.setNewSharedAclId(newSharedAlcId);