Skip to content

Commit

Permalink
Poc/strip client headers on 304 (#5574)
Browse files Browse the repository at this point in the history
To reduce traffic returned on 304.
  • Loading branch information
ivarconr committed Dec 19, 2023
1 parent 79b5234 commit d8821aa
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 2 deletions.
1 change: 1 addition & 0 deletions src/lib/__snapshots__/create-config.test.ts.snap
Expand Up @@ -102,6 +102,7 @@ exports[`should create default config 1`] = `
"responseTimeWithAppNameKillSwitch": false,
"scheduledConfigurationChanges": false,
"strictSchemaValidation": false,
"stripClientHeadersOn304": false,
},
"externalResolver": {
"getVariant": [Function],
Expand Down
Expand Up @@ -248,6 +248,11 @@ export default class FeatureController extends Controller {

if (etag === userVersion) {
res.status(304);
if (this.flagResolver.isEnabled('stripClientHeadersOn304')) {
res.getHeaderNames().forEach((header) =>
res.removeHeader(header),
);
}
res.end();
return;
} else {
Expand Down
10 changes: 9 additions & 1 deletion src/lib/routes/client-api/metrics.ts
@@ -1,6 +1,6 @@
import { Response } from 'express';
import Controller from '../controller';
import { IUnleashConfig, IUnleashServices } from '../../types';
import { IFlagResolver, IUnleashConfig, IUnleashServices } from '../../types';
import ClientInstanceService from '../../services/client-metrics/instance-service';
import { Logger } from '../../logger';
import { IAuthRequest } from '../unleash-types';
Expand All @@ -24,6 +24,8 @@ export default class ClientMetricsController extends Controller {

metricsV2: ClientMetricsServiceV2;

flagResolver: IFlagResolver;

constructor(
{
clientInstanceService,
Expand All @@ -44,6 +46,7 @@ export default class ClientMetricsController extends Controller {
this.clientInstanceService = clientInstanceService;
this.openApiService = openApiService;
this.metricsV2 = clientMetricsServiceV2;
this.flagResolver = config.flagResolver;

this.route({
method: 'post',
Expand Down Expand Up @@ -90,6 +93,11 @@ export default class ClientMetricsController extends Controller {
);

await this.metricsV2.registerClientMetrics(data, clientIp);
if (this.flagResolver.isEnabled('stripClientHeadersOn304')) {
res.getHeaderNames().forEach((header) =>
res.removeHeader(header),
);
}
res.status(202).end();
} catch (e) {
res.status(400).end();
Expand Down
8 changes: 7 additions & 1 deletion src/lib/types/experimental.ts
Expand Up @@ -29,7 +29,8 @@ export type IFlagKey =
| 'featureSearchAPI'
| 'featureSearchFrontend'
| 'scheduledConfigurationChanges'
| 'detectSegmentUsageInChangeRequests';
| 'detectSegmentUsageInChangeRequests'
| 'stripClientHeadersOn304';

export type IFlags = Partial<{ [key in IFlagKey]: boolean | Variant }>;

Expand Down Expand Up @@ -130,6 +131,11 @@ const flags: IFlags = {
.UNLEASH_EXPERIMENTAL_DETECT_SEGMENT_USAGE_IN_CHANGE_REQUESTS,
false,
),
stripClientHeadersOn304: parseEnvVarBoolean(
process.env
.UNLEASH_EXPERIMENTAL_DETECT_SEGMENT_USAGE_IN_CHANGE_REQUESTS,
false,
),
};

export const defaultExperimentalOptions: IExperimentalOptions = {
Expand Down
1 change: 1 addition & 0 deletions src/server-dev.ts
Expand Up @@ -40,6 +40,7 @@ process.nextTick(async () => {
privateProjects: true,
featureSearchAPI: true,
featureSearchFrontend: false,
stripClientHeadersOn304: true,
},
},
authentication: {
Expand Down

0 comments on commit d8821aa

Please sign in to comment.