Skip to content

Commit 370918e

Browse files
authored
FFM-11656 Sort Group Serving Rules rules when saving to cache (#117)
* FFM-11656 Sort serving rules in cache code * FFM-11656 Sort serving rules in cache code * FFM-11656 1.8.2 bump
1 parent 31a6e23 commit 370918e

File tree

4 files changed

+13
-7
lines changed

4 files changed

+13
-7
lines changed

Diff for: package-lock.json

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@harnessio/ff-nodejs-server-sdk",
3-
"version": "1.8.1",
3+
"version": "1.8.2",
44
"description": "Feature flags SDK for NodeJS environments",
55
"main": "dist/cjs/index.js",
66
"module": "dist/esm/index.mjs",

Diff for: src/evaluator.ts

-2
Original file line numberDiff line numberDiff line change
@@ -154,8 +154,6 @@ export class Evaluator {
154154

155155
if (segment?.servingRules?.length) {
156156
// Use enhanced rules first if they're available
157-
segment.servingRules.sort((r1, r2) => r1.priority - r2.priority);
158-
159157
for (const servingRule of segment.servingRules) {
160158
if (await this.evaluateClauses_v2(servingRule.clauses, target)) {
161159
return true;

Diff for: src/repository.ts

+10-2
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ export class StorageRepository implements Repository {
5858
if (await this.isSegmentOutdated(identifier, segment)) {
5959
return;
6060
}
61+
62+
// Sort the serving rules before storing the segment
63+
this.sortSegmentServingRules(segment);
64+
6165
const segmentKey = this.formatSegmentKey(identifier);
6266
if (this.store) {
6367
await this.store.set(segmentKey, segment);
@@ -165,13 +169,17 @@ export class StorageRepository implements Repository {
165169
return oldSegment?.version && oldSegment.version >= segment?.version;
166170
}
167171

172+
private sortSegmentServingRules(segment: Segment): void {
173+
if (segment.servingRules && segment.servingRules.length > 1) {
174+
segment.servingRules.sort((r1, r2) => r1.priority - r2.priority);
175+
}
176+
}
177+
168178
private formatFlagKey(key: string): string {
169179
return `flags/${key}`;
170180
}
171181

172182
private formatSegmentKey(key: string): string {
173183
return `segments/${key}`;
174184
}
175-
176-
177185
}

0 commit comments

Comments
 (0)