found another bug that only happens in persistent databases (operationAdded changes an operation, so it needs to be retrieved again after calling it)
This commit is contained in:
parent
3b0d0343f4
commit
f9315288d0
@ -370,13 +370,12 @@ module.exports = function (Y /* :any */) {
|
||||
var opid = op.id
|
||||
var isGarbageCollected = yield* this.isGarbageCollected(opid)
|
||||
if (!isGarbageCollected) {
|
||||
// TODO: reduce number of get / put calls for op ..
|
||||
yield* Y.Struct[op.struct].execute.call(this, op)
|
||||
yield* this.addOperation(op)
|
||||
yield* this.store.operationAdded(this, op)
|
||||
if (!Y.utils.compareIds(opid, op.id)) {
|
||||
// operationAdded changed op
|
||||
op = yield* this.getOperation(opid)
|
||||
}
|
||||
// operationAdded can change op..
|
||||
op = yield* this.getOperation(opid)
|
||||
// if insertion, try to combine with left
|
||||
yield* this.tryCombineWithLeft(op)
|
||||
}
|
||||
@ -440,6 +439,7 @@ module.exports = function (Y /* :any */) {
|
||||
// Delete if DS says this is actually deleted
|
||||
var len = op.content != null ? op.content.length : 1
|
||||
var startId = op.id // You must not use op.id in the following loop, because op will change when deleted
|
||||
// TODO: !! console.log('TODO: change this before commiting')
|
||||
for (let i = 0; i < len; i++) {
|
||||
var id = [startId[0], startId[1] + i]
|
||||
var opIsDeleted = yield* transaction.isDeleted(id)
|
||||
|
Loading…
x
Reference in New Issue
Block a user