Skip to content

Commit a636257

Browse files
committed
add shutdown after fatal, fix tests
Signed-off-by: Konvalinka <lea.konvalinka@dynatrace.com>
1 parent e50aa7f commit a636257

File tree

5 files changed

+8
-5
lines changed

5 files changed

+8
-5
lines changed

providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/FlagdOptions.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ public class FlagdOptions {
125125
fallBackToEnvOrDefault(Config.STREAM_RETRY_GRACE_PERIOD, Config.DEFAULT_STREAM_RETRY_GRACE_PERIOD);
126126

127127
/**
128-
* List of grpc response status codes for which failed connections are not retried.
128+
* List of grpc response status codes for which the provider transitions into fatal state upon first connection.
129129
* Defaults to empty list
130130
*/
131131
@Builder.Default

providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/FlagdProvider.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@ private void onProviderEvent(FlagdProviderEvent flagdProviderEvent) {
240240

241241
private void onError() {
242242
this.emitProviderError(ProviderEventDetails.builder().errorCode(ErrorCode.PROVIDER_FATAL).build());
243+
this.shutdown();
243244
}
244245

245246
private void onConfigurationChanged(FlagdProviderEvent flagdProviderEvent) {

providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/process/storage/connector/sync/SyncStreamQueueSource.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ private void observeSyncStream() {
141141
if (fatalStatusCodes.contains(metaEx.getStatus().getCode().name()) && !successfulSync.get()) {
142142
log.debug("Fatal status code for metadata request: {}, not retrying", metaEx.getStatus().getCode());
143143
enqueueFatal(String.format("Fatal: Failed to connect for metadata request, not retrying for error %s", metaEx.getStatus().getCode()));
144+
return;
144145
} else {
145146
// retry for other status codes
146147
String message = metaEx.getMessage();
@@ -158,6 +159,7 @@ private void observeSyncStream() {
158159
if (fatalStatusCodes.contains(ex.getStatus().getCode().toString()) && !successfulSync.get()) {
159160
log.debug("Fatal status code during sync stream: {}, not retrying", ex.getStatus().getCode());
160161
enqueueFatal(String.format("Fatal: Failed to connect for metadata request, not retrying for error %s", ex.getStatus().getCode()));
162+
return;
161163
} else {
162164
// retry for other status codes
163165
log.error("Unexpected sync stream exception, will restart.", ex);

providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/resolver/process/storage/FlagStoreTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,14 @@ void connectorHandling() throws Exception {
6464
});
6565

6666
assertTimeoutPreemptively(Duration.ofMillis(maxDelay), () -> {
67-
assertEquals(StorageState.ERROR, states.take().getStorageState());
67+
assertEquals(StorageState.STALE, states.take().getStorageState());
6868
});
6969

7070
// Shutdown handling
7171
store.shutdown();
7272

7373
assertTimeoutPreemptively(Duration.ofMillis(maxDelay), () -> {
74-
assertEquals(StorageState.ERROR, states.take().getStorageState());
74+
assertEquals(StorageState.STALE, states.take().getStorageState());
7575
});
7676
}
7777

providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/resolver/rpc/RpcResolverTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ void onCompletedRerunsStreamWithError() throws Exception {
111111

112112
// should run consumer with error
113113
await().untilAsserted(() ->
114-
verify(consumer).accept(argThat((arg) -> arg.getEvent() == ProviderEvent.PROVIDER_ERROR)));
114+
verify(consumer).accept(argThat((arg) -> arg.getEvent() == ProviderEvent.PROVIDER_STALE)));
115115
// should have restarted the stream (2 calls)
116116
await().untilAsserted(() -> verify(stub, times(2)).eventStream(any(), any()));
117117
}
@@ -128,7 +128,7 @@ void onErrorRunsConsumerWithError() throws Exception {
128128

129129
// should run consumer with error
130130
await().untilAsserted(() ->
131-
verify(consumer).accept(argThat((arg) -> arg.getEvent() == ProviderEvent.PROVIDER_ERROR)));
131+
verify(consumer).accept(argThat((arg) -> arg.getEvent() == ProviderEvent.PROVIDER_STALE)));
132132
// should have restarted the stream (2 calls)
133133
await().untilAsserted(() -> verify(stub, times(2)).eventStream(any(), any()));
134134
}

0 commit comments

Comments
 (0)