# Unable to fire model event fetchSeriesData for

**URL:** <https://forum.inductiveautomation.com/t/unable-to-fire-model-event-fetchseriesdata-for/110400>\
**Category:** Ignition\
**Tags:** perspective, ignition81\
**Created:** [September 5, 2025, 8:54am UTC](https://forum.inductiveautomation.com/t/unable-to-fire-model-event-fetchseriesdata-for/110400 "2025-09-05T08:54:54Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Herman\_Lundberg](https://avatars.discourse-cdn.com/v4/letter/h/df705f/32.png) [@Herman\_Lundberg](https://forum.inductiveautomation.com/u/Herman_Lundberg)\
**Post date:** [September 5, 2025, 8:54am UTC](https://forum.inductiveautomation.com/t/unable-to-fire-model-event-fetchseriesdata-for/110400/1 "2025-09-05T08:54:54Z")

</div>

Hi!

I have an error with a view containing some powercharts and tag bindings. There are four powercharts and 1-4 of them freeze quite often where only a refresh of the webpage fixes it. The webpage is display on a smart TV and no navigation to or from the view is done, so it’s a fixed view of one page. Only the powercharts freeze, which some usually do within 12 hours, other tag bindings continue showing live data. The first iteration of the views had the powercharts two levels down embedded, but I have since rebuilt the view where the powercharts are directly placed in root and have have the pen adress manually added (no binding), but it produces the same result.

Any ideas to what could cause this? Error messages that I think are linked to this are shown below.

> | |
> | --- |

> | Unable to fire model event fetchSeriesData for PowerChart |
> | --- |
> | |

undefined|----|

> java.io.IOException: java.util.concurrent.TimeoutException: Idle timeout expired: 300000/300000 msat org.eclipse.jetty.util.FutureCallback.block(FutureCallback.java:163)at org.eclipse.jetty.util.FutureCallback.block(FutureCallback.java:139)at org.eclipse.jetty.websocket.common.JettyWebSocketRemoteEndpoint.sendPartialString(JettyWebSocketRemoteEndpoint.java:123)\*\*at com.inductiveautomation.perspective.gateway.comm.WebSocketChannel.send(WebSocketChannel.java:79)\*\*at com.inductiveautomation.perspective.gateway.model.PageModel.send(PageModel.java:378)at com.inductiveautomation.perspective.gateway.model.ComponentModel.lambda$fireModelEvent$6(ComponentModel.java:596)at com.inductiveautomation.ignition.common.util.TimedRunnable.run(TimedRunnable.java:21)at com.inductiveautomation.ignition.common.util.ExecutionQueue$PollAndExecute.run(ExecutionQueue.java:239)at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)at java.base/java.lang.Thread.run(Unknown Source)Caused by: java.util.concurrent.TimeoutException: Idle timeout expired: 300000/300000 msat org.eclipse.jetty.io.IdleTimeout.checkIdleTimeout(IdleTimeout.java:170)at org.eclipse.jetty.io.IdleTimeout.idleCheck(IdleTimeout.java:112)at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)at java.base/java.util.concurrent.FutureTask.run(Unknown Source)at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)

> | |
> | --- |

> |
> 
> | Unable to send keepalive. |
> | --- |
> | |

> java.io.IOException: java.nio.channels.ClosedChannelException  
> at org.eclipse.jetty.util.FutureCallback.block(FutureCallback.java:163)  
> at org.eclipse.jetty.util.FutureCallback.block(FutureCallback.java:139)  
> at org.eclipse.jetty.websocket.common.JettyWebSocketRemoteEndpoint.sendPartialString(JettyWebSocketRemoteEndpoint.java:123)  
> **at com.inductiveautomation.perspective.gateway.comm.WebSocketChannel.send(WebSocketChannel.java:79)**  
> **at com.inductiveautomation.perspective.gateway.model.PageModel.send(PageModel.java:378)**  
> **at com.inductiveautomation.perspective.gateway.model.PageModel.send(PageModel.java:368)**  
> **at com.inductiveautomation.perspective.gateway.model.PageModel.sendKeepalive(PageModel.java:509)**  
> at java.base/java.util.ArrayList.forEach(Unknown Source)  
> **at com.inductiveautomation.perspective.gateway.session.AbstractSession.lambda$sendSessionKeepalive$8(AbstractSession.java:254)**  
> at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)  
> at java.base/java.util.concurrent.FutureTask.run(Unknown Source)  
> at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)  
> at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)  
> **at com.inductiveautomation.perspective.gateway.threading.BlockingWork$BlockingWorkRunnable.run(BlockingWork.java:58)**  
> at java.base/java.lang.Thread.run(Unknown Source)  
> Caused by: java.nio.channels.ClosedChannelException: null  
> at org.eclipse.jetty.websocket.core.internal.WebSocketSessionState.onOutgoingFrame(WebSocketSessionState.java:184)  
> at org.eclipse.jetty.websocket.core.internal.WebSocketCoreSession.sendFrame(WebSocketCoreSession.java:514)  
> at org.eclipse.jetty.websocket.common.JettyWebSocketRemoteEndpoint.sendPartialText(JettyWebSocketRemoteEndpoint.java:179)  
> at org.eclipse.jetty.websocket.common.JettyWebSocketRemoteEndpoint.sendPartialString(JettyWebSocketRemoteEndpoint.java:122)  
> ... 12 common frames omitted

> | |
> | --- |

> |
> 
> | Websocket connection errored out. Keeping session open. |
> | --- |
> | |

> org.eclipse.jetty.websocket.api.exceptions.WebSocketTimeoutException: Connection Idle Timeout  
> at org.eclipse.jetty.websocket.common.JettyWebSocketFrameHandler.convertCause(JettyWebSocketFrameHandler.java:542)  
> at org.eclipse.jetty.websocket.common.JettyWebSocketFrameHandler.onError(JettyWebSocketFrameHandler.java:259)  
> at org.eclipse.jetty.websocket.core.internal.WebSocketCoreSession.lambda$closeConnection$2(WebSocketCoreSession.java:284)  
> at org.eclipse.jetty.server.handler.ContextHandler.handle(ContextHandler.java:1469)  
> at org.eclipse.jetty.server.handler.ContextHandler.handle(ContextHandler.java:1488)  
> at org.eclipse.jetty.websocket.core.server.internal.AbstractHandshaker$1.handle(AbstractHandshaker.java:212)  
> at org.eclipse.jetty.websocket.core.internal.WebSocketCoreSession.closeConnection(WebSocketCoreSession.java:284)  
> at org.eclipse.jetty.websocket.core.internal.WebSocketCoreSession.lambda$sendFrame$8(WebSocketCoreSession.java:520)  
> at org.eclipse.jetty.util.Callback$3.failed(Callback.java:161)  
> at org.eclipse.jetty.websocket.core.internal.TransformingFlusher.notifyCallbackFailure(TransformingFlusher.java:213)  
> at org.eclipse.jetty.websocket.core.internal.TransformingFlusher.onFailure(TransformingFlusher.java:126)  
> at org.eclipse.jetty.websocket.core.internal.TransformingFlusher$Flusher.onCompleteFailure(TransformingFlusher.java:185)  
> at org.eclipse.jetty.util.IteratingCallback.failed(IteratingCallback.java:418)  
> at org.eclipse.jetty.websocket.core.internal.TransformingFlusher.notifyCallbackFailure(TransformingFlusher.java:213)  
> at org.eclipse.jetty.websocket.core.internal.TransformingFlusher$Flusher.onCompleteFailure(TransformingFlusher.java:182)  
> at org.eclipse.jetty.util.IteratingCallback.failed(IteratingCallback.java:418)  
> at org.eclipse.jetty.util.Callback$Nested.failed(Callback.java:405)  
> at org.eclipse.jetty.websocket.core.internal.FrameFlusher.notifyCallbackFailure(FrameFlusher.java:477)  
> at org.eclipse.jetty.websocket.core.internal.FrameFlusher.onCompleteFailure(FrameFlusher.java:439)  
> at org.eclipse.jetty.websocket.core.internal.WebSocketConnection$Flusher.onCompleteFailure(WebSocketConnection.java:664)  
> at org.eclipse.jetty.util.IteratingCallback.failed(IteratingCallback.java:418)  
> at org.eclipse.jetty.util.Callback$Nested.failed(Callback.java:405)  
> at org.eclipse.jetty.io.WriteFlusher.onFail(WriteFlusher.java:503)  
> at org.eclipse.jetty.io.AbstractEndPoint.onIdleExpired(AbstractEndPoint.java:413)  
> at org.eclipse.jetty.io.IdleTimeout.checkIdleTimeout(IdleTimeout.java:170)  
> at org.eclipse.jetty.io.IdleTimeout.idleCheck(IdleTimeout.java:112)  
> at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)  
> at java.base/java.util.concurrent.FutureTask.run(Unknown Source)  
> at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)  
> at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)  
> at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)  
> at java.base/java.lang.Thread.run(Unknown Source)  
> Caused by: org.eclipse.jetty.websocket.core.exception.WebSocketTimeoutException: Connection Idle Timeout  
> at org.eclipse.jetty.websocket.core.internal.WebSocketConnection.onIdleExpired(WebSocketConnection.java:242)  
> at org.eclipse.jetty.io.AbstractEndPoint.onIdleExpired(AbstractEndPoint.java:407)  
> ... 8 common frames omitted

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [September 5, 2025, 4:43pm UTC](https://forum.inductiveautomation.com/t/unable-to-fire-model-event-fetchseriesdata-for/110400/2 "2025-09-05T16:43:10Z")

</div>

It looks like your TV, probably as a power saving optimization, is killing the persistent connection Perspective relies upon. From the gateway's point of view, it no longer exists, so it stops trying to send data to it.

You _might_ be able to work around it via some settings changes on the TV, but more likely you'll need to get some kind of 'real' computer that you can hook up to the TV. I don't have any recommendations there, but basically anything that can run a modern (ideally hardware accelerated) browser should be fine for use with Perspective.
