[bug] Routes - Problem copying font input stream

build: b2019031202
os: win 10 pro

I’m not sure exactly what caused this npe but I think it was when I was trying to copy a cell values from a Table component. No rush on this but I wanted to relay.

Routes 12Mar2019 16:13:23 Problem copying font input stream to the servlet response output stream
org.eclipse.jetty.io.EofException: null

at org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:292)
at org.eclipse.jetty.io.WriteFlusher.flush(WriteFlusher.java:429)
at org.eclipse.jetty.io.WriteFlusher.write(WriteFlusher.java:322)
at org.eclipse.jetty.io.AbstractEndPoint.write(AbstractEndPoint.java:372)
at org.eclipse.jetty.server.HttpConnection$SendCallback.process(HttpConnection.java:794)
at org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:241)
at org.eclipse.jetty.util.IteratingCallback.iterate(IteratingCallback.java:224)
at org.eclipse.jetty.server.HttpConnection.send(HttpConnection.java:528)
at org.eclipse.jetty.server.HttpChannel.sendResponse(HttpChannel.java:783)
at org.eclipse.jetty.server.HttpChannel.write(HttpChannel.java:834)
at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:234)
at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:218)
at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:509)
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1384)
at org.apache.commons.io.IOUtils.copy(IOUtils.java:1357)
at com.inductiveautomation.perspective.gateway.comm.Routes.getFont(Routes.java:577)
at com.inductiveautomation.ignition.gateway.dataroutes.Route.service(Route.java:247)
at com.inductiveautomation.ignition.gateway.dataroutes.RouteGroupImpl.service(RouteGroupImpl.java:49)
at com.inductiveautomation.ignition.gateway.dataroutes.DataServlet.service(DataServlet.java:87)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:852)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:535)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
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:190)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)
at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:61)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.Server.handle(Server.java:530)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:347)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:256)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:247)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:140)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:382)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:708)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:626)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: An established connection was aborted by the software in your host machine
at java.base/sun.nio.ch.SocketDispatcher.writev0(Native Method)
at java.base/sun.nio.ch.SocketDispatcher.writev(Unknown Source)
at java.base/sun.nio.ch.IOUtil.write(Unknown Source)
at java.base/sun.nio.ch.IOUtil.write(Unknown Source)
at java.base/sun.nio.ch.SocketChannelImpl.write(Unknown Source)
at org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:272)
… 52 common frames omitted|

Apologies for the delay here - I’m going to see if someone can replicate this and get back to you.

Thanks!

Hi,

I take it you encountered this issue while working with the table component in Vision? Is that correct? Can you provided any steps to help replicate this behavior?

-Yousuf

This was perspective (I think). I’m unable to reproduce this. I wasn’t entirely sure what I did but I wanted to pass along the report.

Hi,

Thank you. We will keep an eye out for when it resurfaces again. Thanks for the report. We appreciate it.

-Yousuf

I am getting this error in 8.05 and can provide some more details.

When I make script changes to my project I am getting errors for code that is commented out (latest code in development does not match latest code deployed to the gateway). When I make changes to my timeseries charts they will be correct in development but the changes are not reflected in the runtime.

I noticed an error in the logs that directly coincides to me trying to save changes to my project “Problem copying font input stream to the servlet response output stream”. I believe something is blowing up when it tries to push changes out to the gateway.

The issue only seems to impact some things in my project. I’ve have found that I can save changes to my broken timeseries charts by copy/pasting the screen that is not uploading properly. Deleting the old screen and renaming the copy. That seems to force it to update the server.

I have a call in with support so I will be showing them the problem shortly. I just thought it would be good to give you a heads up in case that is helpful.

Edit:
Doing too many things at once… The OP is posting the exact same error. Anyway, I had this happen in the final 8.05 release so it’s still a thing.

I had an indentation problem on a callback function that may have caused an infinite loop. We’re going to schedule a reboot to reset things and see where it goes from there.

The error message might be caused by a firewall change. I have to get with IT to figure out if they changed anything. I’m remote connecting my designer through WAN to a remote gateway so firewalls can be problems. I’m going to direct IT to the port list to make sure things are opened up. Let me know if there is anything else I need to open up that isn’t covered here:
https://docs.inductiveautomation.com/display/DOC80/Gateway+Port+Reference

Just adding feedback.

We rebooted the server. I’m still getting this error.

I don’t believe the issue was caused by an infinite loop in a script because we haven’t had one of those since the server reboot. That said, there are other developers developing on this server so it’s possible that others have done things I am unaware of.