On April 28, 2026, a change was pushed to the Harness FME SDK API service modifying the response when there are no active Rule-based Segments to return on the SDK. The expected behavior was to return an empty list in this scenario, but a null value was served to SDKs instead, causing an error parsing the response.
SDK instances were unable to initialize. Even if flags could be parsed, rule-based segments were not. Rendering the SDK unable to mark itself as ready and enable proper evaluations.
| Time (UTC) | Event |
|---|---|
| April 28, 18:27 | Deployed the defective SDK api version to production |
| April 28, 18:35 | FME team detected the issue validating the production deployment |
| April 28, 18:40 | Root cause was identified |
| April 28, 18:50 | Fixed version validated e2e in lower, merged |
| April 28, 19:05 | Service deployed to production successfully |
| April 28, 19:08 | Fix validated in prod. |
When the new filter was added to filter non-active rule-based segments on initialization requests (rbSince=-1 on request params), the Collect function of Golang iterables was used which returns nil when there are empty results. Prior to this, we just exposed the query result, which was never nil.
This caused the unintended type change, leading to the issue on the SDKs related parser.
Fix deployed: The team fixed the code on the service to ensure that empty lists were properly serialized as a list with no items ([]) in the responses served to SDKs.
We confirmed the fix in staging and deployed to production as soon as possible.