Skip to content

Commit 0d5df6b

Browse files
Don't update target metadata for updates
1 parent 5a28480 commit 0d5df6b

File tree

2 files changed

+43
-10
lines changed

2 files changed

+43
-10
lines changed

packages/firestore/src/local/indexeddb_query_cache.ts

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -114,15 +114,7 @@ export class IndexedDbQueryCache implements QueryCache {
114114
transaction: PersistenceTransaction,
115115
queryData: QueryData
116116
): PersistencePromise<void> {
117-
return this.saveQueryData(transaction, queryData).next(() => {
118-
return this.retrieveMetadata(transaction).next(metadata => {
119-
if (this.updateMetadataFromQueryData(queryData, metadata)) {
120-
return this.saveMetadata(transaction, metadata);
121-
} else {
122-
return PersistencePromise.resolve();
123-
}
124-
});
125-
});
117+
return this.saveQueryData(transaction, queryData);
126118
}
127119

128120
removeQueryData(

packages/firestore/test/unit/specs/perf_spec.test.ts

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
*/
1616

1717
import { Query } from '../../../src/core/query';
18-
import { doc, orderBy, path } from '../../util/helpers';
18+
import {doc, filter, orderBy, path} from '../../util/helpers';
1919

2020
import { describeSpec, specTest } from './describe_spec';
2121
import { spec } from './spec_builder';
@@ -242,5 +242,46 @@ describeSpec(
242242
return steps;
243243
}
244244
);
245+
246+
specTest('Process 25 target updates and wait for snapshot', [], () => {
247+
const queriesPerStep = 25;
248+
249+
let currentVersion = 1;
250+
let steps = spec().withGCEnabled(false);
251+
252+
for (let i = 1; i <= STEP_COUNT; ++i) {
253+
const collPath = `collection/${i}/coll`;
254+
const matchingDoc = doc(`${collPath}/${i}`, ++currentVersion, {
255+
val: -1
256+
});
257+
258+
const queries = [];
259+
260+
for (let j = 0; j < queriesPerStep; ++j) {
261+
const query = Query.atPath(path(collPath)).addFilter(
262+
filter('val', '<=', j)
263+
);
264+
queries.push(query);
265+
steps = steps.userListens(query).watchAcks(query);
266+
}
267+
268+
steps = steps
269+
.watchSends({affects: queries}, matchingDoc)
270+
.watchSnapshots(++currentVersion);
271+
272+
for (const query of queries) {
273+
steps = steps.expectEvents(query, {
274+
added: [matchingDoc],
275+
fromCache: true
276+
});
277+
}
278+
279+
for (const query of queries) {
280+
steps = steps.userUnlistens(query).watchRemoves(query);
281+
}
282+
}
283+
284+
return steps;
285+
});
245286
}
246287
);

0 commit comments

Comments
 (0)