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.