setRoomVariables issues "Deflater has been closed"

Post here your questions about SFS2X. Here we discuss all server-side matters. For client API questions see the dedicated forums.

Moderators: Lapo, Bax

crimsonfantasy
Posts: 13
Joined: 21 Feb 2018, 03:02

setRoomVariables issues "Deflater has been closed"

Postby crimsonfantasy » 31 Aug 2018, 04:14

Our user report unexpected disconnection. I found some exception ejected when users occur unexpected disconnection.
This exceptions refer to my code setRoomVariables;

Code: Select all

java.lang.NullPointerException: Deflater has been closed
        at java.util.zip.Deflater.ensureOpen(Deflater.java:559)
        at java.util.zip.Deflater.deflate(Deflater.java:440)
        at org.eclipse.jetty.websocket.common.extensions.compress.CompressExtension$Flusher.compress(CompressExtension.java:468)
        at org.eclipse.jetty.websocket.common.extensions.compress.CompressExtension$Flusher.deflate(CompressExtension.java:435)
        at org.eclipse.jetty.websocket.common.extensions.compress.CompressExtension$Flusher.process(CompressExtension.java:415)
        at org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:241)
        at org.eclipse.jetty.util.IteratingCallback.iterate(IteratingCallback.java:224)
        at org.eclipse.jetty.websocket.common.extensions.compress.CompressExtension.outgoingFrame(CompressExtension.java:218)
        at org.eclipse.jetty.websocket.common.extensions.ExtensionStack$Flusher.process(ExtensionStack.java:395)
        at org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:241)
        at org.eclipse.jetty.util.IteratingCallback.iterate(IteratingCallback.java:224)
        at org.eclipse.jetty.websocket.common.extensions.ExtensionStack.outgoingFrame(ExtensionStack.java:296)
        at org.eclipse.jetty.websocket.common.WebSocketRemoteEndpoint.uncheckedSendFrame(WebSocketRemoteEndpoint.java:310)
        at org.eclipse.jetty.websocket.common.WebSocketRemoteEndpoint.sendAsyncFrame(WebSocketRemoteEndpoint.java:240)
        at org.eclipse.jetty.websocket.common.WebSocketRemoteEndpoint.sendBytesByFuture(WebSocketRemoteEndpoint.java:276)
        at sfs2x.websocket.SFS2XWSService$WSChannelListener.write(SFS2XWSService.java:353)
        at com.smartfoxserver.bitswarm.websocket.jetty.WebSocketBinaryProtocolCodec.onPacketWrite(WebSocketBinaryProtocolCodec.java:121)
        at com.smartfoxserver.bitswarm.core.BitSwarmEngine.writeToWebSocket(BitSwarmEngine.java:417)
        at com.smartfoxserver.bitswarm.core.BitSwarmEngine.write(BitSwarmEngine.java:398)
        at com.smartfoxserver.bitswarm.io.Response.write(Response.java:71)
        at com.smartfoxserver.v2.api.response.SFSResponseApi.notifyRoomVariablesUpdate(SFSResponseApi.java:375)
        at com.smartfoxserver.v2.api.SFSApi.setRoomVariables(SFSApi.java:1568)
        at com.smartfoxserver.v2.api.SFSApi.setRoomVariables(SFSApi.java:1529)
   // here is my  logic in game and I use  sfsApi.setRoomVariables(null, room, Collections.singletonList(variable));
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)



I have weird logic around my program before "setRoomVariable"
I checked new SfsObject whether is equal with previous state of SfsObject.
If iSfsObject is changed, update my RoomVariable with this SfsObject

Code: Select all

            RoomVariable variable1 = room.getVariable(betPoolKey);
            ISFSObject oldValue = variable1.getSFSObjectValue();
            byte[] oldByteValue = oldValue.toBinary();
            byte[] newByteValue = newBetPoolData.toBinary();
            boolean equals = Arrays.equals(oldByteValue, newByteValue);


I have no ideal. How do I resolve these issue?
Thank you.
User avatar
Lapo
Site Admin
Posts: 23009
Joined: 21 Mar 2005, 09:50
Location: Italy

Re: setRoomVariables issues "Deflater has been closed"

Postby Lapo » 31 Aug 2018, 07:17

Hi,
we need more details. Such as version of client and server, API and platform used etc...
Please see here on how to post and issue:
viewtopic.php?f=18&t=16497

Thanks
Lapo
--
gotoAndPlay()
...addicted to flash games
crimsonfantasy
Posts: 13
Joined: 21 Feb 2018, 03:02

Re: setRoomVariables issues "Deflater has been closed"

Postby crimsonfantasy » 03 Sep 2018, 02:30

1. SmartFoxServer version used
server used smartFox 2X 2.13

2 » Client technology and client API version (which is found in the version property of the main SmartFox object instance)
Client is based on HTML5 technologies, and used Smart Fox Client API, 1.7.11.
User avatar
Lapo
Site Admin
Posts: 23009
Joined: 21 Mar 2005, 09:50
Location: Italy

Re: setRoomVariables issues "Deflater has been closed"

Postby Lapo » 03 Sep 2018, 07:51

If the problem is reproducible can you show us the code that causes the exception?
Thanks
Lapo

--

gotoAndPlay()

...addicted to flash games
User avatar
michael
Posts: 2
Joined: 31 Oct 2019, 11:42

Re: setRoomVariables issues "Deflater has been closed"

Postby michael » 31 Oct 2019, 11:51

hi,have you fix this problem? "setRoomVariables issues "Deflater has been closed" ,i have got the same problem . :roll: :roll: :roll:
User avatar
michael
Posts: 2
Joined: 31 Oct 2019, 11:42

Re: setRoomVariables issues "Deflater has been closed"

Postby michael » 31 Oct 2019, 11:55

java.lang.NullPointerException: Deflater has been closed
at java.util.zip.Deflater.ensureOpen(Deflater.java:559)
at java.util.zip.Deflater.deflate(Deflater.java:440)
at org.eclipse.jetty.websocket.common.extensions.compress.CompressExtension$Flusher.compress(CompressExtension.java:468)
at org.eclipse.jetty.websocket.common.extensions.compress.CompressExtension$Flusher.deflate(CompressExtension.java:435)
at org.eclipse.jetty.websocket.common.extensions.compress.CompressExtension$Flusher.process(CompressExtension.java:415)
at org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:241)
at org.eclipse.jetty.util.IteratingCallback.iterate(IteratingCallback.java:224)
at org.eclipse.jetty.websocket.common.extensions.compress.CompressExtension.outgoingFrame(CompressExtension.java:218)
at org.eclipse.jetty.websocket.common.extensions.ExtensionStack$Flusher.process(ExtensionStack.java:395)
at org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:241)
at org.eclipse.jetty.util.IteratingCallback.iterate(IteratingCallback.java:224)
at org.eclipse.jetty.websocket.common.extensions.ExtensionStack.outgoingFrame(ExtensionStack.java:296)
at org.eclipse.jetty.websocket.common.WebSocketRemoteEndpoint.uncheckedSendFrame(WebSocketRemoteEndpoint.java:310)
at org.eclipse.jetty.websocket.common.WebSocketRemoteEndpoint.sendAsyncFrame(WebSocketRemoteEndpoint.java:240)
at org.eclipse.jetty.websocket.common.WebSocketRemoteEndpoint.sendBytesByFuture(WebSocketRemoteEndpoint.java:276)
at sfs2x.websocket.SFS2XWSService$WSChannelListener.write(SFS2XWSService.java:353)
at com.smartfoxserver.bitswarm.websocket.jetty.WebSocketBinaryProtocolCodec.onPacketWrite(WebSocketBinaryProtocolCodec.java:121)
at com.smartfoxserver.bitswarm.core.BitSwarmEngine.writeToWebSocket(BitSwarmEngine.java:417)
at com.smartfoxserver.bitswarm.core.BitSwarmEngine.write(BitSwarmEngine.java:398)
at com.smartfoxserver.bitswarm.io.Response.write(Response.java:71)
at com.smartfoxserver.v2.api.response.SFSResponseApi.notifyRoomVariablesUpdate(SFSResponseApi.java:375)
at com.smartfoxserver.v2.api.SFSApi.setRoomVariables(SFSApi.java:1568)
at com.gamesmart.sfs.multibingogame.listener.MultiBingoRoomListener.endGame(MultiBingoRoomListener.java:62)
at com.gamesmart.multibingo.core.MultiBingoMachine.endGame(MultiBingoMachine.java:765)
at com.gamesmart.multibingo.core.MultiBingoMachine.setGameState(MultiBingoMachine.java:417)
at com.gamesmart.multibingo.core.MultiBingoMachine.drawNumber(MultiBingoMachine.java:513)
at com.gamesmart.multibingo.core.MultiBingoMachine.lambda$startGame$3(MultiBingoMachine.java:498)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)


it occured but not always.

client is HTML5
sever is java
sfs2x-server version is 2.13.7
User avatar
Lapo
Site Admin
Posts: 23009
Joined: 21 Mar 2005, 09:50
Location: Italy

Re: setRoomVariables issues "Deflater has been closed"

Postby Lapo » 31 Oct 2019, 13:06

Hi,
can you show us how we can reproduce this issue?

Thanks
Lapo

--

gotoAndPlay()

...addicted to flash games

Return to “SFS2X Questions”

Who is online

Users browsing this forum: No registered users and 67 guests