optimizely / javascript-sdk

JavaScript SDK for Optimizely Feature Experimentation and Optimizely Full Stack (legacy)
https://www.optimizely.com/products/experiment/feature-experimentation/
Apache License 2.0
76 stars 80 forks source link

sending SDK to createInstance() in Server-side context causes memory leaks #891

Open dbridenbeck opened 5 months ago

dbridenbeck commented 5 months ago

Is there an existing issue for this?

SDK Version

4.9.2

Current Behavior

When passing the SDK key into createInstance we saw memory leaks happening. In the react-sdk it's advised not to pass the SDK key in, and I think that the javascript-sdk documentation should be updated to provide a similar warning for the section in node.js.

Current documentation: https://github.com/optimizely/javascript-sdk?tab=readme-ov-file#use-the-javascript-sdk-node image

Expected Behavior

Expected documentation is to be a-la react-sdk: https://github.com/optimizely/react-sdk?tab=readme-ov-file#server-side-rendering

image

Steps To Reproduce

  1. In a server environment, pass SDK instead of datafile into createInstance(), deploy
  2. Use k6 or some other way to pass large traffic to the deployed environment
  3. Observe containers running out of memory and restarting

SDK Type

Browser

Node Version

16.10.0

Browsers impacted

n/a

Link

No response

Logs

No response

Severity

Minor issue

Workaround/Solution

Pass dataFile instead of SDK into createInstance()

Recent Change

Not certain.

Conflicts

Not likely, although we are on next 12.

raju-opti commented 5 months ago

@dbridenbeck , yes, for server side rendering, Javascript sdk should have similar restrictions as react sdk. We will look into this a bit further and update this issue accordingly.

mikechu-optimizely commented 2 months ago

We released version v5.3.0. Can you review this version in an SSR test environment?