Flagr is a feature flagging, A/B testing and dynamic configuration microservice
Fixed bugs:
Closed issues:
getFlag
and findFlags
in python and go clients returns non-matching objects #294
Merged pull requests:
#282 Support HS512 JWT token format. Thanks to @tejash-jl
#277 Bump npm packages #281 Bump base alpine docker image #284 Bump go-swagger #288 Bump es-lint
#268 Add search in the front page of flagr UI. Thanks to @yosyad
#273 Fix undefined flag id in the UI when the flag is deleted. Thanks again to @yosyad #275 Fix float equality comparison problem. Previously, the epsilon is set as 1e-6 for relative difference, now, we check 1e-6 for absolute difference first, and then the relative difference.
#248 Upgrade to go 1.12 and migrated to go mod
#253 Support JSON format for logrus logging. Thanks to @croemmich
#257 Relax the key validation to accept ^[\w\d-]+$
. Thanks to @raviambati
#262 Fix health check endpoint to return Content-Type with application/json instead of just empty response.
#260 Bump webpack bundle analyzer
#234 Use FLAGR_WEB_PREFIX
for both main api and flagr UI
#243 Add notes support. Thanks to @crberube
#247 Add EvalOnlyMode
and extend DBDriver
with json_file
and json_http
. People can decouple DB from eval cache if people want to opt-in these options.
#242 Remove entity_type statsd tag due to its possible high cardinality
❗️#239 introduced a semi-breaking change to the evalResult model. Since fields are no longer required, the zero value (e.g. null
, 0
) fields are ignored in the final evalResult payload. Old versions of goflagr
, rbflagr
, and jsflagr
are compatible with this change.
{
"evalContext": {
"enableDebug": true,
"entityContext": {
"hello": "world"
},
"entityID": "a1234",
"entityType": "report",
"flagID": 1,
"flagKey": "kmmcd1nsd6ze56chh"
},
"evalDebugLog": {
"segmentDebugLogs": [
{
"msg": "argument: state not found",
"segmentID": 1
}
]
},
"flagID": 1,
"flagKey": "kmmcd1nsd6ze56chh",
"flagSnapshotID": 8,
"segmentID": 1,
"timestamp": "2019-03-20T00:11:40Z",
"variantAttachment": null,
"variantID": null,
"variantKey": null
}
becomes
{
"evalContext": {
"enableDebug": true,
"entityContext": {
"hello": "world"
},
"entityID": "a1234",
"entityType": "report",
"flagID": 1,
"flagKey": "kmmcd1nsd6ze56chh"
},
"evalDebugLog": {
"segmentDebugLogs": [
{
"msg": "argument: state not found",
"segmentID": 1
}
]
},
"flagID": 1,
"flagKey": "kmmcd1nsd6ze56chh",
"flagSnapshotID": 8,
"segmentID": 1,
"timestamp": "2019-03-20T00:11:40Z"
}
#233 Refactor data recorder with FLAGR_RECORDER_FRAME_OUTPUT_MODE
#235 Add global switch for evaluation debug field. FLAGR_EVAL_DEBUG_ENABLED
#226 Fix default locale in UI
/metrics
endpoint is up. Thanks to @jasongwartzstr IN array
when the array is super long.sub
GET /flags?preload=true
to get preloaded segments and variants