Images that won't load...

0 votes
asked May 10, 2018 in Question / help by bx
1. Every few days I need to reset my Jetty 9 PlantUML service (on Debian), as the server starts hanging and will not load any UML diagram with an <img:path> line.

2. The images are on the server itself and accessed via local file path. However, if I put the path of a non-existent image, the diagram will load showing image not found error where the image should be. I can also get the /uml/ of the diagram, but /svg/ won't load.

3. Once I restart the service, all starts working again, and I can't figure out what is causing the issue.

4. Same problem exists for URL images.

Any suggestions are much appreciated!

1 Answer

0 votes
answered May 13, 2018 by plantuml (298,440 points)
Is is possible to start your Jetty server with some logs ?

It looks like some resource leaks, but it's difficult to know what's going on without log.

Thanks
commented May 13, 2018 by bx
I'm a bit of a newbie when it comes to web server administrator. Took me a while to get the basic server up and running :). I see there are different types of logging that can be setup in Jetty 9 (https://www.eclipse.org/jetty/documentation/current/configuring-logging.html).

What's the simplest logging option you recommend I enable? Thanks!
commented Oct 17, 2019 by brettblue (180 points)
Wanted to follow-up on this. I'm now running the PlantUML Jetty docker container.

After running for about 12 hours the container crashed with exit code 255. Does this logged error mean anything to you?

java.io.IOException: javax.xml.transform.TransformerException: org.xml.sax.SAXException
org.eclipse.jetty.io.EofException
        at net.sourceforge.plantuml.ugraphic.svg.UGraphicSvg.createXml(UGraphicSvg.java:166)
        at net.sourceforge.plantuml.ugraphic.svg.UGraphicSvg.writeImageTOBEMOVED(UGraphicSvg.java:179)
        at net.sourceforge.plantuml.ugraphic.ImageBuilder.writeImageInternal(ImageBuilder.java:261)
        at net.sourceforge.plantuml.ugraphic.ImageBuilder.writeImageTOBEMOVED(ImageBuilder.java:180)
        at net.sourceforge.plantuml.svek.CucaDiagramFileMakerSvek.createFileInternal(CucaDiagramFileMakerSvek.java:127)
        at net.sourceforge.plantuml.svek.CucaDiagramFileMakerSvek.createFile(CucaDiagramFileMakerSvek.java:71)
        at net.sourceforge.plantuml.cucadiagram.CucaDiagram.exportDiagramInternal(CucaDiagram.java:425)
        at net.sourceforge.plantuml.UmlDiagram.exportDiagramNow(UmlDiagram.java:200)
        at net.sourceforge.plantuml.AbstractPSystem.exportDiagram(AbstractPSystem.java:135)
        at net.sourceforge.plantuml.servlet.DiagramResponse.sendDiagram(DiagramResponse.java:112)
        at net.sourceforge.plantuml.servlet.UmlDiagramService.doDiagramResponse(UmlDiagramService.java:101)
        at net.sourceforge.plantuml.servlet.UmlDiagramService.doGet(UmlDiagramService.java:68)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1623)
        at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:214)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1700)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1667)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
        at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)
        at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:152)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
        at org.eclipse.jetty.server.Server.handle(Server.java:505)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
        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:333)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
        at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:698)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:804)
        at java.lang.Thread.run(Thread.java:748)
ERROR:  'Closed'
...