Bug #13295
openОтмена переиспользования с применением Ctrl в Requality Explorer приводит к deadlock
100%
Description
Если переиспользовать требование с потомками при помощи зажатого Ctrl и переноса нужного требования в новое место а затем отменить процедуру - происходит блокировка. Привожу лог по потокам
Thread dump at 0:05.680.640
- Thread group "main":
Thread "Worker-30: Reaction after creation on 6f12b5ed-b97c-46ee-97ac-4db3166eee4e":
at jdk.internal.misc.Unsafe.park(boolean, long)
at java.util.concurrent.locks.LockSupport.park(java.lang.Object) (line: 211)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(java.util.concurrent.locks.AbstractQueuedSynchronizer$Node, int, boolean, boolean, boolean, long) (line: 715)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(int) (line: 1027)
at java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock() (line: 738)
at com.unitesk.requality.eclipse.core.ResourceStorage.readLock(java.util.UUID) (line: 730)
at com.unitesk.requality.eclipse.core.ResourceStorage.getNodeId(java.util.UUID) (line: 219)
at com.unitesk.requality.eclipse.core.ResourceStorage.getFile(java.util.UUID) (line: 1456)
at com.unitesk.requality.eclipse.core.ResourceStorage.getChildrenFolder(java.util.UUID, org.eclipse.core.runtime.IProgressMonitor) (line: 665)
at com.unitesk.requality.eclipse.core.ResourceStorage.getFile(java.util.UUID, java.util.UUID, java.lang.String, boolean, org.eclipse.core.runtime.IProgressMonitor) (line: 651)
at com.unitesk.requality.eclipse.core.ResourceStorage.getFile(java.util.UUID) (line: 1459)
at com.unitesk.requality.eclipse.core.ResourceStorage.getChildrenFolder(java.util.UUID, org.eclipse.core.runtime.IProgressMonitor) (line: 665)
at com.unitesk.requality.eclipse.core.ResourceStorage$1.run(org.eclipse.core.runtime.IProgressMonitor) (line: 818)
at org.eclipse.core.internal.resources.Workspace.run(org.eclipse.core.runtime.ICoreRunnable, org.eclipse.core.runtime.jobs.ISchedulingRule, int, org.eclipse.core.runtime.IProgressMonitor) (line: 2380)
at org.eclipse.core.internal.resources.Workspace.run(org.eclipse.core.resources.IWorkspaceRunnable, org.eclipse.core.runtime.jobs.ISchedulingRule, int, org.eclipse.core.runtime.IProgressMonitor) (line: 2405)
at com.unitesk.requality.eclipse.core.ResourceStorage.run(org.eclipse.core.resources.IWorkspaceRunnable, org.eclipse.core.runtime.jobs.ISchedulingRule) (line: 1835)
at com.unitesk.requality.eclipse.core.ResourceStorage.runWithoutDeltaProc(org.eclipse.core.resources.IWorkspaceRunnable, org.eclipse.core.runtime.jobs.ISchedulingRule) (line: 1863)
at com.unitesk.requality.eclipse.core.ResourceStorage.createStorageNode(com.unitesk.requality.core.model.NodeDescSet, java.lang.String, byte) (line: 908)
at com.unitesk.requality.core.storage.AbstractTreeStorage.createNode(com.unitesk.requality.core.model.NodeDescSet, java.lang.String, byte) (line: 222)
at com.unitesk.requality.core.instancer.TreeInstancer.createStorageNode(com.unitesk.requality.core.model.NodeDescSet, java.lang.String, byte) (line: 542)
at com.unitesk.requality.core.storage.AbstractTreeStorage.createNode(com.unitesk.requality.core.model.NodeDescSet, java.lang.String, byte) (line: 222)
at com.unitesk.requality.core.instancer.TreeInstancer.cloneUUID(com.unitesk.requality.core.model.TreeDB, java.util.UUID, com.unitesk.requality.core.model.TreeNode, java.util.UUID, java.lang.String, java.util.Collection, java.util.Map) (line: 352)
at com.unitesk.requality.nodetype.VirtualNode.updateChildrenOfClone(com.unitesk.requality.core.model.TreeNode) (line: 832)
at com.unitesk.requality.core.model.TreeDB.updateNodeChildren(com.unitesk.requality.core.model.TreeNode, java.util.Collection, boolean) (line: 3705)
at com.unitesk.requality.core.model.TreeDB.createFromStorage(java.util.UUID, java.lang.String, java.util.Map) (line: 3756)
at com.unitesk.requality.core.model.NodeCache.loadNode(java.util.UUID, java.lang.String, java.util.Map, boolean) (line: 178)
at com.unitesk.requality.core.model.TreeDB.getNode(com.unitesk.requality.core.model.NodeDesc, int, boolean) (line: 1400)
at com.unitesk.requality.core.model.TreeDB$4.created(com.unitesk.requality.core.model.NodeDescSet, java.lang.String, byte) (line: 2611)
at com.unitesk.requality.eclipse.core.ResourceStorage$2.run(org.eclipse.core.runtime.IProgressMonitor) (line: 921)Thread "main":
at com.unitesk.requality.eclipse.core.ResourceStorage.runWithoutDeltaProc(org.eclipse.core.resources.IWorkspaceRunnable, org.eclipse.core.runtime.jobs.ISchedulingRule) (line: 1863)
at com.unitesk.requality.eclipse.core.ResourceStorage.saveStorageAttributes(java.util.UUID, com.unitesk.requality.core.operation.ChangesSet, byte) (line: 1444)
at com.unitesk.requality.core.storage.AbstractTreeStorage.saveAttributes(java.util.UUID, com.unitesk.requality.core.operation.ChangesSet, byte) (line: 258)
at com.unitesk.requality.core.model.TreeDB.saveAttributes(com.unitesk.requality.core.model.TreeNode, com.unitesk.requality.core.operation.ChangesSet, boolean, byte) (line: 1560)
at com.unitesk.requality.core.model.TreeDB.commitAttributes(com.unitesk.requality.core.model.TreeNode, com.unitesk.requality.core.operation.ChangesSet, boolean, boolean, byte) (line: 1534)
at com.unitesk.requality.core.attribute.AttributeStorage.commitChanges(com.unitesk.requality.core.operation.ChangesSet, boolean, byte) (line: 1969)
at com.unitesk.requality.core.model.TreeDB$4.changeAttributes(java.util.UUID, com.unitesk.requality.core.operation.ChangesSet, byte) (line: 2881)
at com.unitesk.requality.core.transaction.SaveAttributes.apply(com.unitesk.requality.core.storage.ITreeStorage, com.unitesk.requality.core.storage.IStorageDeltaListener) (line: 58)
at com.unitesk.requality.core.transaction.TransactionStorage.applyOperation(com.unitesk.requality.core.transaction.TreeOperation, com.unitesk.requality.core.storage.ITreeStorage) (line: 842)
at com.unitesk.requality.core.transaction.TransactionStorage.apply(com.unitesk.requality.core.storage.ITreeStorage, boolean) (line: 795)
at com.unitesk.requality.core.transaction.TransactionStorage.apply(boolean) (line: 753)
at com.unitesk.requality.core.model.TreeDB.commit(boolean) (line: 1755)
at com.unitesk.requality.core.model.TreeDB$3.operationEnded(java.lang.String) (line: 2179)
at com.unitesk.requality.core.storage.AbstractTreeStorage.endOperation(java.lang.String) (line: 368)
at com.unitesk.requality.eclipse.operations.TreeDBOperation.undo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable) (line: 72)