What steps will reproduce the problem?
1. Open a wave on two clients,
2. Have both clients submit deltas concurrently
3. Eventually, the server will start rejecting deltas, due to server-side
exceptions like:
java.lang.IllegalStateException: Expected deltas starting at version
203:8zZxYkBAqF9BgDcY46hIw1xIJNs=, got 210
at com.google.common.base.Preconditions.checkState(Preconditions.java:172)
at org.waveprotocol.box.server.frontend.ClientFrontendImpl.waveletUpdate(ClientFrontendImpl.java:347)
at org.waveprotocol.box.server.waveserver.WaveBusDispatcher.waveletUpdate(WaveBusDispatcher.java:51)
at org.waveprotocol.box.server.waveserver.WaveServerImpl.submitDelta(WaveServerImpl.java:633)
at org.waveprotocol.box.server.waveserver.WaveServerImpl.submitRequest(WaveServerImpl.java:412)
at org.waveprotocol.box.server.frontend.ClientFrontendImpl.submitRequest(ClientFrontendImpl.java:238)
at org.waveprotocol.box.server.frontend.WaveClientRpcImpl.submit(WaveClientRpcImpl.java:152)
at org.waveprotocol.box.server.waveserver.WaveClientRpc$ProtocolWaveClientRpc$1.submit(WaveClientRpc.java:3921)
at org.waveprotocol.box.server.waveserver.WaveClientRpc$ProtocolWaveClientRpc.callMethod(WaveClientRpc.java:4032)
at org.waveprotocol.box.server.rpc.ServerRpcController.run(ServerRpcController.java:199)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:636)
After that point, the wave is permanently broken. When reloading that wave in
a fresh client session, the client is sent snapshots at some version (210 in
this example), but delta submissions against version 210 fail, because the
server is expecting version 203 for some reason.
Original issue reported on code.google.com by hearn...@google.com on 18 Oct 2010 at 8:04
Original issue reported on code.google.com by
hearn...@google.com
on 18 Oct 2010 at 8:04