Skip to content

Commit 3c3940f

Browse files
committed
refactor: remove measurement-keys-by-date mapping (#762)
1 parent e4a047b commit 3c3940f

File tree

2 files changed

+2
-25
lines changed

2 files changed

+2
-25
lines changed

src/measurement/store.ts

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import type {
1515
} from './types.js';
1616
import { getDefaults } from './schema/utils.js';
1717
import { getMeasurementRedisClient, type RedisCluster } from '../lib/redis/measurement-client.js';
18-
import { getPersistentRedisClient, type RedisClient } from '../lib/redis/persistent-client.js';
1918
import { AuthenticateStateUser } from '../lib/http/middleware/authenticate.js';
2019
import { generateMeasurementId, parseMeasurementId } from './id.js';
2120
import { MeasurementStoreOffloader } from './store-offloader.js';
@@ -48,16 +47,11 @@ const subtractObjects = (obj1: Record<string, unknown>, obj2: Record<string, unk
4847
return result;
4948
};
5049

51-
// Adding a random suffix to minimize the chance of duplicate.
52-
const getDateScore = () => Date.now() * 1000 + Math.floor(Math.random() * 1000);
5350

5451
export class MeasurementStore {
5552
private offloader: MeasurementStoreOffloader;
5653

57-
constructor (
58-
private readonly redis: RedisCluster,
59-
private readonly persistentRedis: RedisClient,
60-
) {
54+
constructor (private readonly redis: RedisCluster) {
6155
this.offloader = new MeasurementStoreOffloader(measurementStoreClient, this);
6256
}
6357

@@ -161,7 +155,6 @@ export class MeasurementStore {
161155
const [ record ] = await Promise.all([
162156
this.redis.markFinished(id),
163157
this.redis.hDel('gp:in-progress', id),
164-
this.persistentRedis.zAdd('gp:measurement-keys-by-date', [{ score: getDateScore(), value: getMeasurementKey(id) }]),
165158
]);
166159

167160
if (record) {
@@ -197,7 +190,6 @@ export class MeasurementStore {
197190
this.redis.hDel('gp:in-progress', ids),
198191
deleteAwaitingKeys,
199192
updateMeasurements,
200-
this.persistentRedis.zAdd('gp:measurement-keys-by-date', ids.map(id => ({ score: getDateScore(), value: getMeasurementKey(id) }))),
201193
]);
202194

203195
for (const measurement of measurements) {
@@ -219,7 +211,6 @@ export class MeasurementStore {
219211
.map(({ field: id }) => id);
220212

221213
await this.markFinishedByTimeout(timedOutIds);
222-
await this.persistentRedis.zRemRangeByScore('gp:measurement-keys-by-date', '-inf', getDateScore() - config.get<number>('measurement.resultTTL') * 1000 * 1000);
223214
}
224215

225216
scheduleCleanup () {
@@ -305,7 +296,7 @@ let store: MeasurementStore;
305296

306297
export const getMeasurementStore = () => {
307298
if (!store) {
308-
store = new MeasurementStore(getMeasurementRedisClient(), getPersistentRedisClient());
299+
store = new MeasurementStore(getMeasurementRedisClient());
309300
store.scheduleCleanup();
310301
store.startOffloadWorker();
311302
}

test/tests/unit/measurement/store.test.ts

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import config from 'config';
21
import * as td from 'testdouble';
32
import { expect } from 'chai';
43
import * as sinon from 'sinon';
@@ -55,11 +54,6 @@ describe('measurement store', () => {
5554
markFinished: sandbox.stub(),
5655
};
5756

58-
const persistentRedisMock = {
59-
zAdd: sandbox.stub(),
60-
zRemRangeByScore: sandbox.stub(),
61-
};
62-
6357
const mockedMeasurementId1 = '2E2SZgEwA6W6HvzlT0001z9VK';
6458
const mockedMeasurementId2 = '2F2SZgEwA6W6HvzlT0001z9VK';
6559
const mockedMeasurementId3 = '2G2SZgEwA6W6HvzlT0001z9VK';
@@ -77,7 +71,6 @@ describe('measurement store', () => {
7771
}, {});
7872

7973
await td.replaceEsm('../../../../src/lib/redis/measurement-client.ts', { getMeasurementRedisClient: () => redisMock });
80-
await td.replaceEsm('../../../../src/lib/redis/persistent-client.ts', { getPersistentRedisClient: () => persistentRedisMock });
8174

8275
class OffloaderMock {
8376
startRetryWorker () { /* no-op */ }
@@ -146,8 +139,6 @@ describe('measurement store', () => {
146139
expect(redisMock.json.get.secondCall.args).to.deep.equal([ `gp:m:{${mockedMeasurementId2}}:results` ]);
147140
expect(redisMock.hDel.callCount).to.equal(1);
148141
expect(redisMock.hDel.firstCall.args).to.deep.equal([ 'gp:in-progress', [ mockedMeasurementId1, mockedMeasurementId2 ] ]);
149-
expect(persistentRedisMock.zRemRangeByScore.callCount).to.equal(1);
150-
expect(persistentRedisMock.zRemRangeByScore.firstCall.args[2]).to.be.within((now - config.get<number>('measurement.resultTTL') * 1000) * 1000, Date.now() * 1000);
151142
expect(redisMock.del.callCount).to.equal(2);
152143
expect(redisMock.del.firstCall.args).to.deep.equal([ `gp:m:{${mockedMeasurementId1}}:probes_awaiting` ]);
153144
expect(redisMock.del.secondCall.args).to.deep.equal([ `gp:m:{${mockedMeasurementId2}}:probes_awaiting` ]);
@@ -638,7 +629,6 @@ describe('measurement store', () => {
638629
});
639630

640631
it('should mark measurement as finished if storeMeasurementResult returned record', async () => {
641-
const now = clock.pause().now;
642632
redisMock.recordResult.resolves({});
643633

644634
const store = getMeasurementStore();
@@ -663,10 +653,6 @@ describe('measurement store', () => {
663653
expect(redisMock.markFinished.args[0]).to.deep.equal([ mockedMeasurementId1 ]);
664654
expect(redisMock.hDel.callCount).to.equal(1);
665655
expect(redisMock.hDel.args[0]).to.deep.equal([ 'gp:in-progress', mockedMeasurementId1 ]);
666-
expect(persistentRedisMock.zAdd.callCount).to.equal(1);
667-
expect(persistentRedisMock.zAdd.args[0]?.[0]).to.equal('gp:measurement-keys-by-date');
668-
expect(persistentRedisMock.zAdd.args[0]?.[1][0].value).to.equal(`gp:m:{${mockedMeasurementId1}}:results`);
669-
expect(persistentRedisMock.zAdd.args[0]?.[1][0].score).to.be.within(now, Date.now() * 1000 + 800);
670656
});
671657

672658
it('should not mark measurement as finished if storeMeasurementResult didn\'t return record', async () => {

0 commit comments

Comments
 (0)