Hey everyone, We've seen some interesting developments over the last 2 years in the way that Solr state and distributed logic is handled. Notably we've seen the introduction of PerReplicaStates (PRS) and the Distributed State Updates (no overseer).
I think for the health of our code and future maintainability, we should really look to decide on what implementations we want to use for State management and Distributed operations. Basically do we want to adopt or abandon PRS/Distributed State Updates. Note that these are separate concepts, so the decision on each will be separate. I bring this up because I see PRS a lot through the code and it feels like the code is too separate from the original way of managing state. There is a lot of "if (prsEnabled)" logic throughout the core, and its very hard to understand how PRS actually works with this logic spread all over the place. If we want to move forward with PRS, then we hopefully would be able to consolidate the logic. I don't see the Distributed State Update logic nearly as much, but I imagine our code can only get cleaner with one implementation versus two. This is just my opinion, let me know what y'all think about making decisions or going forward with the status quo. - Houston