Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.cdo/src/org/eclipse')
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java68
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java4
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewImpl.java2
3 files changed, 51 insertions, 23 deletions
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java
index b783e08b74..ad32a8060c 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java
@@ -1056,6 +1056,24 @@ public abstract class CDOSessionImpl extends CDOTransactionContainerImpl impleme
long previousTimeStamp = commitInfo.getPreviousTimeStamp();
long lastUpdateTime = getLastUpdateTime();
+ int xxx;
+ if (sessionID == 3)
+ {
+ ArrayList<Long> queue;
+ synchronized (outOfSequenceInvalidations)
+ {
+ queue = new ArrayList<Long>(outOfSequenceInvalidations.size());
+ for (OutOfSequenceInvalidation invalidation : outOfSequenceInvalidations.values())
+ {
+ queue.add(invalidation.getCommitInfo().getTimeStamp() % 10000L);
+ }
+ }
+
+ Collections.sort(queue);
+ System.out.println("(" + lastUpdateTime % 10000L + ") " + commitInfo.getClass().getSimpleName() + ": "
+ + previousTimeStamp % 10000L + " --> " + commitInfo.getTimeStamp() % 10000L + " Queue=" + queue);
+ }
+
if (previousTimeStamp < lastUpdateTime)
{
previousTimeStamp = lastUpdateTime;
@@ -1142,33 +1160,43 @@ public abstract class CDOSessionImpl extends CDOTransactionContainerImpl impleme
private void invalidateOrdered(CDOCommitInfo commitInfo, InternalCDOTransaction sender, boolean clearResourcePathCache)
{
- Map<CDOID, InternalCDORevision> oldRevisions = null;
- boolean success = commitInfo.getBranch() != null;
- if (success)
+ try
{
- oldRevisions = reviseRevisions(commitInfo);
- }
+ Map<CDOID, InternalCDORevision> oldRevisions = null;
+ boolean success = commitInfo.getBranch() != null;
+ if (success)
+ {
+ oldRevisions = reviseRevisions(commitInfo);
+ }
- if (options.isPassiveUpdateEnabled())
- {
- setLastUpdateTime(commitInfo.getTimeStamp());
- }
+ if (options.isPassiveUpdateEnabled())
+ {
+ setLastUpdateTime(commitInfo.getTimeStamp());
+ }
- if (success)
- {
- fireInvalidationEvent(sender, commitInfo);
- commitInfoManager.notifyCommitInfoHandlers(commitInfo);
- }
+ if (success)
+ {
+ fireInvalidationEvent(sender, commitInfo);
+ commitInfoManager.notifyCommitInfoHandlers(commitInfo);
+ }
- for (InternalCDOView view : getViews())
- {
- if (view != sender)
+ for (InternalCDOView view : getViews())
{
- invalidateView(commitInfo, view, oldRevisions, clearResourcePathCache);
+ if (view != sender)
+ {
+ invalidateView(commitInfo, view, oldRevisions, clearResourcePathCache);
+ }
+ else
+ {
+ view.setLastUpdateTime(commitInfo.getTimeStamp());
+ }
}
- else
+ }
+ catch (RuntimeException ex)
+ {
+ if (isActive())
{
- view.setLastUpdateTime(commitInfo.getTimeStamp());
+ throw ex;
}
}
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java
index 21d9f1a5f2..059ccd7e46 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java
@@ -2932,11 +2932,12 @@ public class CDOTransactionImpl extends CDOViewImpl implements InternalCDOTransa
{
InternalCDOSession session = getSession();
long timeStamp = result.getTimeStamp();
+ boolean clearResourcePathCache = result.isClearResourcePathCache();
if (result.getRollbackMessage() != null)
{
CDOCommitInfo commitInfo = new FailureCommitInfo(timeStamp, result.getPreviousTimeStamp());
- session.invalidate(commitInfo, transaction, result.isClearResourcePathCache());
+ session.invalidate(commitInfo, transaction, clearResourcePathCache);
return;
}
@@ -2969,7 +2970,6 @@ public class CDOTransactionImpl extends CDOViewImpl implements InternalCDOTransa
CDOCommitInfo commitInfo = makeCommitInfo(timeStamp, result.getPreviousTimeStamp());
if (!commitInfo.isEmpty())
{
- boolean clearResourcePathCache = result.isClearResourcePathCache();
session.invalidate(commitInfo, transaction, clearResourcePathCache);
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewImpl.java
index dc2a1693ac..0bafbc8e1c 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/view/CDOViewImpl.java
@@ -859,7 +859,7 @@ public class CDOViewImpl extends AbstractCDOView
{
try
{
- if (branch == getBranch())
+ if (branch == getBranch()) // Also false for FailureCommitInfos. Only setLastUpdateTime() is called below.
{
if (clearResourcePathCache)
{

Back to the top