Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2022-11-05 08:23:18 +0000
committerEike Stepper2022-11-05 08:23:18 +0000
commit578f8c107d02e1a02969b62fba837d199aa60689 (patch)
tree7e4faaeb5eb486aeee35666449f409dfb8fedab2 /plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf
parent91b8a053f019ef1d1d3d4af292c21aeddf80e04f (diff)
downloadcdo-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.java14
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
{

Back to the top