Comments (11)
Hello @JonasBak, thank you for these repro steps. We were able to reproduce and found that edge does not send back etag when content is gzipped. We have a PR on the way that should fix the issue
from unleash-client-dotnet.
Hi @JonasBak , thanks for bringing this to our attention. I will try to reproduce, investigate and get back to you
from unleash-client-dotnet.
Thanks for looking into it, I tried comparing the data returned by edge and "not-edge", and these are the differences (diff edge.json not-edge.json
):
8,9d7
< "stale": false,
< "impressionData": false,
10a9
> "stale": false,
23c22,24
< "variants": []
---
> "variants": [],
> "description": null,
> "impressionData": false
26d26
< "segments": [],
28c28
< "projects": [
---
> "project": [
32c32,37
< "inlineSegmentConstraints": false
---
> "inlineSegmentConstraints": true
> },
> "meta": {
> "revisionId": 424,
> "etag": "\"181720d4:424\"",
> "queryHash": "181720d4"
There are some fields that are added/removed, as well as projects
vs project
.
from unleash-client-dotnet.
Hello @JonasBak, thank you for bringing this up.
I had a look at your repro steps and failed to reproduce this locally. I've also had a conversation with one of the edge devs.
I have:
- A feature flag defined with 3 environments, enabled for only one of them
- A client token for that environment
- Edge running against Unleash
- SDK set up with an example app running against Edge
From what I can tell edge works as it should. I also took a look at your update with the diff in the returned JSON, but there's nothing there that stands out. I think a good next step is to validate any constraints that may have been put on your strategy, appname for instance, against what is being defined in your apps.
Also:
I have also tried calling /api/client/features on the unleash-edge instance directly with the same token, and it returns the flag with "enabled": true.
The "enabled" property here does not reflect the result of feature flag evaluation, which happens inside the Unleash .NET Client SDK based on the defined parameters, constraints, strategies, and provided context from host application
from unleash-client-dotnet.
It seems like the issue might be with our setup, possibly related to our ingress/nginx/cloudflare setup. When I use the client to connect directly to an edge pod or service using kubectl port-forward
, it works as expected, but when going through the ingress the "normal route" it doesn't (but I see that the call to /api/client/features
returns 200). It's weird how both the go client and frontends still handle going through the ingress. I'll look more into it.
from unleash-client-dotnet.
Thank you @JonasBak, that's interesting. If you can, please keep us posted on your findings!
from unleash-client-dotnet.
I've been able to reproduce the issue locally using caddy and edge.
docker run --rm -d -p 3063:3063 -e "UPSTREAM_URL=https://eu.app.unleash-hosted.com/OUR_URL" -e RUST_LOG=DEBUG docker.io/unleashorg/unleash-edge:v13.0.0 edge
caddy reverse-proxy --from http://localhost:8080 --to http://localhost:3063
When using http://localhost:3063/api/
(edge directly) it works, but http://localhost:8080/api/
(through caddy) it doesn't. (both work with golang)
My best guess atm would be that it's somehow related to the headers UNLEASH-APPNAME
and UNLEASH-INSTANCEID
. It seems like the dotnet client uses the headers in all caps, but caddy and nginx rewrites them to Unleash-Appname
and Unleash-Instanceid
.
from unleash-client-dotnet.
Thanks @daveleek 🙌
I've not been able to test v13.1.0 as when i start the container it exits with the following message:
/unleash-edge: error while loading shared libraries: libssl.so.3: cannot open shared object file: No such file or directory
from unleash-client-dotnet.
Thank you @JonasBak - we're looking into it and will get back to you when we have a fix
from unleash-client-dotnet.
Hey @JonasBak, we had an issue in our build which produced a broken docker image. We've uploaded a new 13.1.0 image over the broken one, which should fix this. Apologies for the trouble here!
from unleash-client-dotnet.
Nice, I've checked that the new version works in our setup, so I'll close the issue 🎉
from unleash-client-dotnet.
Related Issues (20)
- Does the Context Need to be Cloned? HOT 4
- Reducation in target frameworks HOT 1
- Replacement of LibLog with Microsoft.Extensions.Logging.Abstractions HOT 1
- Record metrics using System.Diagnostics.Metrics HOT 2
- Split of nuget package HOT 2
- Negate operator not work in dot net sdk HOT 3
- api/client/metrics return 400 when using System.Text.Json for seriaization. HOT 5
- Feature toggles are fetched in a chron manner instead of when a feature flag is actually needed HOT 9
- Removal of Microsoft.CSharp package dependency HOT 4
- Update licence inclusion in Nuget HOT 2
- Platform specific test suite for .NET Framework to run in CI HOT 2
- Receiving Json Parsing error when receiving 304 status when ETag in response header is null. HOT 1
- We see a lot "The `appName` property is required. It was not present on the data you sent." HOT 2
- Unhandled exceptions in Unleash's background process HOT 2
- synchronousInitialization: true should throw exception if exception happens in the init flow (network, authorization, etc) HOT 3
- InvalidOperationException being thrown from Unleash.Scheduling.SystemTimerScheduledTaskManager.ConfigureTask HOT 2
- Empty userId breaks gradual rollout 100% expected behavior. HOT 3
- Built-in JSON serialization without reflection HOT 2
- Avoid subtle errors and improve DX when setting a custom serializer HOT 1
- Support for hostname strategy HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from unleash-client-dotnet.