[ 
https://issues.apache.org/jira/browse/WAVE-395?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ali Lown resolved WAVE-395.
---------------------------

    Resolution: Duplicate
      Assignee:     (was: Yuri Zelikov)

> Delta File Storage Crashes WIAB
> -------------------------------
>
>                 Key: WAVE-395
>                 URL: https://issues.apache.org/jira/browse/WAVE-395
>             Project: Wave
>          Issue Type: Bug
>          Components: Server
>            Reporter: capo
>            Priority: Critical
>         Attachments: ScreenFlow.mp4
>
>
> 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 was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to