diff options
author | Eike Stepper | 2022-11-05 08:23:18 +0000 |
---|---|---|
committer | Eike Stepper | 2022-11-05 08:23:18 +0000 |
commit | 578f8c107d02e1a02969b62fba837d199aa60689 (patch) | |
tree | 7e4faaeb5eb486aeee35666449f409dfb8fedab2 /plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf | |
parent | 91b8a053f019ef1d1d3d4af292c21aeddf80e04f (diff) | |
download | cdo-578f8c107d02e1a02969b62fba837d199aa60689.tar.gz cdo-578f8c107d02e1a02969b62fba837d199aa60689.tar.xz cdo-578f8c107d02e1a02969b62fba837d199aa60689.zip |
[580991] Outdated lock state when releasing a durable lock
https://bugs.eclipse.org/bugs/show_bug.cgi?id=580991
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LockAreaIndication.java | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LockAreaIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LockAreaIndication.java index 819aba63df..2d6f01cf67 100644 --- a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LockAreaIndication.java +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/LockAreaIndication.java @@ -10,11 +10,15 @@ */ package org.eclipse.emf.cdo.server.internal.net4j.protocol; +import org.eclipse.emf.cdo.common.branch.CDOBranch; +import org.eclipse.emf.cdo.common.lock.CDOLockOwner; import org.eclipse.emf.cdo.common.lock.IDurableLockingManager.LockArea; import org.eclipse.emf.cdo.common.protocol.CDODataInput; import org.eclipse.emf.cdo.common.protocol.CDODataOutput; import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants; import org.eclipse.emf.cdo.spi.server.InternalLockManager; +import org.eclipse.emf.cdo.spi.server.InternalSession; +import org.eclipse.emf.cdo.spi.server.InternalSessionManager; import org.eclipse.emf.cdo.spi.server.InternalView; import java.io.IOException; @@ -42,10 +46,20 @@ public class LockAreaIndication extends CDOServerWriteIndication boolean create = in.readBoolean(); if (create) { + CDOLockOwner oldOwner = view.getLockOwner(); LockArea area = lockManager.createLockArea(view); result = area.getDurableLockingID(); view.setDurableLockingID(result); + + CDOLockOwner newOwner = view.getLockOwner(); + if (newOwner != oldOwner) + { + CDOBranch branch = view.getBranch(); + InternalSession session = view.getSession(); + InternalSessionManager manager = session.getManager(); + manager.sendLockOwnerRemappedNotification(session, branch, oldOwner, newOwner); + } } else { |