@@ -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 }
0 commit comments