Skip to content

Commit 38a21d8

Browse files
committed
check is flushed after resolve so we flush remaining logs
1 parent 928b281 commit 38a21d8

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

openfeature-provider-local/src/main/java/com/spotify/confidence/SwapWasmResolverApi.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ public void updateStateAndFlushLogs(byte[] state, String accountId) {
4646
// Get current instance before switching
4747
final WasmResolveApi oldInstance = wasmResolverApiRef.getAndSet(newInstance);
4848

49-
// Flush logs from the old instance (this allows it to be GC'd after method completion)
5049
if (oldInstance != null) {
5150
oldInstance.flushLogs();
51+
oldInstance.isIsFlushed(true);
5252
}
5353
logResolveLock.unlock();
5454
}
@@ -75,7 +75,8 @@ public CompletableFuture<ResolveFlagsResponse> resolveWithSticky(
7575

7676
private CompletableFuture<ResolveFlagsResponse> resolveWithStickyInternal(
7777
ResolveWithStickyRequest request) {
78-
final var response = wasmResolverApiRef.get().resolveWithSticky(request);
78+
final var instance = wasmResolverApiRef.get();
79+
final var response = instance.resolveWithSticky(request);
7980

8081
switch (response.getResolveResultCase()) {
8182
case SUCCESS -> {
@@ -84,6 +85,9 @@ private CompletableFuture<ResolveFlagsResponse> resolveWithStickyInternal(
8485
if (!success.getUpdatesList().isEmpty()) {
8586
storeUpdates(success.getUpdatesList());
8687
}
88+
if (instance.isFlushed()) {
89+
CompletableFuture.runAsync(instance::flushLogs);
90+
}
8791
return CompletableFuture.completedFuture(success.getResponse());
8892
}
8993
case MISSING_MATERIALIZATIONS -> {
@@ -205,7 +209,11 @@ private ResolveWithStickyRequest handleMissingMaterializations(
205209
@Override
206210
public ResolveFlagsResponse resolve(ResolveFlagsRequest request) {
207211
logResolveLock.lock();
208-
final var response = wasmResolverApiRef.get().resolve(request);
212+
final var instance = wasmResolverApiRef.get();
213+
final var response = instance.resolve(request);
214+
if (instance.isFlushed()) {
215+
CompletableFuture.runAsync(instance::flushLogs);
216+
}
209217
logResolveLock.unlock();
210218
return response;
211219
}

openfeature-provider-local/src/main/java/com/spotify/confidence/WasmResolveApi.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ class WasmResolveApi {
5151

5252
// Retry strategy
5353
private final RetryStrategy retryStrategy;
54+
private boolean isFlushed;
5455

5556
public WasmResolveApi(WasmFlagLogger flagLogger, RetryStrategy retryStrategy) {
5657
this.retryStrategy = retryStrategy;
@@ -219,6 +220,14 @@ private <T extends GeneratedMessage> ImportFunction createImportFunction(
219220
});
220221
}
221222

223+
public void isIsFlushed(boolean b) {
224+
this.isFlushed = true;
225+
}
226+
227+
public boolean isFlushed() {
228+
return isFlushed;
229+
}
230+
222231
private interface ParserFn<T> {
223232

224233
T apply(byte[] data) throws InvalidProtocolBufferException;

0 commit comments

Comments
 (0)