Please open an issue for this at https://issues.apache.org/jira/browse/WAVE
On Thu, Jun 27, 2013 at 6:13 PM, John Darret Steward < john.darret.stew...@gmail.com> wrote: > Dear Wavers, > > I've been trying to run a WIAB server using delta_store_type = file so as > to persist waves on the filesystem. However, this causes the following > error to be thrown whenever a wave is subject to active, heavy concurrent > edition by at least two users: > > com.google.gxp.compiler.io.RuntimeIOException: java.io.IOException: Delta > header invalid > at > > org.waveprotocol.box.server.waveserver.DeltaStoreBasedWaveletState.getTransformedDeltaHistory(DeltaStoreBasedWaveletState.java:374) > at > > org.waveprotocol.box.server.waveserver.WaveletContainerImpl.transformSubmittedDelta(WaveletContainerImpl.java:374) > at > > org.waveprotocol.box.server.waveserver.WaveletContainerImpl.maybeTransformSubmittedDelta(WaveletContainerImpl.java:359) > at > > org.waveprotocol.box.server.waveserver.LocalWaveletContainerImpl.transformAndApplyLocalDelta(LocalWaveletContainerImpl.java:140) > at > > org.waveprotocol.box.server.waveserver.LocalWaveletContainerImpl.submitRequest(LocalWaveletContainerImpl.java:98) > at > > org.waveprotocol.box.server.waveserver.WaveServerImpl.submitDelta(WaveServerImpl.java:553) > at > > org.waveprotocol.box.server.waveserver.WaveServerImpl.submitRequest(WaveServerImpl.java:355) > at > > org.waveprotocol.box.server.frontend.ClientFrontendImpl.submitRequest(ClientFrontendImpl.java:194) > at > > org.waveprotocol.box.server.frontend.WaveClientRpcImpl.submit(WaveClientRpcImpl.java:166) > at > > org.waveprotocol.box.common.comms.WaveClientRpc$ProtocolWaveClientRpc$1.submit(WaveClientRpc.java:4478) > at > > org.waveprotocol.box.common.comms.WaveClientRpc$ProtocolWaveClientRpc.callMethod(WaveClientRpc.java:4608) > at > > org.waveprotocol.box.server.rpc.ServerRpcControllerImpl.run(ServerRpcControllerImpl.java:202) > at > > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) > at > > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) > at java.lang.Thread.run(Thread.java:680) > Caused by: java.io.IOException: Delta header invalid > at > > org.waveprotocol.box.server.persistence.file.FileDeltaCollection.readDeltaHeader(FileDeltaCollection.java:451) > at > > org.waveprotocol.box.server.persistence.file.FileDeltaCollection.readRecord(FileDeltaCollection.java:406) > at > > org.waveprotocol.box.server.persistence.file.FileDeltaCollection.getDelta(FileDeltaCollection.java:189) > at > > org.waveprotocol.box.server.waveserver.DeltaStoreBasedWaveletState.getDelta(DeltaStoreBasedWaveletState.java:169) > at > > org.waveprotocol.box.server.waveserver.DeltaStoreBasedWaveletState.readDeltasInRange(DeltaStoreBasedWaveletState.java:147) > at > > org.waveprotocol.box.server.waveserver.DeltaStoreBasedWaveletState.getTransformedDeltaHistory(DeltaStoreBasedWaveletState.java:366) > ... 14 more > > I'm afraid this will occur a lot more frequently as I add more and more > users to the wave. > > After a while trying to debug this I found it originates because, at some > point, the server will try to read a past version of the wave from the > persistence file using an erroneous or corrupted position in the file as an > index. This occurs almost "randomly" halfway through the editing process, > and can be easily reproduced by having two users opening and editing the > same wave actively using the WIAB client. > > Is anyone aware of this / already working on fixing this? >