@@ -1113,7 +1113,9 @@ mod tests {
11131113 let result1 = handle1. await . unwrap ( ) ;
11141114 let result2 = handle2. await . unwrap ( ) ;
11151115
1116- // One should succeed with MustCreate, the other should fail
1116+ // If both tasks observe a missing route before either insert commits, MustCreate
1117+ // should let exactly one win. If the scheduler serializes them, the second call
1118+ // may legitimately observe the new route and take the update path.
11171119 let successes = [ & result1, & result2] . iter ( ) . filter ( |r| r. is_ok ( ) ) . count ( ) ;
11181120 let failures = [ & result1, & result2]
11191121 . iter ( )
@@ -1127,22 +1129,40 @@ mod tests {
11271129 } )
11281130 . count ( ) ;
11291131
1130- assert_eq ! (
1131- successes, 1 ,
1132- "exactly one create should succeed, got: {result1:?}, {result2:?}"
1133- ) ;
1134- assert_eq ! (
1135- failures, 1 ,
1136- "exactly one create should fail, got: {result1:?}, {result2:?}"
1132+ assert ! (
1133+ successes == 1 || successes == 2 ,
1134+ "one racing create should succeed, or both serialized upserts should succeed, got: {result1:?}, {result2:?}"
11371135 ) ;
1136+ if successes == 1 {
1137+ assert_eq ! (
1138+ failures, 1 ,
1139+ "the losing racing create should fail, got: {result1:?}, {result2:?}"
1140+ ) ;
1141+ } else {
1142+ assert_eq ! (
1143+ failures, 0 ,
1144+ "serialized upserts should not fail, got: {result1:?}, {result2:?}"
1145+ ) ;
1146+ let mut versions = [ & result1, & result2]
1147+ . into_iter ( )
1148+ . map ( |result| result. as_ref ( ) . expect ( "success" ) . route . version )
1149+ . collect :: < Vec < _ > > ( ) ;
1150+ versions. sort_unstable ( ) ;
1151+ assert_eq ! (
1152+ versions,
1153+ vec![ 1 , 2 ] ,
1154+ "serialized create-then-update should return versions 1 and 2"
1155+ ) ;
1156+ }
11381157
1139- // Only one route should exist
1158+ // Only one route should exist.
11401159 let route = store
11411160 . get_message_by_name :: < InferenceRoute > ( CLUSTER_INFERENCE_ROUTE_NAME )
11421161 . await
11431162 . expect ( "fetch" )
11441163 . expect ( "route should exist" ) ;
1145- assert_eq ! ( route. version, 1 ) ;
1164+ let expected_version = if successes == 1 { 1 } else { 2 } ;
1165+ assert_eq ! ( route. version, expected_version) ;
11461166 }
11471167
11481168 #[ tokio:: test]
0 commit comments