1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-10-18 20:09:08 +02:00

fix: Add condition for getting max revision id from store (#4549)

## About the changes
In our staging setup, we create ad-hoc environments and import Unleash
state from production. After unleash is deployed on such environment,
the import job kicks in and feeds Unleash instance with feature flags
from production.

Between Unleash being up and running and the import job running, some
applications start polling Unleash. They get an empty feature toggle
list with `meta.revisionId=0`. Then apps use this as part of `eTag`
header in subsequent requests. Even though after import Unleash server
finally has toggles to serve, it doesn't because it calculates _max
revision id_ based on toggle updates (not null `feature_name` column in
query) or `SEGMENT_UPDATED`.

This change adds an extra condition to query so feature toggles import
is considered something that should invalidate the cache.
This commit is contained in:
Kamil Zegier 2023-09-29 14:59:28 +02:00 committed by GitHub
parent a4e1d05d2a
commit 486c174004
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2,6 +2,8 @@ import {
IEvent,
IBaseEvent,
SEGMENT_UPDATED,
FEATURE_IMPORT,
FEATURES_IMPORTED,
IEventType,
} from '../types/events';
import { LogProvider, Logger } from '../logger';
@ -158,7 +160,11 @@ class EventStore implements IEventStore {
.where((builder) =>
builder
.whereNotNull('feature_name')
.orWhere('type', SEGMENT_UPDATED),
.orWhereIn('type', [
SEGMENT_UPDATED,
FEATURE_IMPORT,
FEATURES_IMPORTED,
]),
)
.andWhere('id', '>=', largerThan)
.first();