Enhancement
Critical
Major
Detail
Detail
If you are in edit mode and copy an image, the following errors always appear in the log:
Multiple concurrent reads for the same resource: /tl-doc-app/servlet/LayoutServlet/w10aceb4863364a74/c9659/download/Koala%20-_87131.jpg com.top_logic.basic.thread.StackTrace at com.top_logic.basic.Logger.warn(Logger.java:198) at com.top_logic.base.services.simpleajax.RequestLock.enterReader(RequestLock.java:460) at com.top_logic.layout.internal.SubsessionHandler.handleCompositeContent(SubsessionHandler.java:300) at com.top_logic.layout.internal.WindowHandler.handleContent(WindowHandler.java:89) at com.top_logic.layout.internal.WindowRegistry.dispatch(WindowRegistry.java:139) at com.top_logic.layout.ContentHandlersRegistry.dispatch(ContentHandlersRegistry.java:162) at com.top_logic.layout.ContentHandlersRegistry.dispatch(ContentHandlersRegistry.java:1) at com.top_logic.layout.internal.WindowRegistry.dispatch(WindowRegistry.java:91) at com.top_logic.layout.internal.WindowRegistry.handleContent(WindowRegistry.java:85) at com.top_logic.knowledge.gui.layout.TLLayoutServlet.doGet(TLLayoutServlet.java:80) at javax.servlet.http.HttpServlet.service(HttpServlet.java:687) 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:1401) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:760) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1617) at com.top_logic.knowledge.gui.layout.HttpSecureHeaderFilter.doFilter(HttpSecureHeaderFilter.java:64) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1596) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:545) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:536) 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:1592) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1296) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:485) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1562) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1211) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) 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:500) at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:386) at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:562) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:378) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:270) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) 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:388) 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)
Sometimes even an error appears:
org.eclipse.jetty.io.EofException at org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:283) at org.eclipse.jetty.io.WriteFlusher.flush(WriteFlusher.java:422) at org.eclipse.jetty.io.WriteFlusher.write(WriteFlusher.java:277) at org.eclipse.jetty.io.AbstractEndPoint.write(AbstractEndPoint.java:381) at org.eclipse.jetty.server.HttpConnection$SendCallback.process(HttpConnection.java:810) at org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:241) at org.eclipse.jetty.util.IteratingCallback.iterate(IteratingCallback.java:223) at org.eclipse.jetty.server.HttpConnection.send(HttpConnection.java:541) at org.eclipse.jetty.server.HttpChannel.sendResponse(HttpChannel.java:844) at org.eclipse.jetty.server.HttpChannel.write(HttpChannel.java:916) at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:259) at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:235) at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:623) at java.util.zip.DeflaterOutputStream.deflate(DeflaterOutputStream.java:253) at java.util.zip.DeflaterOutputStream.write(DeflaterOutputStream.java:211) at java.util.zip.GZIPOutputStream.write(GZIPOutputStream.java:145) at com.top_logic.util.filter.CompressionResponseStream.writeToGZip(CompressionResponseStream.java:322) at com.top_logic.util.filter.CompressionResponseStream.write(CompressionResponseStream.java:272) at com.top_logic.basic.io.StreamUtilities.copyStreamContents(StreamUtilities.java:252) at com.top_logic.layout.form.control.DeliverContentHandler.deliverContent(DeliverContentHandler.java:63) at com.top_logic.layout.wysiwyg.ui.StructuredTextControl.downloadFile(StructuredTextControl.java:745) at com.top_logic.layout.wysiwyg.ui.StructuredTextControl.handleContent(StructuredTextControl.java:736) at com.top_logic.layout.AbstractDispatchingContentHandler.handleContent(AbstractDispatchingContentHandler.java:35) at com.top_logic.mig.html.layout.TopLevelComponentScope.handleContent(TopLevelComponentScope.java:109) at com.top_logic.layout.CompositeHandlerAdapter.handleContent(CompositeHandlerAdapter.java:45) at com.top_logic.layout.internal.WindowHandler.handleCompositeContent(WindowHandler.java:143) at com.top_logic.layout.internal.SubsessionHandler.handleCompositeContent(SubsessionHandler.java:303) at com.top_logic.layout.internal.WindowHandler.handleContent(WindowHandler.java:89) at com.top_logic.layout.internal.WindowRegistry.dispatch(WindowRegistry.java:139) at com.top_logic.layout.ContentHandlersRegistry.dispatch(ContentHandlersRegistry.java:162) at com.top_logic.layout.ContentHandlersRegistry.dispatch(ContentHandlersRegistry.java:1) at com.top_logic.layout.internal.WindowRegistry.dispatch(WindowRegistry.java:91) at com.top_logic.layout.internal.WindowRegistry.handleContent(WindowRegistry.java:85) at com.top_logic.knowledge.gui.layout.TLLayoutServlet.doGet(TLLayoutServlet.java:80) at javax.servlet.http.HttpServlet.service(HttpServlet.java:687) 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:1401) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:760) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1617) at com.top_logic.knowledge.gui.layout.HttpSecureHeaderFilter.doFilter(HttpSecureHeaderFilter.java:64) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1596) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:545) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:536) 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:1592) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1296) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:485) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1562) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1211) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) 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:500) at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:386) at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:562) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:378) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:270) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) 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:388) 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.io.IOException: An existing connection was terminated under software control by the host computer at sun.nio.ch.SocketDispatcher.writev0(Native Method) at sun.nio.ch.SocketDispatcher.writev(SocketDispatcher.java:55) at sun.nio.ch.IOUtil.write(IOUtil.java:148) at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:504) at org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:263) ... 79 more
When an image is copied, it is accessed 3 times by ckeditor. Currently an image is not cached, so unnecessary server requests take place.
Improvement
The cache for images has now been enabled using the cache control in the response header. This means that a server request is not sent every time the image is accessed.
Test
Must be done especially on Chrome, as this is where most of the problems occurred! On a page that contains an image, switch to Edit mode. In addition, open the Developer Tools and go to the Network tab to keep an eye on the requests (if necessary, uncheck "Disable Cache"). Then copy the image (without pasting it again). In the developer tools check if requests were sent or if the image was loaded from the cache. Also make sure that no RequestLock error message appears.