Page 1 of 1

setRoomVariables issues "Deflater has been closed"

Posted: 31 Aug 2018, 04:14
by crimsonfantasy
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.

Re: setRoomVariables issues "Deflater has been closed"

Posted: 31 Aug 2018, 07:17
by Lapo
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:
https://forums.smartfoxserver.com/viewt ... 18&t=16497

Thanks

Re: setRoomVariables issues "Deflater has been closed"

Posted: 03 Sep 2018, 02:30
by crimsonfantasy
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.

Re: setRoomVariables issues "Deflater has been closed"

Posted: 03 Sep 2018, 07:51
by Lapo
If the problem is reproducible can you show us the code that causes the exception?
Thanks

Re: setRoomVariables issues "Deflater has been closed"

Posted: 31 Oct 2019, 11:51
by michael
hi,have you fix this problem? "setRoomVariables issues "Deflater has been closed" ,i have got the same problem . :roll: :roll: :roll:

Re: setRoomVariables issues "Deflater has been closed"

Posted: 31 Oct 2019, 11:55
by michael
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

Re: setRoomVariables issues "Deflater has been closed"

Posted: 31 Oct 2019, 13:06
by Lapo
Hi,
can you show us how we can reproduce this issue?

Thanks