Hey Jose,

Thanks for the updates. I noticed that `LeaderRecoveryState` is marked as
ignorable in the `AlterPartition` request. It would be helpful to
understand the motivation for that.

Thanks,
Jason

On Wed, Jan 26, 2022 at 10:25 AM Colin McCabe <cmcc...@apache.org> wrote:

> On Wed, Jan 26, 2022, at 09:14, José Armando García Sancio wrote:
> > Thanks for the feedback Colin.
> >
> > Colin wrote:
> >> We already have many classes that are called "partition state." For
> example, PartitionStates.java on the client side,
> PartitionStateMachine.scala and TopicPartitionStateZNode in the old
> controller, RemotePartitionDeleteState.java under storage, and so forth. I
> don't object to adding another one, but let's make it very clear that it's
> LeaderRecoveryState not just a generic "partition state", to avoid
> confusion. Actually maybe we should call it LeaderRecoveryStateChange,
> since we'll need to have a "no change" entry in the enum.
> >
> > Sounds good. I am going to call it LeaderRecoveryState.
> >
> > Colin wrote:
> >> I would argue that we should not add unused fields to RPCs and metadata
> records because we might want them in the future, or because it seems more
> "symmetrical," etc. We have a great mechanism for adding new stuff in the
> future: add a new field and specify the default as whatever the old
> behavior was.
> >>
> >> So I would argue that we should not add this state to AlterIsr, either
> the request or the response. We already know that sending AlterIsr clears
> the recovery state, and if it succeeded then the state was cleared. If this
> changes in the future, we can add a new field that default to whatever we
> want.
> >>
> >> Adding an RPC field that will only ever have one value is bad form. And
> 99% of the time, when you do finally decide to have more than one possible
> value, you'll find that what you originally wrote isn't adequate and you
> need to change the RPC, or the code, anyway. At least, that's my experience.
> >
> > We discussed this offline. We agree that it is better to be explicit
> > with regards to changes to the leader recovery state and not make the
> > changes implicit. The controller is going to have checks that make
> > sure that the transitions are valid. For example, the controller will
> > not allow the topic partition leader to:
> > 1. Change the ISR to a size greater than 1 if the leader is still
> recovering.
> > 2. Change the leader recovery state from "recovered" to "recovering".
> >
> > We also agree that we will add the field in the response just to be
> > consistent with the existing pattern. We should create another KIP to
> > remove these fields as they are not strictly necessary.
> >
>
> +1. Thanks, José!
>
> cheers,
> Colin
>

Reply via email to