Hi,

The WebSocket communication doesn't update the session, i.e. doesn't renew
it. This is by Servlet specification.
So if there is no normal HTTP request then the http session will expire and
Wicket will clean up its resources.
Later when a web socket message comes it might fail with such kind of error.

I am not sure what is the best solution to this.
There is an established web socket connection and there won't be a new
handshake when the message arrives.
The only workaround I see is to make a ping once per N minutes, where N is
less than the session timeout duration.

But the exception in the DiskDataStore happens in a different thread, so I
think it should not affect the thread where the application reads/writes to
the websocket connection.

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Wed, Feb 8, 2017 at 9:46 AM, Peter Henderson <[email protected]
> wrote:

> Morning all.
>
> Wicket 7.6.0
> Tomcat 8.5.11
> Java 1.8.0_121
>
>
>
> I'm seeing several DiskDataStore Exceptions [1]. Normally towards the end
> of the day, long after users have stopped using my app. So probably when
> their sessions time out.
> The file name looks very suspicious to me.
> /opt/starjar/domains/customer/apache-tomcat-8.5.11/work/
> Catalina/localhost/Starjar/Key[type=org.apache.wicket.protocol.ws.javax.
> JavaxWebSocketFilter,
> annotation=[none]]-filestore/247/7021/D69E0EE552DC1F1FE5FF986A1A919C
> 39/data
>
>
>
> Another perhaps unrelated exception [2]
>
>
> Any pointers where I should dig to solve this ?
>
> Thanks
> Peter
>
>
>
>
>
> [1]
> 2017-02-07 20:59:34.358 SEVERE oawp.DiskDataStore
> /opt/starjar/domains/viper/apache-tomcat-8.5.11/work/
> Catalina/localhost/Starjar/Key[type=org.apache.wicket.protocol.ws.javax.
> JavaxWebSocketFilter,
> annotation=[none]]-filesto
> re/247/7021/D69E0EE552DC1F1FE5FF986A1A919C39/data (No such file or
> directory)
> java.io.FileNotFoundException:
> /opt/starjar/domains/customer/apache-tomcat-8.5.11/work/
> Catalina/localhost/Starjar/Key[type=org.apache.wicket.protocol.ws.javax.
> JavaxWebSocketFilter,
> annotation=[none]]-filestore/247/7021/D69E0EE552DC1F1FE5FF986A1A919C
> 39/data
> (No such file or directory)
>         at java.io.RandomAccessFile.open0(Native Method)
>         at java.io.RandomAccessFile.open(RandomAccessFile.java:316)
>         at java.io.RandomAccessFile.<init>(RandomAccessFile.java:243)
>         at
> org.apache.wicket.pageStore.DiskDataStore$SessionEntry.
> getFileChannel(DiskDataStore.java:432)
>         at
> org.apache.wicket.pageStore.DiskDataStore$SessionEntry.
> savePage(DiskDataStore.java:350)
>         at
> org.apache.wicket.pageStore.DiskDataStore.storeData(
> DiskDataStore.java:188)
>         at
> org.apache.wicket.pageStore.AsynchronousDataStore$PageSavingRunnable.run(
> AsynchronousDataStore.java:355)
>         at java.lang.Thread.run(Thread.java:745)
>
>
>
>
>
>
> [2]
> 2017-02-07 21:33:52.127 SEVERE oawpwj.WicketEndpoint An error occurred in
> web socket connection with id : 5c1c
> java.io.EOFException
>         at
> org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.
> fillReadBuffer(NioEndpoint.java:1221)
>         at
> org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.
> fillReadBuffer(NioEndpoint.java:1192)
>         at
> org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.
> read(NioEndpoint.java:1165)
>         at
> org.apache.tomcat.websocket.server.WsFrameServer.
> onDataAvailable(WsFrameServer.java:63)
>         at
> org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(
> WsHttpUpgradeHandler.java:148)
>         at
> org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(
> UpgradeProcessorInternal.java:54)
>         at
> org.apache.coyote.AbstractProcessorLight.process(
> AbstractProcessorLight.java:53)
>         at
> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(
> AbstractProtocol.java:798)
>         at
> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.
> doRun(NioEndpoint.java:1434)
>         at
> org.apache.tomcat.util.net.SocketProcessorBase.run(
> SocketProcessorBase.java:49)
>         at
> java.util.concurrent.ThreadPoolExecutor.runWorker(
> ThreadPoolExecutor.java:1142)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(
> ThreadPoolExecutor.java:617)
>         at
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(
> TaskThread.java:61)
>         at java.lang.Thread.run(Thread.java:745)
>
>
>
> --
> Peter Henderson
>

Reply via email to