Skip to content

Commit c535d37

Browse files
feat: support both palyoads when polling
1 parent d955e77 commit c535d37

2 files changed

Lines changed: 16 additions & 8 deletions

File tree

src/main/java/io/getunleash/repository/PollingFeatureFetcher.java

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,13 @@ private Runnable runInitialFetch(final Consumer<UnleashException> handler) {
8585
return () -> {
8686
try {
8787
ClientFeaturesResponse response = featureFetcher.fetchFeatures();
88-
eventEmitter.update(response);
8988
if (response.getStatus() == ClientFeaturesResponse.Status.CHANGED) {
90-
updateFeatures(response);
91-
} else if (response.getStatus() == ClientFeaturesResponse.Status.UNAVAILABLE) {
89+
String currentState = applyClientFeatures(response);
90+
eventEmitter.update(ClientFeaturesResponse.updated(currentState));
91+
} else {
92+
eventEmitter.update(response);
93+
}
94+
if (response.getStatus() == ClientFeaturesResponse.Status.UNAVAILABLE) {
9295
if (unleashConfig.isSynchronousFetchOnInitialisation()) {
9396
throw new UnleashException(
9497
String.format(
@@ -111,12 +114,15 @@ private Runnable runSteadyStateFetch(final Consumer<UnleashException> handler) {
111114
if (throttler.performAction()) {
112115
try {
113116
ClientFeaturesResponse response = featureFetcher.fetchFeatures();
114-
eventEmitter.update(response);
115117
if (response.getStatus() == ClientFeaturesResponse.Status.CHANGED) {
116-
updateFeatures(response);
118+
String currentState = applyClientFeatures(response);
119+
eventEmitter.update(ClientFeaturesResponse.updated(currentState));
117120
} else if (response.getStatus() == ClientFeaturesResponse.Status.UNAVAILABLE) {
121+
eventEmitter.update(response);
118122
throttler.handleHttpErrorCodes(response.getHttpStatusCode());
119123
return;
124+
} else {
125+
eventEmitter.update(response);
120126
}
121127
throttler.decrementFailureCountAndResetSkips();
122128
} catch (UnleashException e) {
@@ -130,12 +136,14 @@ private Runnable runSteadyStateFetch(final Consumer<UnleashException> handler) {
130136
};
131137
}
132138

133-
private void updateFeatures(ClientFeaturesResponse response)
139+
private String applyClientFeatures(ClientFeaturesResponse response)
134140
throws YggdrasilInvalidInputException {
135141
String clientFeatures = response.getClientFeatures().get();
136142
this.engine.takeState(clientFeatures);
137-
this.featureBackupHandler.write(clientFeatures);
143+
String currentState = this.engine.getState();
144+
this.featureBackupHandler.write(currentState);
138145
eventEmitter.ready();
146+
return currentState;
139147
}
140148

141149
public Integer getFailures() {

src/main/java/io/getunleash/repository/StreamingFeatureFetcherImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ synchronized void handleStreamingUpdate(String data) throws YggdrasilInvalidInpu
131131
String currentState = engine.getState();
132132
featureBackupHandler.write(currentState);
133133

134-
ClientFeaturesResponse response = ClientFeaturesResponse.updated(data);
134+
ClientFeaturesResponse response = ClientFeaturesResponse.updated(currentState);
135135
eventDispatcher.update(response);
136136

137137
if (!ready) {

0 commit comments

Comments
 (0)