Cool. Sounds good to me! On Thu, Jan 2, 2020 at 2:21 PM Brian Byrne <bby...@confluent.io> wrote:
> Hi Guozhang, > > Only evicting due to memory pressure (or if the metadata is stale, to > prevent infinitely refreshing no longer used topics when memory's not an > issue) makes sense, and would be the most intuitive way of going about it. > > From an implementation perspective, it's a little more difficult because > it'd require the producer's BufferPool to feed back into the Metadata > object, introduce a sane limit on the consumer side, and add the concept of > potentially evicting stale metadata instead of refreshing it. So it's a > little involved, and I'd prefer to save that for a round 2, if necessary. > > I've updated the KIP to change the default eviction time to 2 minutes. > > Thanks, > Brian > > > On Thu, Jan 2, 2020 at 1:28 PM Guozhang Wang <wangg...@gmail.com> wrote: > > > On Thu, Jan 2, 2020 at 12:42 PM Brian Byrne <bby...@confluent.io> wrote: > > > > > Hi Guozhang, > > > > > > You're correct in that, with the current defined default values, it's > > > likely we'll be more proactive in refreshing metadata for > > > once/rarely-touched topics, which isn't ideal. It'd be at most 2x the > > rate, > > > but we can certainly do better. I made the default eviction rate to > > mirror > > > the current hard-coded value in effort to minimize surprise, but > perhaps > > > there's a more suitable middle ground. > > > > > > Your mental model is good. I also agree that having a more aggressive > > > eviction rate, or at least one that's a fair amount shorter than the > > topic > > > refresh rate, behaves better for the once/rarely-touched topics and is > > more > > > appropriate overall. One thing to note though is that, if metadata is > > > evicted + refetched, there'll be a small latency bubble for the > producer. > > > > > > The concern I had with shortening the eviction rate dramatically was > that > > > it could have unexpected consequences for clusters that keep the > default, > > > but whose P1 is slightly longer than the value. For example, if the > > > metadata.evict.ms is 30 seconds, a periodic access rate of 40 seconds > > > could > > > request the topic metadata up to 7 times during a 5-minute interval. Of > > > course, this is easily fixed by setting the eviction rate appropriately > > by > > > the client, but perhaps lowering the default to a moderate ~2 minutes > > might > > > be a better balance to avoid surprise of worst-case behavior. > > > > > > Something else that could be considered is defining a "soft topic > > metadata > > > cache size", which would only evict unused topics (last used >= > > > metadata.evict.ms) if the soft cache size was exceeded or the metadata > > was > > > stale. However, it still doesn't save the client from degenerate > behavior > > > where P1 + e ~= metadata.evict.ms, so I'm more partial to keeping the > > > eviction rate to ~2+ minutes. > > > > > > This makes sense. > > > > I think since the scenario that a producer sends to a topic once and > never > > did again is not very common, and more commonly a single producer would > > only send to a very small subset of topics hosted on the cluster during > its > > life time, we can actually use a cache size to guide when should we > > consider eviction (my understanding is that the memory pressure is the > only > > reason we want to evict, lmk if there are other motivations). A wild > > thought is that we do not even need to introduce a new config since we > have > > a `buffer.size` already and we can calculate the exact bytes-size of each > > topic metadata entry as well, so we can, say, consider evicting only when > > that buffer size is reached together with buffered data AND metadata in > > bytes. Then in practice we would not need to evict metadata anyways, AND > if > > we do need to, having some aggressive eviction threshold is more valid > (btw > > I think I also agree that something like 2minutes is fine). > > > > > > > Yet another option is to have topics in the "U" set (i.e. topics > > requesting > > > non-urgent metadata update) exclude those that are nearing their > eviction > > > duration. I fear this might be over-engineering a potential non-problem > > > though. Thoughts? > > > > > > > Yeah I also feel it is a bit overkill for this. > > > > > > > > > > Thanks, > > > Brian > > > > > > > > > > > > On Thu, Jan 2, 2020 at 11:44 AM Guozhang Wang <wangg...@gmail.com> > > wrote: > > > > > > > Hello Brain, > > > > > > > > For the newly added `metadata.evict.ms` config, since its default > > value > > > is > > > > set as the same as `metadata.max.age.ms` and most users would not > > > override > > > > default config values, would it be possible for scenarios that > producer > > > > send to a specific topic once and never send again, we may end up > > > > refreshing the metadata that are about to be removed soon? In other > > words > > > > I'm wondering if for common cases the eviction period should be > larger > > > than > > > > max.age or vice versa. This is my mental model: > > > > > > > > 1) If we evict a topic eagerly compared with refreshing it, e.g. > after > > > time > > > > T1 has elapsed, and then after T2 (> T1) elapsed that topic is > > requested > > > > for sending again, we would force a metadata update which includes > this > > > > topic (remember we now always batch a set of topics in each metadata > > > > request) > > > > 2) if we evict a topic more lazily compared with refreshing it, say > > after > > > > T2 has elapsed, but before that after T1 (< T2) we have to refresh it > > > > already, it is included in that metadata request. > > > > > > > > So from the number of metadata requests it may incur, evicting more > > > eagerly > > > > seems okay --- i.e. even if we do not evict this topic, it would > still > > > > cause a metadata request after the max.age.ms anyways so evicting it > > > early > > > > does not make things worse. More generally, if we know a topic's > > sending > > > > frequency is P1 (i.e. every P1 seconds we send once for that topic), > > and > > > > eviction period is P2, and the metadata.max.age is P3. Then the > optimal > > > > scenario in terms of metadata update frequency seems to be P1 = P2 < > > P3. > > > So > > > > I feel making the default value for metadata.evict.ms smaller is > fine, > > > > e.g. > > > > say 1minute or 30seconds. WDYT? > > > > > > > > > > > > Guozhang > > > > > > > > On Thu, Dec 26, 2019 at 7:08 AM Brian Byrne <bby...@confluent.io> > > wrote: > > > > > > > > > Hi Stanislav, > > > > > > > > > > Appreciate the feedback! > > > > > > > > > > 1. You're correct. I've added notes to the KIP to clarify. > > > > > > > > > > 2. Yes it should. Fixed. > > > > > > > > > > 3. So I made a mistake when generalizing the target refresh size, > > which > > > > > should have been using `metadata.max.age.ms` instead of ` > > > > metadata.evict.ms > > > > > `. > > > > > Therefore, `metadata.max.age.ms` still controls the target refresh > > > time > > > > of > > > > > active topic metadata, and doesn't change in that regard. You're > > right > > > in > > > > > that the U set will make metadata refreshing more proactive in some > > > > cases, > > > > > which is done to smooth out the metadata RPCs over time and lessen > > the > > > > > potential bulk of some of the RPC responses by working in smaller > > > units. > > > > > The T set is what logically exists today and doesn't change. > > > > > > > > > > Thanks, > > > > > Brian > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Thu, Dec 26, 2019 at 2:16 AM Stanislav Kozlovski < > > > > > stanis...@confluent.io> > > > > > wrote: > > > > > > > > > > > Hey Brian, > > > > > > > > > > > > 1. Could we more explicitly clarify the behavior of the algorithm > > > when > > > > > `|T| > > > > > > > TARGET_METADATA_FETCH SIZE` ? I assume we ignore the config in > > that > > > > > > scenario > > > > > > 2. Should `targetMetadataFetchSize = Math.max(topicsPerSec / 10, > > 20)` > > > > be > > > > > > `topicsPerSec * 10` ? > > > > > > 3. When is this new algorithm applied? To confirm my > understanding > > - > > > > what > > > > > > is the behavior of `metadata.max.age.ms` after this KIP? Are we > > > > adding a > > > > > > new, more proactive metadata fetch for topics in |U|? > > > > > > > > > > > > Thanks, > > > > > > Stanislav > > > > > > > > > > > > On Thu, Dec 19, 2019 at 11:37 PM Brian Byrne < > bby...@confluent.io> > > > > > wrote: > > > > > > > > > > > > > Hello everyone, > > > > > > > > > > > > > > For all interested, please take a look at the proposed > algorithm > > as > > > > I'd > > > > > > > like to get more feedback. I'll call for a vote once the break > is > > > > over. > > > > > > > > > > > > > > Thanks, > > > > > > > Brian > > > > > > > > > > > > > > On Mon, Dec 9, 2019 at 10:18 PM Guozhang Wang < > > wangg...@gmail.com> > > > > > > wrote: > > > > > > > > > > > > > > > Sounds good, I agree that should not make a big difference in > > > > > practice. > > > > > > > > > > > > > > > > On Mon, Dec 9, 2019 at 2:07 PM Brian Byrne < > > bby...@confluent.io> > > > > > > wrote: > > > > > > > > > > > > > > > > > Hi Guozhang, > > > > > > > > > > > > > > > > > > I see, we agree on the topic threshold not applying to > urgent > > > > > topics, > > > > > > > but > > > > > > > > > differ slightly on what should be considered urgent. I > would > > > > argue > > > > > > that > > > > > > > > we > > > > > > > > > should consider topics nearing the metadata.max.age.ms to > be > > > > > urgent > > > > > > > > since > > > > > > > > > they may still be well within the metadata.expiry.ms. That > > is, > > > > the > > > > > > > > client > > > > > > > > > still considers these topics to be relevant (not expired), > > but > > > > > > doesn't > > > > > > > > want > > > > > > > > > to incur the latency bubble of having to wait for the > > metadata > > > to > > > > > be > > > > > > > > > re-fetched if it's stale. This could be a frequent case if > > the > > > > > > > > > metadata.max.age.ms << metadata.expiry.ms. > > > > > > > > > > > > > > > > > > In practice, I wouldn't expect this to make a noticeable > > > > difference > > > > > > so > > > > > > > I > > > > > > > > > don't have a strong leaning, but the current behavior today > > is > > > to > > > > > > > > > aggressively refresh the metadata of stale topics by > > ensuring a > > > > > > refresh > > > > > > > > is > > > > > > > > > triggered before that metadata.max.age.ms duration > elapses. > > > > > > > > > > > > > > > > > > Thanks, > > > > > > > > > Brian > > > > > > > > > > > > > > > > > > > > > > > > > > > On Mon, Dec 9, 2019 at 11:57 AM Guozhang Wang < > > > > wangg...@gmail.com> > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > Hello Brian, > > > > > > > > > > > > > > > > > > > > Thanks for your explanation, could you then update the > wiki > > > > page > > > > > > for > > > > > > > > the > > > > > > > > > > algorithm part since when I read it, I thought it was > > > different > > > > > > from > > > > > > > > the > > > > > > > > > > above, e.g. urgent topics should not be added just > because > > of > > > > > > max.age > > > > > > > > > > expiration, but should only be added if there are sending > > > data > > > > > > > pending. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Guozhang > > > > > > > > > > > > > > > > > > > > On Mon, Dec 9, 2019 at 10:57 AM Brian Byrne < > > > > bby...@confluent.io > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > Hi Guozhang, > > > > > > > > > > > > > > > > > > > > > > Thanks for the feedback! > > > > > > > > > > > > > > > > > > > > > > On Sun, Dec 8, 2019 at 6:25 PM Guozhang Wang < > > > > > wangg...@gmail.com > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > 1. The addition of *metadata.expiry.ms < > > > > > > > http://metadata.expiry.ms> > > > > > > > > > > > *should > > > > > > > > > > > > be included in the public interface. Also its > semantics > > > > needs > > > > > > > more > > > > > > > > > > > > clarification (since previously it is hard-coded > > > internally > > > > > we > > > > > > do > > > > > > > > not > > > > > > > > > > > need > > > > > > > > > > > > to explain it publicly, but now with the configurable > > > value > > > > > we > > > > > > do > > > > > > > > > > need). > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > This was an oversight. Done. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 2. There are a couple of hard-coded parameters like > 25 > > > and > > > > > 0.5 > > > > > > in > > > > > > > > the > > > > > > > > > > > > proposal, maybe we need to explain why these magic > > values > > > > > makes > > > > > > > > sense > > > > > > > > > > in > > > > > > > > > > > > common scenarios. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > So these are pretty fuzzy numbers, and seemed to be a > > > decent > > > > > > > balance > > > > > > > > > > > between trade-offs. I've updated the target size to > > account > > > > for > > > > > > > > setups > > > > > > > > > > with > > > > > > > > > > > a large number of topics or a shorter refresh time, as > > well > > > > as > > > > > > > added > > > > > > > > > some > > > > > > > > > > > light rationale. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 3. In the Urgent set condition, do you actually mean > > > "with > > > > no > > > > > > > > cached > > > > > > > > > > > > metadata AND there are existing data buffered for the > > > > topic"? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Yes, fixed. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > One concern I have is whether or not we may > introduce a > > > > > > > regression, > > > > > > > > > > > > especially during producer startup such that since we > > > only > > > > > > > require > > > > > > > > up > > > > > > > > > > to > > > > > > > > > > > 25 > > > > > > > > > > > > topics each request, it may cause the send data to be > > > > > buffered > > > > > > > more > > > > > > > > > > time > > > > > > > > > > > > than now due to metadata not available. I understand > > this > > > > is > > > > > a > > > > > > > > > > > acknowledged > > > > > > > > > > > > trade-off in our design but any regression that may > > > surface > > > > > to > > > > > > > > users > > > > > > > > > > need > > > > > > > > > > > > to be very carefully considered. I'm wondering, e.g. > if > > > we > > > > > can > > > > > > > > tweak > > > > > > > > > > our > > > > > > > > > > > > algorithm for the Urgent set, e.g. to consider those > > with > > > > non > > > > > > > > cached > > > > > > > > > > > > metadata have higher priority than those who have > > elapsed > > > > > > max.age > > > > > > > > but > > > > > > > > > > not > > > > > > > > > > > > yet have been called for sending. More specifically: > > > > > > > > > > > > > > > > > > > > > > > > Urgent: topics that have been requested for sending > but > > > no > > > > > > cached > > > > > > > > > > > metadata, > > > > > > > > > > > > and topics that have send request failed with e.g. > > > > > NOT_LEADER. > > > > > > > > > > > > Non-urgent: topics that are not in Urgent but have > > > expired > > > > > > > max.age. > > > > > > > > > > > > > > > > > > > > > > > > Then when sending metadata, we always send ALL in the > > > > urgent > > > > > > > (i.e. > > > > > > > > > > ignore > > > > > > > > > > > > the size limit), and only when they do not exceed the > > > size > > > > > > limit, > > > > > > > > > > > consider > > > > > > > > > > > > fill in more topics from Non-urgent up to the size > > limit. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I think we're on the same page here. Urgent topics > ignore > > > the > > > > > > > target > > > > > > > > > > > metadata RPC size, and are not bound by it in any way, > > i.e. > > > > if > > > > > > > > there's > > > > > > > > > > 100 > > > > > > > > > > > urgent topics, we'll fetch all 100 in a single RPC. > Like > > > you > > > > > say, > > > > > > > > > > however, > > > > > > > > > > > if a topic transitions to urgent and there's several > > > > non-urgent > > > > > > > ones, > > > > > > > > > > we'll > > > > > > > > > > > piggyback the non-urgent updates up to the target size. > > > > > > > > > > > > > > > > > > > > > > Thanks, > > > > > > > > > > > Brian > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Wed, Nov 20, 2019 at 7:00 PM deng ziming < > > > > > > > > dengziming1...@gmail.com> > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > I think it's ok, and you can add another issue > about > > > > > > > > `asynchronous > > > > > > > > > > > > > metadata` if `topic expiry` is not enough. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Thu, Nov 21, 2019 at 6:20 AM Brian Byrne < > > > > > > > bby...@confluent.io > > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > Hello all, > > > > > > > > > > > > > > > > > > > > > > > > > > > > I've refactored the KIP to remove implementing > > > > > asynchronous > > > > > > > > > > metadata > > > > > > > > > > > > > > fetching in the producer during send(). It's now > > > > > > exclusively > > > > > > > > > > focused > > > > > > > > > > > on > > > > > > > > > > > > > > reducing the topic metadata fetch payload and > > > proposes > > > > > > > adding a > > > > > > > > > new > > > > > > > > > > > > > > configuration flag to control topic expiry > > behavior. > > > > > Please > > > > > > > > take > > > > > > > > > a > > > > > > > > > > > look > > > > > > > > > > > > > > when possible. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-526 > > > > > > > > > > > > > > > > > > > > > %3A+Reduce+Producer+Metadata+Lookups+for+Large+Number+of+Topics > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks, > > > > > > > > > > > > > > Brian > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Fri, Oct 4, 2019 at 10:04 AM Brian Byrne < > > > > > > > > bby...@confluent.io > > > > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Lucas, Guozhang, > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thank you for the comments. Good point on > > > > > > > > > > METADATA_MAX_AGE_CONFIG - > > > > > > > > > > > > it > > > > > > > > > > > > > > > looks like the ProducerMetadata was > > differentiating > > > > > > between > > > > > > > > > > expiry > > > > > > > > > > > > and > > > > > > > > > > > > > > > refresh, but it should be unnecessary to do so > > once > > > > the > > > > > > > cost > > > > > > > > of > > > > > > > > > > > > > fetching > > > > > > > > > > > > > > a > > > > > > > > > > > > > > > single topic's metadata is reduced. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I've updated the rejected alternatives and > > removed > > > > the > > > > > > > config > > > > > > > > > > > > > variables. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Brian > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Fri, Oct 4, 2019 at 9:20 AM Guozhang Wang < > > > > > > > > > wangg...@gmail.com > > > > > > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> Hello Brian, > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > >> Thanks for the KIP. > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > >> I think using asynchronous metadata update to > > > > address > > > > > 1) > > > > > > > > > > metadata > > > > > > > > > > > > > update > > > > > > > > > > > > > > >> blocking send, but for other issues, currently > > at > > > > > > producer > > > > > > > > we > > > > > > > > > do > > > > > > > > > > > > have > > > > > > > > > > > > > a > > > > > > > > > > > > > > >> configurable `METADATA_MAX_AGE_CONFIG` similar > > to > > > > > > > consumer, > > > > > > > > by > > > > > > > > > > > > default > > > > > > > > > > > > > > is > > > > > > > > > > > > > > >> 5min. So maybe we do not need to introduce new > > > > configs > > > > > > > here, > > > > > > > > > but > > > > > > > > > > > > only > > > > > > > > > > > > > > >> change the semantics of that config from > global > > > > expiry > > > > > > > > (today > > > > > > > > > we > > > > > > > > > > > > just > > > > > > > > > > > > > > >> enforce a full metadata update for the whole > > > > cluster) > > > > > to > > > > > > > > > > > > single-topic > > > > > > > > > > > > > > >> expiry, and we can also extend its expiry > > deadline > > > > > > > whenever > > > > > > > > > that > > > > > > > > > > > > > > metadata > > > > > > > > > > > > > > >> is successfully used to send a produce > request. > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > >> Guozhang > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > >> On Thu, Oct 3, 2019 at 6:51 PM Lucas > Bradstreet > > < > > > > > > > > > > > lu...@confluent.io > > > > > > > > > > > > > > > > > > > > > > > > > > > >> wrote: > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > >> > Hi Brian, > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > >> > This looks great, and should help reduce > > > blocking > > > > > and > > > > > > > high > > > > > > > > > > > > metadata > > > > > > > > > > > > > > >> request > > > > > > > > > > > > > > >> > volumes when the producer is sending to > large > > > > > numbers > > > > > > of > > > > > > > > > > topics, > > > > > > > > > > > > > > >> especially > > > > > > > > > > > > > > >> > at low volumes. I think the approach to make > > > > > metadata > > > > > > > > > fetching > > > > > > > > > > > > > > >> asynchronous > > > > > > > > > > > > > > >> > and batch metadata requests together will > help > > > > > > > > > significantly. > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > >> > The only other approach I can think of is to > > > allow > > > > > > users > > > > > > > > to > > > > > > > > > > > supply > > > > > > > > > > > > > the > > > > > > > > > > > > > > >> > producer with the expected topics upfront, > > > > allowing > > > > > > the > > > > > > > > > > producer > > > > > > > > > > > > to > > > > > > > > > > > > > > >> perform > > > > > > > > > > > > > > >> > a single initial metadata request before any > > > sends > > > > > > > occur. > > > > > > > > I > > > > > > > > > > see > > > > > > > > > > > no > > > > > > > > > > > > > > real > > > > > > > > > > > > > > >> > advantages to this approach compared to the > > > async > > > > > > method > > > > > > > > > > you’ve > > > > > > > > > > > > > > >> proposed, > > > > > > > > > > > > > > >> > but maybe we could add it to the rejected > > > > > alternatives > > > > > > > > > > section? > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > >> > Thanks, > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > >> > Lucas > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > >> > On Fri, 20 Sep 2019 at 11:46, Brian Byrne < > > > > > > > > > > bby...@confluent.io> > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > >> > > I've updated the 'Proposed Changes' to > > include > > > > two > > > > > > new > > > > > > > > > > > producer > > > > > > > > > > > > > > >> > > configuration variables: topic.expiry.ms > > and > > > > > > > > > > topic.refresh.ms > > > > > > > > > > > . > > > > > > > > > > > > > > Please > > > > > > > > > > > > > > >> > take > > > > > > > > > > > > > > >> > > a look. > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > >> > > Thanks, > > > > > > > > > > > > > > >> > > Brian > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > >> > > On Tue, Sep 17, 2019 at 12:59 PM Brian > > Byrne < > > > > > > > > > > > > bby...@confluent.io > > > > > > > > > > > > > > > > > > > > > > > > > > > > >> > wrote: > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > >> > > > Dev team, > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > >> > > > Requesting discussion for improvement to > > the > > > > > > > producer > > > > > > > > > when > > > > > > > > > > > > > dealing > > > > > > > > > > > > > > >> > with a > > > > > > > > > > > > > > >> > > > large number of topics. > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > >> > > > KIP: > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-526%3A+Reduce+Producer+Metadata+Lookups+for+Large+Number+of+Topics > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > >> > > > JIRA: > > > > > > > > https://issues.apache.org/jira/browse/KAFKA-8904 > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > >> > > > Thoughts and feedback would be > > appreciated. > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > >> > > > Thanks, > > > > > > > > > > > > > > >> > > > Brian > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > >> -- > > > > > > > > > > > > > > >> -- Guozhang > > > > > > > > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > > > -- Guozhang > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > -- Guozhang > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > -- Guozhang > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > Best, > > > > > > Stanislav > > > > > > > > > > > > > > > > > > > > > > > -- > > > > -- Guozhang > > > > > > > > > > > > > -- > > -- Guozhang > > > -- -- Guozhang