[
https://issues.apache.org/jira/browse/WAVE-393?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13696663#comment-13696663
]
John Darret Steward edited comment on WAVE-393 at 7/1/13 9:08 AM:
------------------------------------------------------------------
Yuri, I forgot to mention that the two users were editing the -same- blip.
Sorry. Also, you must have an eye on the logs because nothing happens visually
on the client when the error is thrown (but one of the users loses connection
with the server).
was (Author: john.darret.steward):
Yuri, I forgot to mention that the two users were editing the -same- blip.
Sorry. Also, you must have an eye on the logs because nothing happens visually
on the client when the error is thrown.
> Delta File Storage Crashes WIAB
> -------------------------------
>
> Key: WAVE-393
> URL: https://issues.apache.org/jira/browse/WAVE-393
> Project: Wave
> Issue Type: Bug
> Components: Server
> Reporter: John Darret Steward
> Assignee: Yuri Zelikov
> Priority: Critical
>
> 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
> 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.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira