Hi Noa, I understand the desire for batching. However, once you do that, you either need request forwarding or broker metadata propagation. It's worth exploring, but I suspect you will end up with most of the changes needed by the original proposal, in that case.
Ismael On Mon, Nov 18, 2019 at 7:07 AM Noa Resare <n...@resare.com> wrote: > Hi Jason & Gwen, > > Sure, this would solve our use case. I do have two questions, however: > > Moving from start time to uptime in theory would neatly side step the > clock skew problem, > but in practice I’m not sure it helps that much as the straightforward way > of going about > implementing this by returning (now - startTime) would break when the > clock on the broker > is adjusted. So, I think that startTime is more straight forward and > doesn’t hide the fact that > the system clock is sometimes off. > > Another thing I think would be useful is to build support for requesting > multiple (or all?) > brokers in a single request at the start. Having the request hold a set of > brokerIds > and return a set of brokers in the response, adding a brokerId field to > identify which > broker a specific broker status response is associated with seems straight > forward. > > I’ll start writing a proposal so that we have something concrete to > discuss. > > /noa > > > On 13 Nov 2019, at 16:43, Jason Gustafson <ja...@confluent.io> wrote: > > > > Ni Noa, > > > > Thanks for the KIP. I agree with the concerns about Metadata bloat. In > > fact, I have wanted a BrokerStatus API for a while now. Perhaps this is a > > good excuse to introduce it. I was thinking something like this: > > > > BrokerStatusRequest => BrokerId > > > > BrokerStatusResponse => > > Listeners => [ListenerName Host Port] > > RackId > > BrokerEpoch > > BrokerState => {ACTIVE, RECOVERING, SHUTTING_DOWN} > > UpTime > > > > What do you think? > > > > Thanks, > > Jason > > > > On Tue, Nov 5, 2019 at 12:25 PM Noa Resare <n...@resare.com> wrote: > > > >> I agree with that. And looking at the MetadataResponse fields it seems > >> there has been some feature creep already here. Does the client use rack > >> information, for example? > >> > >> I guess one could do this either by introducing a new leaner message > pair, > >> used specifically enable client operation, and use > >> MetadataRequest/MetadataResponse for describeCluster() or one could > shrink > >> MetadataRequest/MetadataResponse and introduce a new more fully featured > >> message pair for the other stuff. I would be happy to spend some time > >> looking into implementing this if there is an interest. > >> > >> /noa > >> > >>> On 5 Nov 2019, at 15:43, Gwen Shapira <g...@confluent.io> wrote: > >>> > >>> It isn't just about saving space. It increases complexity to default to > >>> always sharing a bit of information that is really only needed in a > >> single > >>> use-case. > >>> We avoid doing this as a matter of good protocol design. > >>> Arguably, this should not really piggyback on cluster metadata at all, > >>> since the usage is so different. > >>> > >>> On Tue, Nov 5, 2019, 7:29 AM Noa Resare <n...@resare.com> wrote: > >>> > >>>> It would certainly be possible to have the field be optional and only > >>>> include it if some flag is set in the DescribeClusterOptions instance > >>>> passed to Admin.describeCluster() that in turn would translate to a > >> boolean > >>>> in MetadataRequest indicating that we are asking for this piece of > >>>> information. > >>>> > >>>> I’m not entirely sure that this extra complexity would be worth it for > >> the > >>>> modestly smaller response size, in a message that already contains > >> things > >>>> like the hostname and rack identifier per broker. > >>>> > >>>> /noa > >>>> > >>>>> On 4 Nov 2019, at 14:45, Gwen Shapira <g...@confluent.io> wrote: > >>>>> > >>>>> Cluster metadata is sent to clients on a very regular basis. Adding > >>>>> start-time there seems quite repetitive. Especially considering that > >>>>> this information is only useful in very specific cases. > >>>>> > >>>>> Can we add this capability to the Admin API in a way that won't > impact > >>>>> normal client workflow? > >>>>> > >>>>> On Mon, Nov 4, 2019 at 4:05 AM Noa Resare <n...@resare.com> wrote: > >>>>>> > >>>>>> Thank you for the feedback, Stanislav! > >>>>>> > >>>>>> I agree that it would be good to harmonise the naming, and > >>>> start-time-ms definitely more descriptive. > >>>>>> > >>>>>> I have updated the proposal to reflect this, and also added the > >> updated > >>>> json RPC changes. Please have a look. > >>>>>> > >>>>>> /noa > >>>>>> > >>>>>>> On 1 Nov 2019, at 09:13, Stanislav Kozlovski < > stanis...@confluent.io > >>> > >>>> wrote: > >>>>>>> > >>>>>>> Hey Noa, > >>>>>>> > >>>>>>> KIP-436 added a JMX metric in Kafka for this exact use-case, called > >>>>>>> `start-time-ms`. Perhaps it would be useful to name this public > >>>> interface > >>>>>>> in the same way for consistency. > >>>>>>> > >>>>>>> Could you update the KIP to include the specific RPC changes > >> regarding > >>>> the > >>>>>>> metadata request/responses? Here is a recent example of how to > >> portray > >>>> the > >>>>>>> changes - > >>>>>>> > >>>> > >> > https://cwiki.apache.org/confluence/display/KAFKA/KIP-525+-+Return+topic+metadata+and+configs+in+CreateTopics+response > >>>>>>> > >>>>>>> Thanks, > >>>>>>> Stanislav! > >>>>>>> > >>>>>>> On Mon, Oct 14, 2019 at 2:46 PM Noa Resare <n...@resare.com> wrote: > >>>>>>> > >>>>>>>> We are in the process of migrating the pieces of automation that > >>>> currently > >>>>>>>> reads and modifies zookeeper state to use the Admin API. > >>>>>>>> > >>>>>>>> One of the things that we miss doing this is access to the start > >> time > >>>> of > >>>>>>>> brokers in a cluster which is used by our automation doing rolling > >>>>>>>> restarts. We currently read this from the timestamp field from the > >>>>>>>> epehmeral broker znodes in zookeeper. To address this limitation, > I > >>>> have > >>>>>>>> authored KIP-536, that proposes adding a timestamp field to the > Node > >>>> class > >>>>>>>> that the AdminClient.describeCluster() method returns. > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>> > >> > https://cwiki.apache.org/confluence/display/KAFKA/KIP-536%3A+Propagate+broker+timestamp+to+Admin+API > >>>>>>>> < > >>>>>>>> > >>>> > >> > https://cwiki.apache.org/confluence/display/KAFKA/KIP-536:+Propagate+broker+timestamp+to+Admin+API > >>>>>>>>> > >>>>>>>> > >>>>>>>> Any and all feedback is most welcome > >>>>>>>> > >>>>>>>> cheers > >>>>>>>> noa > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> -- > >>>>>>> Best, > >>>>>>> Stanislav > >>>>>> > >>>> > >>>> > >> > >> > >