seastar
seastar copied to clipboard
inheriting_concrete_execution_stage doesn't support scheduling group renaming
This bug is present since the introduction of 4a082fc5590bebc07b2772ed5875f9d46edad054 there is a bug in the code which
has two impacts and is related to the inheriting_concrete_execution_stage
class.
- Renaming a scheduling group doesn't update the execution_stage stats labels and the stage's label is still named after the old scheduling group's name.
- It excepts for some calls after some rename/create sequences to scheduling group.
An example scenario (verified with a unit test):
- Create an
inheriting_concrete_execution_stage
nameA
- Create a scheduling group
sg1
with nameX
- Call the
inheriting_concrete_execution_stage
undersg1
- Rename
sg1
toY
- at that stage the stats are still labeledA_X
(and notA_Y
) - Create a scheduling group
sg2
with nameX
(same as the initial name ofsg1
) - Call the
inheriting_concrete_execution_stage
undersg2
- theexecution_stage_manage::register_execution_stage
function will throwstd::invalid_argument("Execution stage A_X already exists.")
An apparent quick fix would be to append the index of the scheduling group for the execution stage name, but it will only fix the exception and not the fact that the stats are wrong.
@Jadw1 can you expose this via a sequence of CREATE SERVICE LEVEL/DROP SERVICE LEVEL statements? If yes, please could you write a sequence of steps to reproduce? 8 CREATE/DROP statements should be enough. If not, we must close this.