@@ -1384,44 +1384,64 @@ public void getStateThenDelete() throws Exception {
1384
1384
String expectedValue1 = "Expected state 1" ;
1385
1385
String key2 = "key2" ;
1386
1386
String expectedValue2 = "Expected state 2" ;
1387
+
1387
1388
State <String > expectedState1 = buildStateKey (expectedValue1 , key1 , etag , new HashMap <>(), null );
1388
1389
State <String > expectedState2 = buildStateKey (expectedValue2 , key2 , etag , new HashMap <>(), null );
1390
+
1389
1391
Map <String , DaprProtos .GetStateResponse > futuresMap = new HashMap <>();
1390
1392
futuresMap .put (key1 , buildFutureGetStateEnvelop (expectedValue1 , etag ));
1391
- futuresMap .put (key2 , buildFutureGetStateEnvelop (expectedValue2 , etag ));
1393
+ futuresMap .put (key2 , buildFutureGetStateEnvelop (expectedValue2 , etag )); // Will be removed on delete
1392
1394
1395
+ // Mock getState for key1 (unchanged)
1393
1396
doAnswer ((Answer <Void >) invocation -> {
1394
- StreamObserver <DaprProtos .GetStateResponse > observer = (StreamObserver <DaprProtos .GetStateResponse >) invocation .getArguments ()[1 ];
1397
+ StreamObserver <DaprProtos .GetStateResponse > observer =
1398
+ (StreamObserver <DaprProtos .GetStateResponse >) invocation .getArguments ()[1 ];
1395
1399
observer .onNext (futuresMap .get (key1 ));
1396
1400
observer .onCompleted ();
1397
1401
return null ;
1398
1402
}).when (daprStub ).getState (argThat (new GetStateRequestKeyMatcher (key1 )), any ());
1403
+
1404
+ // Mock getState for key2 — updated after delete
1399
1405
doAnswer ((Answer <Void >) invocation -> {
1400
- StreamObserver <DaprProtos .GetStateResponse > observer = (StreamObserver <DaprProtos .GetStateResponse >) invocation .getArguments ()[1 ];
1401
- observer .onNext (futuresMap .get (key2 ));
1406
+ StreamObserver <DaprProtos .GetStateResponse > observer =
1407
+ (StreamObserver <DaprProtos .GetStateResponse >) invocation .getArguments ()[1 ];
1408
+ DaprProtos .GetStateResponse response = futuresMap .get (key2 );
1409
+ if (response != null ) {
1410
+ observer .onNext (response );
1411
+ }
1402
1412
observer .onCompleted ();
1403
1413
return null ;
1404
1414
}).when (daprStub ).getState (argThat (new GetStateRequestKeyMatcher (key2 )), any ());
1405
1415
1416
+ // getState for key1 and assert
1406
1417
State <String > keyRequest1 = buildStateKey (null , key1 , etag , null );
1407
1418
Mono <State <String >> resultGet1 = client .getState (STATE_STORE_NAME , keyRequest1 , String .class );
1408
1419
assertEquals (expectedState1 , resultGet1 .block ());
1420
+
1421
+ // Prepare getState for key2 (lazy)
1409
1422
State <String > keyRequest2 = buildStateKey (null , key2 , etag , null );
1410
1423
Mono <State <String >> resultGet2 = client .getState (STATE_STORE_NAME , keyRequest2 , String .class );
1411
- assertEquals (expectedState2 , resultGet2 .block ());
1412
1424
1425
+ // Mock deleteState for key2 (simulate deletion)
1413
1426
doAnswer ((Answer <Void >) invocation -> {
1427
+ futuresMap .remove (key2 );
1414
1428
StreamObserver <Empty > observer = (StreamObserver <Empty >) invocation .getArguments ()[1 ];
1415
1429
observer .onNext (Empty .getDefaultInstance ());
1416
1430
observer .onCompleted ();
1417
1431
return null ;
1418
- }).when (daprStub ).deleteState (any (io . dapr . v1 . DaprProtos .DeleteStateRequest .class ), any ());
1432
+ }).when (daprStub ).deleteState (any (DaprProtos .DeleteStateRequest .class ), any ());
1419
1433
1420
- Mono <Void > resultDelete = client .deleteState (STATE_STORE_NAME , keyRequest2 .getKey (), keyRequest2 .getEtag (),
1421
- keyRequest2 .getOptions ());
1434
+ // Perform delete
1435
+ Mono <Void > resultDelete = client .deleteState (
1436
+ STATE_STORE_NAME , keyRequest2 .getKey (), keyRequest2 .getEtag (), keyRequest2 .getOptions ());
1422
1437
resultDelete .block ();
1438
+
1439
+ // Now block the original getState call (should be null)
1440
+ State <String > stateAfterDelete = resultGet2 .block ();
1441
+ assertNull (stateAfterDelete .getValue ());
1423
1442
}
1424
1443
1444
+
1425
1445
@ Test
1426
1446
public void deleteStateNullEtag () {
1427
1447
String key = "key1" ;
0 commit comments