Использовать add_partition(Partition, ifNotExists, needResults)
( javadoc ) ... который (если 2-й аргумент true
) создаст раздел, только если он еще не существует.
В качестве альтернативыпросто используйте add_partition(Partition)
, чтобы добавить раздел без теста , и перехватите AlreadyExistsException
, если это произойдет.
Любая схема, которая включает в себя проверку того, что действие возможно итогда выполнение этого действия имеет потенциальное состояние гонки.Между «тестом» и «делом» какой-то другой агент (поток, клиент и т. Д.) Может выполнить действие (то же самое или другое), которое приведет к неудаче вашей попытки.
ИтакВаш нынешний подход не только уродлив.У него также есть потенциальное состояние гонки, если разделы могут быть созданы несколькими агентами.