@@ -509,6 +509,15 @@ impl<'a, H: Host> AccountResolver<'a, H> {
509
509
return Err ( err. message . to_string ( ) ) ;
510
510
} else {
511
511
missing_materialization_items. extend ( err. missing_materializations ) ;
512
+ if request. fail_fast_on_sticky {
513
+ return Ok ( ResolveFlagResponseResult {
514
+ resolve_result : Some ( ResolveResult :: MissingMaterializations (
515
+ MissingMaterializations {
516
+ items : missing_materialization_items,
517
+ } ,
518
+ ) ) ,
519
+ } ) ;
520
+ }
512
521
}
513
522
}
514
523
}
@@ -612,6 +621,7 @@ impl<'a, H: Host> AccountResolver<'a, H> {
612
621
client_secret : request. client_secret . clone ( ) ,
613
622
apply : request. apply . clone ( ) ,
614
623
materialization_context : None ,
624
+ fail_fast_on_sticky : false ,
615
625
process_sticky : false ,
616
626
} ) ;
617
627
@@ -838,7 +848,11 @@ impl<'a, H: Host> AccountResolver<'a, H> {
838
848
}
839
849
} )
840
850
{
841
- let variant = self . state . flags [ flag. name . as_str ( ) ]
851
+ let variant = self
852
+ . state
853
+ . flags
854
+ . get ( flag. name . as_str ( ) )
855
+ . unwrap ( )
842
856
. variants
843
857
. iter ( )
844
858
. find ( |v| v. name == * variant_name)
@@ -1509,6 +1523,7 @@ mod tests {
1509
1523
let resolve_flag_req = flags_resolver:: ResolveFlagsRequest {
1510
1524
evaluation_context : Some ( Struct :: default ( ) ) ,
1511
1525
client_secret : SECRET . to_string ( ) ,
1526
+ fail_fast_on_sticky : false ,
1512
1527
process_sticky : false ,
1513
1528
materialization_context : None ,
1514
1529
flags : vec ! [ "flags/tutorial-feature" . to_string( ) ] ,
@@ -1577,7 +1592,9 @@ mod tests {
1577
1592
evaluation_context : Some ( Struct :: default ( ) ) ,
1578
1593
client_secret : SECRET . to_string ( ) ,
1579
1594
flags : vec ! [ "flags/fallthrough-test-1" . to_string( ) ] ,
1595
+ fail_fast_on_sticky : false ,
1580
1596
process_sticky : false ,
1597
+
1581
1598
materialization_context : None ,
1582
1599
apply : false ,
1583
1600
sdk : Some ( Sdk {
@@ -1635,7 +1652,9 @@ mod tests {
1635
1652
evaluation_context : Some ( Struct :: default ( ) ) ,
1636
1653
client_secret : SECRET . to_string ( ) ,
1637
1654
flags : vec ! [ "flags/fallthrough-test-2" . to_string( ) ] ,
1655
+ fail_fast_on_sticky : false ,
1638
1656
process_sticky : false ,
1657
+
1639
1658
materialization_context : None ,
1640
1659
apply : false ,
1641
1660
sdk : Some ( Sdk {
@@ -1707,7 +1726,9 @@ mod tests {
1707
1726
evaluation_context : Some ( Struct :: default ( ) ) ,
1708
1727
client_secret : SECRET . to_string ( ) ,
1709
1728
flags : vec ! [ "flags/tutorial-feature" . to_string( ) ] ,
1729
+ fail_fast_on_sticky : false ,
1710
1730
process_sticky : false ,
1731
+
1711
1732
materialization_context : None ,
1712
1733
apply : false ,
1713
1734
sdk : Some ( Sdk {
@@ -1803,7 +1824,9 @@ mod tests {
1803
1824
evaluation_context : Some ( Struct :: default ( ) ) ,
1804
1825
client_secret : SECRET . to_string ( ) ,
1805
1826
flags : vec ! [ "flags/tutorial-feature" . to_string( ) ] ,
1827
+ fail_fast_on_sticky : false ,
1806
1828
process_sticky : false ,
1829
+
1807
1830
materialization_context : None ,
1808
1831
apply : true ,
1809
1832
sdk : Some ( Sdk {
@@ -1838,7 +1861,9 @@ mod tests {
1838
1861
evaluation_context : Some ( Struct :: default ( ) ) ,
1839
1862
client_secret : SECRET . to_string ( ) ,
1840
1863
flags : vec ! [ "flags/tutorial-feature" . to_string( ) ] ,
1864
+ fail_fast_on_sticky : false ,
1841
1865
process_sticky : false ,
1866
+
1842
1867
materialization_context : None ,
1843
1868
apply : true ,
1844
1869
sdk : Some ( Sdk {
0 commit comments