@juzi/wechaty-puppet-service 1.0.124 → 1.0.125

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,206 @@
1
+ #!/usr/bin/env -S node --no-warnings --loader ts-node/esm
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || function (mod) {
20
+ if (mod && mod.__esModule) return mod;
21
+ var result = {};
22
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
+ __setModuleDefault(result, mod);
24
+ return result;
25
+ };
26
+ var __importDefault = (this && this.__importDefault) || function (mod) {
27
+ return (mod && mod.__esModule) ? mod : { "default": mod };
28
+ };
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ /**
31
+ * Regression tests for the FlashStore write-back generation guard.
32
+ *
33
+ * `_payloadStore` (FlashStore, on disk) is a cache layer independent of
34
+ * the puppet-side LRU. Before this fix it had no protection against the
35
+ * "dirty lands during a raw fetch" race:
36
+ *
37
+ * 1. A raw fetch (e.g. `contactRawPayload`) starts a gRPC round-trip.
38
+ * 2. An EVENT_TYPE_DIRTY arrives; `fastDirty` deletes the FlashStore row.
39
+ * 3. The in-flight fetch resolves and writes the *pre-dirty* payload
40
+ * back into the FlashStore -- re-poisoning the row that was just
41
+ * cleared. The value then only refreshes after a *second* dirty.
42
+ *
43
+ * The fix snapshots a per-(type, id) generation counter before the raw
44
+ * fetch and re-checks it with `isFreshWrite` before every FlashStore
45
+ * write-back; the EVENT_TYPE_DIRTY handler bumps that counter before it
46
+ * even awaits `fastDirty`, so the whole delete window is covered.
47
+ */
48
+ const tstest_1 = require("tstest");
49
+ const os_1 = __importDefault(require("os"));
50
+ const path_1 = __importDefault(require("path"));
51
+ const fs_1 = __importDefault(require("fs"));
52
+ const PUPPET = __importStar(require("@juzi/wechaty-puppet"));
53
+ const wechaty_grpc_1 = require("@juzi/wechaty-grpc");
54
+ const mod_js_1 = require("../src/mod.js");
55
+ const makePuppet = async () => {
56
+ const token = `puppet_service_test_${Date.now()}_${Math.floor(Math.random() * 1e6)}`;
57
+ const puppet = new mod_js_1.PuppetService({ token });
58
+ const accountId = 'acct-test';
59
+ await puppet._payloadStore.start(accountId);
60
+ return { puppet, token };
61
+ };
62
+ const cleanup = async (puppet, token) => {
63
+ await puppet._payloadStore.stop();
64
+ try {
65
+ await fs_1.default.promises.rm(path_1.default.join(os_1.default.homedir(), '.wechaty', 'wechaty-puppet-service', token), { recursive: true, force: true });
66
+ }
67
+ catch (_) { /* ignore */ }
68
+ };
69
+ /**
70
+ * A one-shot gate for a fake gRPC method. The method resolves `entered`
71
+ * as soon as it is invoked (by which point the caller's gen snapshot has
72
+ * already been taken, since the snapshot precedes the fetch call), then
73
+ * holds its callback until `release()` is called. This lets the test slot
74
+ * a dirty deterministically between the fetch start (gen snapshot) and
75
+ * the fetch resolution (write-back) -- no timers, no flakiness.
76
+ */
77
+ const makeGate = () => {
78
+ let release = () => { };
79
+ let markEntered = () => { };
80
+ const gate = new Promise(resolve => { release = resolve; });
81
+ const entered = new Promise(resolve => { markEntered = resolve; });
82
+ return { gate, entered, enter: () => markEntered(), release: () => release() };
83
+ };
84
+ (0, tstest_1.test)('contactRawPayload: a dirty mid-fetch skips the stale FlashStore write-back', async (t) => {
85
+ const { puppet, token } = await makePuppet();
86
+ const contactId = 'contact-race';
87
+ const response = new wechaty_grpc_1.puppet.ContactPayloadResponse();
88
+ response.setId(contactId);
89
+ response.setName('stale-name-from-inflight-fetch');
90
+ const { gate, entered, enter, release } = makeGate();
91
+ puppet._grpcManager = {
92
+ client: {
93
+ contactPayload: (_req, cb) => {
94
+ enter();
95
+ void (async () => {
96
+ await gate;
97
+ cb(null, response);
98
+ })();
99
+ },
100
+ },
101
+ };
102
+ // Start the fetch: it snapshots the gen, then blocks on the gate.
103
+ const fetchPromise = puppet.contactRawPayload(contactId);
104
+ // Deterministic: once the fake method is entered, the snapshot is taken.
105
+ await entered;
106
+ // A dirty arrives while the fetch is in flight: bump gen + clear store,
107
+ // exactly as the EVENT_TYPE_DIRTY handler does.
108
+ puppet.cache.bumpGen(PUPPET.types.Dirty.Contact, contactId);
109
+ await puppet.fastDirty({ payloadType: PUPPET.types.Dirty.Contact, payloadId: contactId });
110
+ // Now let the stale fetch resolve into the write-back path.
111
+ release();
112
+ const returned = await fetchPromise;
113
+ t.equal(returned.id, contactId, 'raw fetch still returns its payload to the caller');
114
+ const stored = await puppet._payloadStore.contact.get(contactId);
115
+ t.notOk(stored, 'stale in-flight fetch must NOT re-poison the FlashStore after the dirty');
116
+ await cleanup(puppet, token);
117
+ });
118
+ (0, tstest_1.test)('contactRawPayload: no dirty means the write-back proceeds as usual', async (t) => {
119
+ const { puppet, token } = await makePuppet();
120
+ const contactId = 'contact-happy';
121
+ const response = new wechaty_grpc_1.puppet.ContactPayloadResponse();
122
+ response.setId(contactId);
123
+ response.setName('fresh-name');
124
+ puppet._grpcManager = {
125
+ client: {
126
+ contactPayload: (_req, cb) => cb(null, response),
127
+ },
128
+ };
129
+ const returned = await puppet.contactRawPayload(contactId);
130
+ t.equal(returned.id, contactId, 'raw fetch returns its payload');
131
+ const stored = await puppet._payloadStore.contact.get(contactId);
132
+ t.ok(stored, 'without a racing dirty the payload is written to the FlashStore');
133
+ t.equal(stored && stored.id, contactId, 'stored payload matches the fetched id');
134
+ await cleanup(puppet, token);
135
+ });
136
+ (0, tstest_1.test)('EVENT_TYPE_DIRTY bumps gen before awaiting fastDirty so pre-event snapshots are stale', async (t) => {
137
+ const { puppet, token } = await makePuppet();
138
+ const contactId = 'contact-bump';
139
+ // A getter that snapshotted just before the event arrived.
140
+ const snapshot = puppet.cache.snapshotGen(PUPPET.types.Dirty.Contact, contactId);
141
+ const dirtyJson = JSON.stringify({
142
+ payloadType: PUPPET.types.Dirty.Contact,
143
+ payloadId: contactId,
144
+ });
145
+ await puppet.onGrpcStreamEvent({
146
+ getType: () => wechaty_grpc_1.puppet.EventType.EVENT_TYPE_DIRTY,
147
+ getPayload: () => dirtyJson,
148
+ getSeq: () => 0,
149
+ });
150
+ t.notOk(puppet.cache.isFreshWrite(PUPPET.types.Dirty.Contact, contactId, snapshot), 'a snapshot taken before the dirty event must be judged stale afterwards');
151
+ await cleanup(puppet, token);
152
+ });
153
+ (0, tstest_1.test)('EVENT_TYPE_DIRTY compound RoomMember bumps both the compound and the room-level gen', async (t) => {
154
+ const { puppet, token } = await makePuppet();
155
+ const roomId = 'room-bump';
156
+ const memberId = 'member-bump';
157
+ const compoundId = `${roomId}${PUPPET.STRING_SPLITTER}${memberId}`;
158
+ const compoundSnap = puppet.cache.snapshotGen(PUPPET.types.Dirty.RoomMember, compoundId);
159
+ const roomSnap = puppet.cache.snapshotGen(PUPPET.types.Dirty.RoomMember, roomId);
160
+ const dirtyJson = JSON.stringify({
161
+ payloadType: PUPPET.types.Dirty.RoomMember,
162
+ payloadId: compoundId,
163
+ });
164
+ await puppet.onGrpcStreamEvent({
165
+ getType: () => wechaty_grpc_1.puppet.EventType.EVENT_TYPE_DIRTY,
166
+ getPayload: () => dirtyJson,
167
+ getSeq: () => 0,
168
+ });
169
+ t.notOk(puppet.cache.isFreshWrite(PUPPET.types.Dirty.RoomMember, compoundId, compoundSnap), 'the compound (roomId+SEP+memberId) key must be bumped');
170
+ t.notOk(puppet.cache.isFreshWrite(PUPPET.types.Dirty.RoomMember, roomId, roomSnap), 'the bare room-level key must also be bumped so row-level write-backs are guarded');
171
+ await cleanup(puppet, token);
172
+ });
173
+ (0, tstest_1.test)('roomMemberRawPayload: a room-level dirty mid-fetch skips the row write-back', async (t) => {
174
+ const { puppet, token } = await makePuppet();
175
+ const roomId = 'room-member-race';
176
+ const contactId = 'member-race';
177
+ const response = new wechaty_grpc_1.puppet.RoomMemberPayloadResponse();
178
+ response.setId(contactId);
179
+ response.setName('stale-member-from-inflight-fetch');
180
+ const { gate, entered, enter, release } = makeGate();
181
+ puppet._grpcManager = {
182
+ client: {
183
+ roomMemberPayload: (_req, cb) => {
184
+ enter();
185
+ void (async () => {
186
+ await gate;
187
+ cb(null, response);
188
+ })();
189
+ },
190
+ },
191
+ };
192
+ // Start the fetch: it snapshots the room-level gen before reading the
193
+ // row, then blocks on the gate.
194
+ const fetchPromise = puppet.roomMemberRawPayload(roomId, contactId);
195
+ await entered;
196
+ // A bare-roomId dirty lands mid-fetch: the whole member set is stale.
197
+ puppet.cache.bumpGen(PUPPET.types.Dirty.RoomMember, roomId);
198
+ await puppet.fastDirty({ payloadType: PUPPET.types.Dirty.RoomMember, payloadId: roomId });
199
+ release();
200
+ const returned = await fetchPromise;
201
+ t.equal(returned.id, contactId, 'raw fetch still returns its member payload to the caller');
202
+ const stored = await puppet._payloadStore.roomMember.get(roomId);
203
+ t.notOk(stored, 'stale in-flight member fetch must NOT re-create the row after the dirty');
204
+ await cleanup(puppet, token);
205
+ });
206
+ //# sourceMappingURL=dirty-gen-guard.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dirty-gen-guard.spec.js","sourceRoot":"","sources":["../../../tests/dirty-gen-guard.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"puppet-service.d.ts","sourceRoot":"","sources":["../../../../src/client/puppet-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"puppet-service.d.ts","sourceRoot":"","sources":["../../../../src/client/puppet-service.ts"],"names":[],"mappings":"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"}
@@ -266,6 +266,34 @@ class PuppetService extends PUPPET.Puppet {
266
266
  break;
267
267
  case grpcPuppet.EventType.EVENT_TYPE_DIRTY: {
268
268
  const dirtyPayload = JSON.parse(payload);
269
+ /**
270
+ * Bump the generation counter *before* awaiting fastDirty so the
271
+ * whole fastDirty window is covered: any raw fetch that started
272
+ * before this dirty and resolves while fastDirty is deleting the
273
+ * FlashStore row must be judged stale by `isFreshWrite` and skip
274
+ * its write-back -- otherwise it re-poisons the row we just
275
+ * cleared and the value only refreshes after a *second* dirty.
276
+ *
277
+ * Upstream cache-mixin.onDirty bumps the same (type, id) again
278
+ * after `emit('dirty')` below; double-bumping is harmless because
279
+ * the counter only moves forward and `isFreshWrite` compares by
280
+ * equality.
281
+ */
282
+ this.cache.bumpGen(dirtyPayload.payloadType, dirtyPayload.payloadId);
283
+ /**
284
+ * A compound RoomMember dirty (`${roomId}${SEP}${memberId}`) must
285
+ * also bump the bare roomId key: roomMember write-backs are
286
+ * row-level read-modify-writes keyed by roomId, so a single-member
287
+ * dirty has to move that key too or an in-flight roomMember fetch
288
+ * could still write the whole row back stale.
289
+ */
290
+ if (dirtyPayload.payloadType === PUPPET.types.Dirty.RoomMember
291
+ && dirtyPayload.payloadId.includes(PUPPET.STRING_SPLITTER)) {
292
+ const [roomId] = dirtyPayload.payloadId.split(PUPPET.STRING_SPLITTER);
293
+ if (roomId) {
294
+ this.cache.bumpGen(PUPPET.types.Dirty.RoomMember, roomId);
295
+ }
296
+ }
269
297
  await this.fastDirty(dirtyPayload);
270
298
  this.emit('dirty', dirtyPayload);
271
299
  break;
@@ -635,6 +663,9 @@ class PuppetService extends PUPPET.Puppet {
635
663
  this.log.silly('PuppetService', 'contactRawPayload(%s) cache HIT', id);
636
664
  return cachedPayload;
637
665
  }
666
+ // Snapshot the gen before the raw fetch so a dirty that lands while
667
+ // the gRPC round-trip is in flight makes the write-back below stale.
668
+ const gen = this.cache.snapshotGen(PUPPET.types.Dirty.Contact, id);
638
669
  const request = new grpcPuppet.ContactPayloadRequest();
639
670
  request.setId(id);
640
671
  const response = await util.promisify(this.grpcManager.client.contactPayload
@@ -672,8 +703,13 @@ class PuppetService extends PUPPET.Puppet {
672
703
  realName: response.getRealName(),
673
704
  aka: response.getAka(),
674
705
  };
675
- await this._payloadStore.contact?.set(id, payload);
676
- this.log.silly('PuppetService', 'contactRawPayload(%s) cache SET', id);
706
+ if (this.cache.isFreshWrite(PUPPET.types.Dirty.Contact, id, gen)) {
707
+ await this._payloadStore.contact?.set(id, payload);
708
+ this.log.silly('PuppetService', 'contactRawPayload(%s) cache SET', id);
709
+ }
710
+ else {
711
+ this.log.silly('PuppetService', 'contactRawPayload(%s) cache SET skipped: dirty landed during raw fetch', id);
712
+ }
677
713
  return payload;
678
714
  }
679
715
  async contactRawPayloadParser(payload) {
@@ -697,6 +733,13 @@ class PuppetService extends PUPPET.Puppet {
697
733
  }
698
734
  if (needGetSet.size > 0) {
699
735
  try {
736
+ // Snapshot each id's gen before the batch fetch; write-backs below
737
+ // are validated per id so a dirty on one contact mid-flight only
738
+ // skips that contact's stale write, not the whole batch.
739
+ const genSnap = new Map();
740
+ for (const contactId of needGetSet) {
741
+ genSnap.set(contactId, this.cache.snapshotGen(PUPPET.types.Dirty.Contact, contactId));
742
+ }
700
743
  const request = new grpcPuppet.BatchContactPayloadRequest();
701
744
  request.setIdsList(Array.from(needGetSet));
702
745
  const response = await util.promisify(this.grpcManager.client.batchContactPayload
@@ -706,7 +749,12 @@ class PuppetService extends PUPPET.Puppet {
706
749
  const contactId = payload.getId();
707
750
  const puppetPayload = contactPbToPayload(payload);
708
751
  result.set(contactId, puppetPayload);
709
- await this._payloadStore.contact?.set(contactId, puppetPayload);
752
+ if (this.cache.isFreshWrite(PUPPET.types.Dirty.Contact, contactId, genSnap.get(contactId) ?? 0)) {
753
+ await this._payloadStore.contact?.set(contactId, puppetPayload);
754
+ }
755
+ else {
756
+ this.log.silly('PuppetService', 'batchContactRawPayload(%s) cache SET skipped: dirty landed during raw fetch', contactId);
757
+ }
710
758
  }
711
759
  }
712
760
  catch (e) {
@@ -1627,6 +1675,9 @@ class PuppetService extends PUPPET.Puppet {
1627
1675
  this.log.silly('PuppetService', 'roomRawPayload(%s) cache HIT', id);
1628
1676
  return cachedPayload;
1629
1677
  }
1678
+ // Snapshot the gen before the raw fetch so a dirty that lands while
1679
+ // the gRPC round-trip is in flight makes the write-back below stale.
1680
+ const gen = this.cache.snapshotGen(PUPPET.types.Dirty.Room, id);
1630
1681
  const request = new grpcPuppet.RoomPayloadRequest();
1631
1682
  request.setId(id);
1632
1683
  const response = await util.promisify(this.grpcManager.client.roomPayload
@@ -1647,8 +1698,13 @@ class PuppetService extends PUPPET.Puppet {
1647
1698
  if (createTime) {
1648
1699
  payload.createTime = millisecondsFromTimestamp(createTime);
1649
1700
  }
1650
- await this._payloadStore.room?.set(id, payload);
1651
- this.log.silly('PuppetService', 'roomRawPayload(%s) cache SET', id);
1701
+ if (this.cache.isFreshWrite(PUPPET.types.Dirty.Room, id, gen)) {
1702
+ await this._payloadStore.room?.set(id, payload);
1703
+ this.log.silly('PuppetService', 'roomRawPayload(%s) cache SET', id);
1704
+ }
1705
+ else {
1706
+ this.log.silly('PuppetService', 'roomRawPayload(%s) cache SET skipped: dirty landed during raw fetch', id);
1707
+ }
1652
1708
  return payload;
1653
1709
  }
1654
1710
  async roomRawPayloadParser(payload) {
@@ -1672,6 +1728,13 @@ class PuppetService extends PUPPET.Puppet {
1672
1728
  }
1673
1729
  if (needGetSet.size > 0) {
1674
1730
  try {
1731
+ // Snapshot each id's gen before the batch fetch; write-backs below
1732
+ // are validated per id so a dirty on one room mid-flight only skips
1733
+ // that room's stale write, not the whole batch.
1734
+ const genSnap = new Map();
1735
+ for (const roomId of needGetSet) {
1736
+ genSnap.set(roomId, this.cache.snapshotGen(PUPPET.types.Dirty.Room, roomId));
1737
+ }
1675
1738
  const request = new grpcPuppet.BatchRoomPayloadRequest();
1676
1739
  request.setIdsList(Array.from(needGetSet));
1677
1740
  const response = await util.promisify(this.grpcManager.client.batchRoomPayload
@@ -1696,7 +1759,12 @@ class PuppetService extends PUPPET.Puppet {
1696
1759
  puppetPayload.createTime = millisecondsFromTimestamp(createTime);
1697
1760
  }
1698
1761
  result.set(roomId, puppetPayload);
1699
- await this._payloadStore.room?.set(roomId, puppetPayload);
1762
+ if (this.cache.isFreshWrite(PUPPET.types.Dirty.Room, roomId, genSnap.get(roomId) ?? 0)) {
1763
+ await this._payloadStore.room?.set(roomId, puppetPayload);
1764
+ }
1765
+ else {
1766
+ this.log.silly('PuppetService', 'batchRoomRawPayload(%s) cache SET skipped: dirty landed during raw fetch', roomId);
1767
+ }
1700
1768
  }
1701
1769
  }
1702
1770
  catch (e) {
@@ -1875,6 +1943,12 @@ class PuppetService extends PUPPET.Puppet {
1875
1943
  }
1876
1944
  async roomMemberRawPayload(roomId, contactId) {
1877
1945
  this.log.verbose('PuppetService', 'roomMemberRawPayload(%s, %s)', roomId, contactId);
1946
+ // Row-level read-modify-write: the write-back merges the fetched
1947
+ // member into the existing row, so snapshot the room-level gen before
1948
+ // even reading the row. A room-level dirty (bare roomId, or the
1949
+ // room-level bump a compound RoomMember dirty triggers) that lands
1950
+ // anywhere in this window then skips the merge write-back.
1951
+ const roomGen = this.cache.snapshotGen(PUPPET.types.Dirty.RoomMember, roomId);
1878
1952
  const cachedPayload = await this._payloadStore.roomMember?.get(roomId);
1879
1953
  const cachedRoomMemberPayload = cachedPayload && cachedPayload[contactId];
1880
1954
  if (cachedRoomMemberPayload) {
@@ -1896,11 +1970,16 @@ class PuppetService extends PUPPET.Puppet {
1896
1970
  joinScene: response.getJoinScene(),
1897
1971
  joinTime: response.getJoinTime(),
1898
1972
  };
1899
- await this._payloadStore.roomMember?.set(roomId, {
1900
- ...cachedPayload,
1901
- [contactId]: payload,
1902
- });
1903
- this.log.silly('PuppetService', 'roomMemberRawPayload(%s, %s) cache SET', roomId, contactId);
1973
+ if (this.cache.isFreshWrite(PUPPET.types.Dirty.RoomMember, roomId, roomGen)) {
1974
+ await this._payloadStore.roomMember?.set(roomId, {
1975
+ ...cachedPayload,
1976
+ [contactId]: payload,
1977
+ });
1978
+ this.log.silly('PuppetService', 'roomMemberRawPayload(%s, %s) cache SET', roomId, contactId);
1979
+ }
1980
+ else {
1981
+ this.log.silly('PuppetService', 'roomMemberRawPayload(%s, %s) cache SET skipped: dirty landed during raw fetch', roomId, contactId);
1982
+ }
1904
1983
  return payload;
1905
1984
  }
1906
1985
  async roomMemberRawPayloadParser(payload) {
@@ -1913,6 +1992,10 @@ class PuppetService extends PUPPET.Puppet {
1913
1992
  const result = new Map();
1914
1993
  const contactIdSet = new Set(contactIdList);
1915
1994
  let needGetSet = new Set();
1995
+ // Row-level read-modify-write keyed by roomId: snapshot the room-level
1996
+ // gen before reading the row so a dirty landing anywhere in the window
1997
+ // skips the merged write-back.
1998
+ const roomGen = this.cache.snapshotGen(PUPPET.types.Dirty.RoomMember, roomId);
1916
1999
  const cachedPayload = await this._payloadStore.roomMember?.get(roomId) || {};
1917
2000
  if (Object.keys(cachedPayload).length > 0) {
1918
2001
  for (const contactId of contactIdSet) {
@@ -1942,7 +2025,12 @@ class PuppetService extends PUPPET.Puppet {
1942
2025
  result.set(contactId, puppetPayload);
1943
2026
  cachedPayload[contactId] = puppetPayload;
1944
2027
  }
1945
- await this._payloadStore.roomMember?.set(roomId, cachedPayload);
2028
+ if (this.cache.isFreshWrite(PUPPET.types.Dirty.RoomMember, roomId, roomGen)) {
2029
+ await this._payloadStore.roomMember?.set(roomId, cachedPayload);
2030
+ }
2031
+ else {
2032
+ this.log.silly('PuppetService', 'batchRoomMemberRawPayload(%s) cache SET skipped: dirty landed during raw fetch', roomId);
2033
+ }
1946
2034
  }
1947
2035
  catch (e) {
1948
2036
  this.log.error('PuppetService', 'batchRoomMemberRawPayload(%s, %s) error: %s, use one by one method', roomId, needGetSet, e);
@@ -2357,6 +2445,9 @@ class PuppetService extends PUPPET.Puppet {
2357
2445
  this.log.silly('PuppetService', 'tagGroupPayload(%s) cache HIT', id);
2358
2446
  return cachedPayload;
2359
2447
  }
2448
+ // Snapshot the gen before the raw fetch so a dirty that lands while
2449
+ // the gRPC round-trip is in flight makes the write-back below stale.
2450
+ const gen = this.cache.snapshotGen(PUPPET.types.Dirty.TagGroup, id);
2360
2451
  const request = new grpcPuppet.TagGroupPayloadRequest();
2361
2452
  request.setGroupId(id);
2362
2453
  const response = await util.promisify(this.grpcManager.client.tagGroupPayload
@@ -2370,8 +2461,13 @@ class PuppetService extends PUPPET.Puppet {
2370
2461
  name: grpcPayload.getName(),
2371
2462
  type: grpcPayload.getType(),
2372
2463
  };
2373
- await this._payloadStore.tagGroup?.set(id, payload);
2374
- this.log.silly('PuppetService', 'tagGroupPayloadPuppet(%s) cache SET', id);
2464
+ if (this.cache.isFreshWrite(PUPPET.types.Dirty.TagGroup, id, gen)) {
2465
+ await this._payloadStore.tagGroup?.set(id, payload);
2466
+ this.log.silly('PuppetService', 'tagGroupPayloadPuppet(%s) cache SET', id);
2467
+ }
2468
+ else {
2469
+ this.log.silly('PuppetService', 'tagGroupPayloadPuppet(%s) cache SET skipped: dirty landed during raw fetch', id);
2470
+ }
2375
2471
  return payload;
2376
2472
  }
2377
2473
  async tagPayloadPuppet(tagId) {
@@ -2381,6 +2477,9 @@ class PuppetService extends PUPPET.Puppet {
2381
2477
  this.log.silly('PuppetService', 'tagPayloadPuppet(%s) cache HIT', tagId);
2382
2478
  return cachedPayload;
2383
2479
  }
2480
+ // Snapshot the gen before the raw fetch so a dirty that lands while
2481
+ // the gRPC round-trip is in flight makes the write-back below stale.
2482
+ const gen = this.cache.snapshotGen(PUPPET.types.Dirty.Tag, tagId);
2384
2483
  const request = new grpcPuppet.TagPayloadRequest();
2385
2484
  request.setTagId(tagId);
2386
2485
  const response = await util.promisify(this.grpcManager.client.tagPayload
@@ -2395,8 +2494,13 @@ class PuppetService extends PUPPET.Puppet {
2395
2494
  groupId: grpcPayload.getGroupId(),
2396
2495
  type: grpcPayload.getType(),
2397
2496
  };
2398
- await this._payloadStore.tag?.set(tagId, payload);
2399
- this.log.silly('PuppetService', 'tagPayloadPuppet(%s) cache SET', tagId);
2497
+ if (this.cache.isFreshWrite(PUPPET.types.Dirty.Tag, tagId, gen)) {
2498
+ await this._payloadStore.tag?.set(tagId, payload);
2499
+ this.log.silly('PuppetService', 'tagPayloadPuppet(%s) cache SET', tagId);
2500
+ }
2501
+ else {
2502
+ this.log.silly('PuppetService', 'tagPayloadPuppet(%s) cache SET skipped: dirty landed during raw fetch', tagId);
2503
+ }
2400
2504
  return payload;
2401
2505
  }
2402
2506
  /**