Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2012-09-15 17:19:49 +0000
committerEike Stepper2012-09-15 17:19:49 +0000
commit8b9148653cd64e2a072292e4b5521f41be815dd7 (patch)
tree1a3f8f18977c55cdcc6084d763b5265145c6873f /plugins/org.eclipse.emf.cdo.net4j
parentc5f8afb091979d794f7b023f98bbc6a748d90f48 (diff)
downloadcdo-8b9148653cd64e2a072292e4b5521f41be815dd7.tar.gz
cdo-8b9148653cd64e2a072292e4b5521f41be815dd7.tar.xz
cdo-8b9148653cd64e2a072292e4b5521f41be815dd7.zip
[389665] Cache path->resourceNodeID mappings in AbstractCDOView
https://bugs.eclipse.org/bugs/show_bug.cgi?id=389665
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.net4j')
-rw-r--r--plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitNotificationIndication.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitTransactionRequest.java17
2 files changed, 18 insertions, 3 deletions
diff --git a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitNotificationIndication.java b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitNotificationIndication.java
index 77588ac82f..dfb8fbc169 100644
--- a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitNotificationIndication.java
+++ b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitNotificationIndication.java
@@ -34,6 +34,8 @@ public class CommitNotificationIndication extends CDOClientIndication
{
InternalCDOSession session = getSession();
CDOCommitInfo commitInfo = in.readCDOCommitInfo();
- session.handleCommitNotification(commitInfo);
+ boolean clearResourcePathCache = in.readBoolean();
+
+ session.handleCommitNotification(commitInfo, clearResourcePathCache);
}
}
diff --git a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitTransactionRequest.java b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitTransactionRequest.java
index 190bc92581..08c8bd482d 100644
--- a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitTransactionRequest.java
+++ b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitTransactionRequest.java
@@ -41,6 +41,7 @@ import org.eclipse.emf.cdo.session.CDORepositoryInfo;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
import org.eclipse.emf.internal.cdo.object.CDOObjectReferenceImpl;
+import org.eclipse.emf.internal.cdo.view.AbstractCDOView;
import org.eclipse.net4j.util.concurrent.ConcurrencyUtil;
import org.eclipse.net4j.util.io.ExtendedDataOutputStream;
@@ -83,6 +84,8 @@ public class CommitTransactionRequest extends CDOClientRequestWithMonitoring<Com
private CDOTransaction transaction;
+ private boolean clearResourcePathCache;
+
public CommitTransactionRequest(CDOClientProtocol protocol, InternalCDOCommitContext context)
{
this(protocol, CDOProtocolConstants.SIGNAL_COMMIT_TRANSACTION, context);
@@ -182,11 +185,20 @@ public class CommitTransactionRequest extends CDOClientRequestWithMonitoring<Com
TRACER.format("Writing {0} dirty objects", changedObjects.size()); //$NON-NLS-1$
}
+ CDOID rootResourceID = transaction.getSession().getRepositoryInfo().getRootResourceID();
for (CDORevisionKey changedObject : changedObjects)
{
- out.writeCDORevisionDelta((CDORevisionDelta)changedObject);
+ CDORevisionDelta delta = (CDORevisionDelta)changedObject;
+ if (!clearResourcePathCache && AbstractCDOView.canHaveResourcePathImpact(delta, rootResourceID))
+ {
+ clearResourcePathCache = true;
+ }
+
+ out.writeCDORevisionDelta(delta);
}
+ out.writeBoolean(clearResourcePathCache);
+
if (TRACER.isEnabled())
{
TRACER.format("Writing {0} detached objects", detachedObjects.size()); //$NON-NLS-1$
@@ -301,7 +313,8 @@ public class CommitTransactionRequest extends CDOClientRequestWithMonitoring<Com
}
}
- return new CommitTransactionResult(idProvider, rollbackMessage, branchPoint, previousTimeStamp, xRefs);
+ return new CommitTransactionResult(idProvider, rollbackMessage, branchPoint, previousTimeStamp, xRefs,
+ clearResourcePathCache);
}
return null;

Back to the top