Resync after an op is not acknowledged rather than throwing an error

This commit is contained in:
James Allen 2014-04-02 16:16:07 +01:00
parent 479b37a48c
commit 72dbefc5ad
3 changed files with 20 additions and 1 deletions

View file

@ -87,6 +87,11 @@ define [
wantToBeJoined: @wantToBeJoined
update: update
if Math.random() < (@ide.disconnectRate or 0)
console.log "Simulating disconnect"
@ide.connectionManager.disconnect()
return
if update?.doc == @doc_id and @doc?
@doc.processUpdateFromServer update
@ -163,6 +168,13 @@ define [
doc_id: @doc_id
op: op
@trigger "op:acknowledged"
@doc.on "op:timeout", (op) =>
@ide.pushEvent "op:timeout",
doc_id: @doc_id
op: op
@trigger "op:timeout"
ga?('send', 'event', 'error', "op timeout", "Op was now acknowledged - #{ide.socket.socket.transport.name}" )
@ide.connectionManager.reconnectImmediately()
@doc.on "flush", (inflightOp, pendingOp, version) =>
@ide.pushEvent "flush",
doc_id: @doc_id,

View file

@ -98,7 +98,7 @@ define [
v: update.v
op_sent_at: new Date()
timer = setTimeout () =>
@_handleError new Error("Doc op was not acknowledged in time"), meta
@trigger "op:timeout", update
, @INFLIGHT_OP_TIMEOUT
@_doc.inflightCallbacks.push () =>
clearTimeout timer

View file

@ -33,6 +33,13 @@ define [
e.preventDefault()
@tryReconnect()
@hideModal()
reconnectImmediately: () ->
@disconnect()
@tryReconnect()
disconnect: () ->
@socket.disconnect()
showModalAndStartAutoReconnect: () ->
@hideModal()