major
nice-to-have
minor
#25217
Layout-Export führt zu invaliden Komponenten-Referenzen bei Referenzierung einer bestehenden Komponente
#25327
Modell-Editor: Falsche Kompositionsmarker, wenn Container-Typ in Diagramm von Content-Typ gezogen wird
defect
If you create a cyclic inheritance hierarchy in the Model Editor (in the diagram) (A extends B, B extends A), this is not prevented, and the application subsequently crashes with an OutOfMemoryError when calculating paths:
2020-09-14 08:30:03.784 ERROR [qtp110456297-2365]: top_logic.util.error.ErrorHandlingHelper - Command 'dispatchControlCommand' failed.
com.top_logic.util.error.TopLogicException: Internal error
at com.top_logic.mig.html.layout.CommandDispatcher.internalDispatchCommand(CommandDispatcher.java:179)
at com.top_logic.mig.html.layout.CommandDispatcher.internalDispatch(CommandDispatcher.java:94)
at com.top_logic.mig.html.layout.CommandDispatcher.dispatchCommand(CommandDispatcher.java:77)
at com.top_logic.base.services.simpleajax.AJAXServlet.processRequest(AJAXServlet.java:638)
at com.top_logic.base.services.simpleajax.AJAXServlet.doPost(AJAXServlet.java:356)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at com.top_logic.util.TopLogicServlet.doService(TopLogicServlet.java:336)
at com.top_logic.util.TopLogicServlet.inContext(TopLogicServlet.java:193)
at com.top_logic.util.TopLogicServlet$1.inContext(TopLogicServlet.java:268)
at com.top_logic.util.TLContextManager.inInteractionInternal(TLContextManager.java:243)
at com.top_logic.util.TLContextManager.inInteraction(TLContextManager.java:219)
at com.top_logic.util.TopLogicServlet.enterContext(TopLogicServlet.java:263)
at com.top_logic.util.TopLogicServlet.service(TopLogicServlet.java:156)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder$NotAsyncServlet.service(ServletHolder.java:1411)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:763)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1651)
at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:226)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1638)
at com.top_logic.knowledge.gui.layout.HttpSecureHeaderFilter.doFilter(HttpSecureHeaderFilter.java:64)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1630)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:567)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:602)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1610)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1377)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:507)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1580)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1292)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at org.eclipse.jetty.server.Server.handle(Server.java:501)
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383)
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:556)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:375)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:3181)
at java.util.ArrayList.grow(ArrayList.java:267)
at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:241)
at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:233)
at java.util.ArrayList.add(ArrayList.java:464)
at com.top_logic.layout.table.tree.AbstractTreeTableComponent.createPath(AbstractTreeTableComponent.java:901)
at com.top_logic.layout.table.tree.AbstractTreeTableComponent.setSelected(AbstractTreeTableComponent.java:846)
at com.top_logic.layout.table.tree.AbstractTreeTableComponent.receiveModelSetBySlaveEvent(AbstractTreeTableComponent.java:330)
at com.top_logic.mig.html.layout.ModelEventAdapter.handleModelEvent(ModelEventAdapter.java:44)
at com.top_logic.knowledge.gui.layout.TLMainLayout$EventHandler.dispatchEvent(TLMainLayout.java:276)
at com.top_logic.knowledge.gui.layout.TLMainLayout$EventHandler.dispatchModelSetEvent(TLMainLayout.java:247)
at com.top_logic.knowledge.gui.layout.TLMainLayout$EventHandler.broadcastModelEvent(TLMainLayout.java:188)
at com.top_logic.knowledge.gui.layout.TLMainLayout.broadcastModelEvent(TLMainLayout.java:74)
at com.top_logic.mig.html.layout.LayoutComponent.internalFireModelEvent(LayoutComponent.java:1754)
at com.top_logic.mig.html.layout.ComponentEvent.execute(ComponentEvent.java:57)
at com.top_logic.util.DefaultValidationQueue.actualExecute(DefaultValidationQueue.java:171)
at com.top_logic.util.DefaultValidationQueue.executeAction(DefaultValidationQueue.java:150)
at com.top_logic.util.DefaultValidationQueue.enqueueAction(DefaultValidationQueue.java:56)
at com.top_logic.util.DefaultValidationQueue.enqueueAction(DefaultValidationQueue.java:25)
at com.top_logic.layout.internal.SubsessionHandler.enqueueAction(SubsessionHandler.java:330)
at com.top_logic.layout.internal.SubsessionHandler.enqueueAction(SubsessionHandler.java:73)
at com.top_logic.mig.html.layout.LayoutComponent.enqueueEvent(LayoutComponent.java:1734)
at com.top_logic.mig.html.layout.LayoutComponent.fireModelEvent(LayoutComponent.java:1720)
at com.top_logic.mig.html.layout.LayoutComponent.broadcastModelSet(LayoutComponent.java:2745)
at com.top_logic.mig.html.layout.LayoutComponent.afterModelSet(LayoutComponent.java:2704)
at com.top_logic.tool.boundsec.BoundComponent.afterModelSet(BoundComponent.java:698)
at com.top_logic.mig.html.layout.LayoutComponent.setModel(LayoutComponent.java:2549)
at com.top_logic.graph.diagramjs.server.DiagramJSGraphComponent.updateParentSelection(DiagramJSGraphComponent.java:560)
at com.top_logic.graph.diagramjs.server.DiagramJSGraphComponent.setSelected(DiagramJSGraphComponent.java:553)
at com.top_logic.layout.channel.SelectionChannel$Impl.set(SelectionChannel.java:93)
at com.top_logic.graph.diagramjs.server.DiagramJSGraphComponent$2.handleAttributeUpdate(DiagramJSGraphComponent.java:316)
at com.top_logic.common.remote.listener.AbstractAttributeObservable$Listeners.handleAttributeUpdate(AbstractAttributeObservable.java:81)
Test
- Create a new module with types A` and `B.
- Set up inheritance: `A` extends `B`.
- Expected: Works.
- Create inheritance `B` extends `A`.
- Expected: Error message: Circular inheritance relationship.