@@ -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 () {
0 commit comments