public class ContainmentCycleException extends ConcurrentAccessException
concurrent access exception
that indicates an attempt of the local transaction to introduce a containment cycle.
A containment cycle is an effect of a network race condition between two transactions that commit changes to possibly disjunct sets of objects. As a result
the overall tree structure of the model would be destroyed in a way that the tree root would no longer be reachable from objects involved in the containment cycle.
Commits that attempt to introduce containment cycles are detected by the repository and canceled. Note that locking all involved dirty objects
does not properly address the problem because the involved container objects may not be dirty.
It's usually possible and adequate to rollback
the transaction, replay the model modifications and
commit the transaction again (optimistic strategy). Pessimistic locks on the dirty objects can not safely avoid the problem; you must expect this exception to occur.
Constructor and Description |
---|
ContainmentCycleException(String message) |
isLocal, wrap
addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
public ContainmentCycleException(String message)
Copyright (c) 2014 Eike Stepper (Berlin, Germany) and others.
All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html