When shelving a server and saving its new SHELVING task state, we
expect the current task state to be None and do not handle any
UnexpectedTaskStateError exceptions that the database layer may throw
at us. In those cases, we return an error 500 to the user, when in
actuality an error 409 conflict would be more appropriate. This
patch makes the API layer handle UnexpectedTaskStateError exceptions
and return a 409 to the user.
Closes-bug: 1850694
Change-Id: Ie0b421cd5d3a5781c1dd09fab4ed013ece0f939d
(cherry picked from commit a423d8b27785623550f401a200b68ca926c0a119)
Reviewed: https:/ /review. opendev. org/692628 /git.openstack. org/cgit/ openstack/ nova/commit/ ?id=32dbd2f585e f1902478170f3a1 153b1f71e81db3
Committed: https:/
Submitter: Zuul
Branch: stable/train
commit 32dbd2f585ef190 2478170f3a1153b 1f71e81db3
Author: Artom Lifshitz <email address hidden>
Date: Wed Oct 30 14:03:49 2019 -0400
Avoid error 500 on shelve task_state race
When shelving a server and saving its new SHELVING task state, we askStateError exceptions that the database layer may throw tateError exceptions
expect the current task state to be None and do not handle any
UnexpectedT
at us. In those cases, we return an error 500 to the user, when in
actuality an error 409 conflict would be more appropriate. This
patch makes the API layer handle UnexpectedTaskS
and return a 409 to the user.
Closes-bug: 1850694 81c1dd09fab4ed0 13ece0f939d 550f401a200b68c a926c0a119)
Change-Id: Ie0b421cd5d3a57
(cherry picked from commit a423d8b27785623