[FIX] web: fix dataset to avoid race conditions

The read_slice method in dataset is problematic, because it alters the
dataset ids.  So, if 2 consecutive read_slice are started, but the first
one ends after the second one, we don't have the correct ids in the
dataset.

This commit just make sure that previous read_slice do not alter the ids
of the next read_slice.
This commit is contained in:
Géry Debongnie
2016-04-20 17:20:25 +02:00
parent b893342007
commit ab8a93c852
+4 -2
View File
@@ -320,6 +320,7 @@ var DataSet = Class.extend(mixins.PropertiesMixin, {
this.index = null;
this._sort = [];
this._model = new Model(model, context);
this.orderer = new utils.DropMisordered();
},
previous: function () {
this.index -= 1;
@@ -408,10 +409,11 @@ var DataSet = Class.extend(mixins.PropertiesMixin, {
read_slice: function (fields, options) {
var self = this;
options = options || {};
return this._model.query(fields)
var query = this._model.query(fields)
.limit(options.limit || false)
.offset(options.offset || 0)
.all().done(function (records) {
.all();
return this.orderer.add(query).done(function (records) {
self.ids = _(records).pluck('id');
});
},