diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo/src/org/eclipse')
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) { |