У меня есть некоторый код с вероятным состоянием гонки.
Я подозреваю, что проблема заключается здесь:
if self.es.indices.exists_alias(self.__class__.index_alias):
old_index_name = (list(self.es.indices.get(self.__class__.index_alias).keys())[0])
self.es.indices.delete_alias(index=old_index_name, name=self.__class__.index_alias)
self.es.indices.put_alias(index=self.destination_index, name=self.index_alias)
Похоже, что там есть условие гонки, если есть другие части кода, пытающиеся обновить этот индекс через его псевдоним в тот же момент.
Есть ли способ объединить удаление и воссоздание (и, возможно, тест) в одну операцию ES?
Я немного погуглил, но ничего интересного не нашел.
Я также попытался просто положить put_alias без delete_alias и получил несколько ошибок из приложения. Я вернусь к этому, хотя, если люди думают, что это должно помочь.
Кстати, проблемный индекс (почти?) Всегда желтый, когда я проверяю список индексов с помощью curl.
Спасибо!