fix(cache-redis-semantic): isolate on an incompatible index after a lost create race

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
Yujong Lee 2026-09-21 21:22:59 +00:00
parent 974d9f97ff
commit 6237dd51cb

View file

@ -70,14 +70,14 @@ impl Inner {
let name = match index_compatible(connection, &self.index_name, dims)? {
Some(true) => self.index_name.clone(),
Some(false) => self.isolated_index(connection, dims)?,
None => {
if create_index(connection, &self.index_name, dims).is_err()
&& index_compatible(connection, &self.index_name, dims)? != Some(true)
{
return Err(Error::Unavailable);
}
self.index_name.clone()
}
None => match create_index(connection, &self.index_name, dims) {
Ok(()) => self.index_name.clone(),
Err(_) => match index_compatible(connection, &self.index_name, dims)? {
Some(true) => self.index_name.clone(),
Some(false) => self.isolated_index(connection, dims)?,
None => return Err(Error::Unavailable),
},
},
};
let _ = self.resolved_index.set(name.clone());
Ok(name)