[ https://issues.apache.org/jira/browse/KAFKA-5258?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ismael Juma updated KAFKA-5258: ------------------------------- Resolution: Fixed Fix Version/s: 0.11.0.0 Status: Resolved (was: Patch Available) Issue resolved by pull request 3071 [https://github.com/apache/kafka/pull/3071] > move all partition and replica state transition rules into their states > ----------------------------------------------------------------------- > > Key: KAFKA-5258 > URL: https://issues.apache.org/jira/browse/KAFKA-5258 > Project: Kafka > Issue Type: Sub-task > Reporter: Onur Karaman > Assignee: Onur Karaman > Priority: Minor > Fix For: 0.11.0.0 > > > Today the PartitionStateMachine and ReplicaStateMachine defines and asserts > the valid state transitions inline for each state, looking something like: > {code} > private def handleStateChange(...) { > targetState match { > case stateA => { > assertValidPreviousStates(topicAndPartition, List(stateX, stateY, > stateZ), stateA) > // actual work > } > case stateB => { > assertValidPreviousStates(topicAndPartition, List(stateD, stateE), > stateB) > // actual work > } > } > } > {code} > It would be cleaner to move all partition and replica state transition rules > into their states and simply do the assertion at the top of the > handleStateChange method like so: > {code} > private def handleStateChange(...) { > assertValidTransition(targetState) > targetState match { > case stateA => { > // actual work > } > case stateB => { > // actual work > } > } > } > sealed trait State { > def state: Byte > def validPreviousStates: Set[State] > } > case object StateA extends State { > val state: Byte = 1 > val validPreviousStates: Set[State] = Set(StateX) > } > case object StateB extends State { > val state: Byte = 2 > val validPreviousStates: Set[State] = Set(StateX, StateY, StateZ) > } > {code} -- This message was sent by Atlassian JIRA (v6.3.15#6346)