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

Ali Lown updated WAVE-175:
--------------------------

    Component/s: Server

> Simultaneous first-time reading of the same conversation by the same user has 
> race conditions
> ---------------------------------------------------------------------------------------------
>
>                 Key: WAVE-175
>                 URL: https://issues.apache.org/jira/browse/WAVE-175
>             Project: Wave
>          Issue Type: Bug
>          Components: Server
>            Priority: Minor
>
> <b>What steps will reproduce the problem?</b>
> [Theoretical, never done in practice]
> 1. Create a wave with several blips, add participant X.
> 2. User X logs in to two clients, then goes offline (e.g. disconnect network).
> 3. X opens the wave on both clients, reads some blips in one client, reads 
> other blips in the other client.
> 4. X goes back online on both clients.
> <b>What is the expected output? What do you see instead?</b>
> Expected output (ideally) is that the reading actions merge concurrently.  
> e.g. any blip read on either client becomes read on both clients.  Each 
> client should display this resolution live, without either client needing to 
> re-open or refresh.  Additionally, re-open or refresh should be a no-op after 
> this resolution: all read-state should be the same.
> Instead, theoretically, both clients will have no change on reconnection, but 
> when re-opening that wave, the reading actions from only one of the two 
> clients will be preserved.
> The bug is simple: the embedding of WaveletReadState objects in the m/read 
> documetn does not resolve multiple &lt;wavelet&gt; elements with the same id.
> A fix for this must preserve the cleanup-on-write property.  i.e., active 
> resolution of the XML, by merging the data in the XML as soon as duplicates 
> are observed, is not acceptable.  This makes a fix not completely trivial.
> Since the data types embedded inside each per-wavelet read-state object 
> element are monotonic and superimposable, one solution is for 
> WaveletBasedSupplement to collect all WaveletReadState objects that exist for 
> the same id, and wrap them in a composite WaveletReadState object, that 
> distributes all queries over each component read state object.  On any write 
> subsequent action, for any wavelet with multiple &lt;wavelet&gt; elements, a 
> new &lt;wavelet&gt; object can be added that contains the sum information of 
> all the others, and then all the original &lt;wavelet&gt; elements can be 
> deleted.
> Doing this completely correctly, with respect to composition, intermediate 
> transitive states, left-to-right broadcast of document events, and a sensible 
> resolution of multiple WaveletReadState objects, may or may not be difficult.
> ---
> Issue imported from 
> http://code.google.com/p/wave-protocol/issues/detail?id=174
> Label: Type-Defect
> Label: Priority-Medium
> Stars: 1
> State: open
> Status: New



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to