Hi Matthias, So sorry for the delay in replying to you. For now, I think we can keep KafkaStreams#toString() as it is. It's always preferable to have an implementation for toString method.
2017-04-14 4:08 GMT+02:00 Matthias J. Sax <matth...@confluent.io>: > Florian, > > >>> What about KafkaStreams#toString() method? > >>> > >>> I think, we want to deprecate it as with KIP-120 and the changes of > this > >>> KIP, is gets obsolete. > > Any thoughts about this? For me, this is the last open point to discuss > (or what should be reflected in the KIP in case you agree) before I can > put my vote on the VOTE thread do did start already. > > -Matthias > > > On 4/11/17 12:18 AM, Damian Guy wrote: > > Hi Florian, > > > > Thanks for the updates. The KIP is looking good. > > > > Cheers, > > Damian > > > > On Fri, 7 Apr 2017 at 22:41 Matthias J. Sax <matth...@confluent.io> > wrote: > > > >> What about KafkaStreams#toString() method? > >> > >> I think, we want to deprecate it as with KIP-120 and the changes of this > >> KIP, is gets obsolete. > >> > >> If we do so, please update the KIP accordingly. > >> > >> > >> -Matthias > >> > >> On 3/28/17 7:00 PM, Matthias J. Sax wrote: > >>> Thanks for updating the KIP! > >>> > >>> I think it's good as is -- I would not add anything more to > TaskMetadata. > >>> > >>> About subtopologies and tasks. We do have the concept of subtopologies > >>> already in KIP-120. It's only missing and ID that allow to link a > >>> subtopology to a task. > >>> > >>> IMHO, adding a simple variable to `Subtopoloy` that provide the id > >>> should be sufficient. We can simply document in the JavaDocs how > >>> Subtopology and TaskMetadata can be linked to each other. > >>> > >>> I did update KIP-120 accordingly. > >>> > >>> > >>> -Matthias > >>> > >>> On 3/28/17 3:45 PM, Florian Hussonnois wrote: > >>>> Hi all, > >>>> > >>>> I've updated the KIP and the PR to reflect your suggestions. > >>>> > >> https://cwiki.apache.org/confluence/display/KAFKA/KIP+ > 130%3A+Expose+states+of+active+tasks+to+KafkaStreams+public+API > >>>> https://github.com/apache/kafka/pull/2612 > >>>> > >>>> Also, I've exposed property StreamThread#state as a string through the > >>>> new class ThreadMetadata. > >>>> > >>>> Thanks, > >>>> > >>>> 2017-03-27 23:40 GMT+02:00 Florian Hussonnois <fhussonn...@gmail.com > >>>> <mailto:fhussonn...@gmail.com>>: > >>>> > >>>> Hi Guozhang, Matthias, > >>>> > >>>> It's a great idea to add sub topologies descriptions. This would > >>>> help developers to better understand topology concept. > >>>> > >>>> I agree that is not really user-friendly to check if > >>>> `StreamsMetadata#streamThreads` is not returning null. > >>>> > >>>> The method name localThreadsMetadata looks good. In addition, it's > >>>> more simple to build ThreadMetadata instances from the > `StreamTask` > >>>> class than from `StreamPartitionAssignor` class. > >>>> > >>>> I will work on modifications. As I understand, I have to add the > >>>> property subTopologyId property to the TaskMetadata class - Am I > >> right ? > >>>> > >>>> Thanks, > >>>> > >>>> 2017-03-26 0:25 GMT+01:00 Guozhang Wang <wangg...@gmail.com > >>>> <mailto:wangg...@gmail.com>>: > >>>> > >>>> Re 1): this is a good point. May be we can move > >>>> `StreamsMetadata#streamThreads` as > >>>> `KafkaStreams#localThreadsMetadata`? > >>>> > >>>> 3): this is a minor suggestion about function name of > >>>> `assignedPartitions`, to `topicPartitions` to be consistent > with > >>>> `StreamsMetadata`? > >>>> > >>>> > >>>> Guozhang > >>>> > >>>> On Thu, Mar 23, 2017 at 4:30 PM, Matthias J. Sax > >>>> <matth...@confluent.io <mailto:matth...@confluent.io>> wrote: > >>>> > >>>> Thanks for the progress on this KIP. I think we are on the > >>>> right path! > >>>> > >>>> Couple of comments/questions: > >>>> > >>>> (1) Why do we not consider the "rejected alternative" to > add > >>>> the method > >>>> to KafkaStreams? The comment on #streamThreads() says: > >>>> > >>>> "Note this method will return <code>null</code> if called > on > >>>> {@link > >>>> StreamsMetadata} which represent a remote application." > >>>> > >>>> Thus, if we cannot get any remote metadata, it seems not > >>>> straight > >>>> forward to not add it to KafkaStreams directly -- this > would > >>>> avoid > >>>> invalid calls and `null` return value in the first place. > >>>> > >>>> I like the idea about exposing sub-topologies.: > >>>> > >>>> (2a) I would recommend to rename `topicsGroupId` to > >>>> `subTopologyId` :) > >>>> > >>>> (2b) We could add this to KIP-120 already. However, I > would > >>>> not just > >>>> link both via name, but leverage KIP-120 directly, and > add a > >>>> "Subtopology" member to the TaskMetadata class. > >>>> > >>>> > >>>> Overall, I like the distinction of KIP-120 only exposing > >>>> "static" > >>>> information that can be determined before the topology > get's > >>>> started, > >>>> while this KIP allow to access runtime information. > >>>> > >>>> > >>>> > >>>> -Matthias > >>>> > >>>> > >>>> On 3/22/17 12:42 PM, Guozhang Wang wrote: > >>>> > Thanks for the updated KIP, and sorry for the late > >> replies! > >>>> > > >>>> > I think a little bit more about KIP-130, and I feel that > >>>> if we are going > >>>> > to deprecate the `toString` function (it is not > explicitly > >>>> said in the > >>>> > KIP, so I'm not sure if you plan to still keep the > >>>> > `KafkaStreams#toString` as is or are going to replace it > >>>> with the > >>>> > proposed APIs) with the proposed ones, it may be okay. > >> More > >>>> > specifically, after both KIP-120 and KIP-130: > >>>> > > >>>> > 1. users can use `#describe` function to check the > >>>> generated topology > >>>> > before calling `KafkaStreams#start`, which is static > >>>> information. > >>>> > 2. users can use the `StreamsMetadata -> ThreadMetadata > -> > >>>> TaskMetadata` > >>>> > programmatically after called `KafkaStreams#start` to > get > >> the > >>>> > dynamically changeable information. > >>>> > > >>>> > One thing I'm still not sure though, is that in > >>>> `TaskMetadata` we only > >>>> > have the TaskId and assigned partitions, whereas in > >>>> > "TopologyDescription" introduced in KIP-120, it will > >>>> simply describe the > >>>> > whole topology possibly composed of multiple > >>>> sub-topologies. So it is > >>>> > hard for users to tell which sub-topology is executed > >>>> under which task > >>>> > on-the-fly. > >>>> > > >>>> > Hence I'm thinking if we can expose the > "sub-topology-id" > >>>> (named as > >>>> > topicsGroupId internally) in > >>>> TopologyDescription#Subtopology, and then > >>>> > from the task id which is essentially "sub-topology-id > >> DASH > >>>> > partition-group-id" users can make the link, though it > is > >>>> still not that > >>>> > straight-forward. > >>>> > > >>>> > Thoughts? > >>>> > > >>>> > Guozhang > >>>> > > >>>> > > >>>> > > >>>> > On Wed, Mar 15, 2017 at 3:16 PM, Florian Hussonnois > >>>> > <fhussonn...@gmail.com <mailto:fhussonn...@gmail.com> > >>>> <mailto:fhussonn...@gmail.com > >>>> <mailto:fhussonn...@gmail.com>>> wrote: > >>>> > > >>>> > Thanks Guozhang for pointing me to the KIP-120. > >>>> > > >>>> > I've made some modifications to the KIP. I also > >> proposed a new PR > >>>> > (there is > >>>> > still some tests to make). > >>>> > > >> https://cwiki.apache.org/confluence/display/KAFKA/KIP+ > 130%3A+Expose+states+of+active+tasks+to+KafkaStreams+public+API > >>>> < > >> https://cwiki.apache.org/confluence/display/KAFKA/KIP+ > 130%3A+Expose+states+of+active+tasks+to+KafkaStreams+public+API > >>> > >>>> > < > >> https://cwiki.apache.org/confluence/display/KAFKA/KIP+ > 130%3A+Expose+states+of+active+tasks+to+KafkaStreams+public+API > >>>> < > >> https://cwiki.apache.org/confluence/display/KAFKA/KIP+ > 130%3A+Expose+states+of+active+tasks+to+KafkaStreams+public+API > >>>> > >>>> > > >>>> > Exposing consumed offsets through JMX is sufficient > >> for debugging > >>>> > purpose. > >>>> > But I think this could be part to another JIRA as > >> there is no impact to > >>>> > public API. > >>>> > > >>>> > Thanks > >>>> > > >>>> > 2017-03-10 22:35 GMT+01:00 Guozhang Wang < > >> wangg...@gmail.com <mailto:wangg...@gmail.com> > >>>> > <mailto:wangg...@gmail.com <mailto: > wangg...@gmail.com > >>>>> : > >>>> > >>>> > > >>>> > > Hello Florian, > >>>> > > > >>>> > > As for programmatically discover monitoring data > by > >>>> piping metrics > >>>> > into a > >>>> > > dedicated topic. I think you can actually use a > >>>> > KafkaMetricsReporter which > >>>> > > pipes the polled metric values into a pre-defined > >>>> topic (note that > >>>> > in Kafka > >>>> > > the MetricsReporter is simply an interface and > users > >>>> can build > >>>> > their own > >>>> > > impl in addition to the JMXReporter), for example > : > >>>> > > > >>>> > > https://github.com/krux/kafka-metrics-reporter > >>>> <https://github.com/krux/kafka-metrics-reporter> > >>>> > <https://github.com/krux/kafka-metrics-reporter > >>>> <https://github.com/krux/kafka-metrics-reporter>> > >>>> > > > >>>> > > As for the "static task-level assignment", what I > >>>> meant is that > >>>> > the mapping > >>>> > > from source-topic-partitions -> tasks are static, > >>>> via the > >>>> > > "PartitionGrouper", and a task won't switch from > an > >>>> active task to a > >>>> > > standby task, it is actually that an active task > >>>> could be > >>>> > migrated, as a > >>>> > > whole along with all its assigned partitions, to > >>>> another thread / > >>>> > process > >>>> > > and a new standby task will be created on the host > >>>> that this > >>>> > active task is > >>>> > > migrating from. So for the SAME task, its > >> taskMetadata. > >>>> > > assignedPartitions() > >>>> > > will always return you the same partitions. > >>>> > > > >>>> > > As for the `toString` function that what we have > >>>> today, I feel it > >>>> > has some > >>>> > > correlations with KIP-120 so I'm trying to > >>>> coordinate some > >>>> > discussions here > >>>> > > (cc'ing Matthias as the owner of KIP-120). My > >>>> understand is that: > >>>> > > > >>>> > > 1. In KIP-120, the `toString` function of > >>>> `KafkaStreams` will be > >>>> > removed > >>>> > > and instead the `Topology#describe` function will > be > >>>> introduced > >>>> > for users > >>>> > > to debug the topology BEFORE start running their > >>>> instance with the > >>>> > > topology. And hence the description won't contain > >>>> any task > >>>> > information as > >>>> > > they are not formed yet. > >>>> > > 2. In KIP-130, we want to add the task-level > >>>> information for > >>>> > monitoring > >>>> > > purposes, which is not static and can only be > >>>> captured AFTER the > >>>> > instance > >>>> > > has started running. Again I'm wondering for > KIP-130 > >>>> alone if > >>>> > adding those > >>>> > > metrics mentioned in my previous email would > suffice > >>>> even for the > >>>> > use case > >>>> > > that you have mentioned. > >>>> > > > >>>> > > > >>>> > > Guozhang > >>>> > > > >>>> > > On Wed, Mar 8, 2017 at 3:18 PM, Florian Hussonnois > >>>> > <fhussonn...@gmail.com <mailto: > fhussonn...@gmail.com> > >>>> <mailto:fhussonn...@gmail.com <mailto: > fhussonn...@gmail.com > >>>>> > >>>> > >>>> > > wrote: > >>>> > > > >>>> > > > Hi Guozhang > >>>> > > > > >>>> > > > Thank you for your feedback. I've started to > look > >>>> more deeply > >>>> > into the > >>>> > > > code. As you mention, it would be more clever to > >>>> use the current > >>>> > > > StreamMetadata API to expose these information. > >>>> > > > > >>>> > > > I think exposing metrics through JMX is great > for > >>>> building > >>>> > monitoring > >>>> > > > dashboards using some tools like jmxtrans and > >> grafana. > >>>> > > > But for our use case we would like to expose the > >>>> states > >>>> > directely from > >>>> > > the > >>>> > > > application embedding the kstreams topologies. > >>>> > > > So we expect to be able to retrieve states in a > >>>> programmatic way. > >>>> > > > > >>>> > > > For instance, we could imagin to produce those > >>>> states into a > >>>> > dedicated > >>>> > > > topic. In that way a third application could > >>>> automatically > >>>> > discover all > >>>> > > > kafka-streams applications which could be > >> monitored. > >>>> > > > In production environment, that can be clearly a > >>>> solution to have a > >>>> > > > complete overview of a microservices > architecture > >>>> based on Kafka > >>>> > Streams. > >>>> > > > > >>>> > > > The toString() method give a lots of information > >>>> it can only be > >>>> > used for > >>>> > > > debugging purpose but not to build a topologies > >>>> visualization > >>>> > tool. We > >>>> > > > could actually expose same details about the > >>>> stream topology > >>>> > from the > >>>> > > > StreamMetadata API ? So the TaskMetadata class > you > >>>> have > >>>> > suggested could > >>>> > > > contains similar information that ones return by > >>>> the toString > >>>> > method from > >>>> > > > AbstractTask class ? > >>>> > > > > >>>> > > > I can update the KIP in that way. > >>>> > > > > >>>> > > > Finally, I'm not sure to understand your last > >>>> point :* "Note > >>>> > that the > >>>> > > > task-level assignment information is static, > i.e. > >>>> it will not change > >>>> > > during > >>>> > > > the runtime" * > >>>> > > > > >>>> > > > Does that mean when a rebalance occurs new tasks > >>>> are created for > >>>> > the new > >>>> > > > assignments and old ones just switch to a > standby > >>>> state ? > >>>> > > > > >>>> > > > Thanks, > >>>> > > > > >>>> > > > 2017-03-05 7:04 GMT+01:00 Guozhang Wang > >>>> <wangg...@gmail.com <mailto:wangg...@gmail.com> > >>>> > <mailto:wangg...@gmail.com <mailto: > wangg...@gmail.com > >>>>> : > >>>> > >>>> > > > > >>>> > > > > Hello Florian, > >>>> > > > > > >>>> > > > > Thanks for the KIP and your detailed > explanation > >>>> of your use > >>>> > case. I > >>>> > > > think > >>>> > > > > there are two dimensions to discuss on how to > >>>> improve Streams' > >>>> > > > > debuggability (or more specifically state > >>>> exposure for > >>>> > visualization). > >>>> > > > > > >>>> > > > > First question is "what information should we > >>>> expose to the > >>>> > user". From > >>>> > > > > your KIP I saw generally three categories: > >>>> > > > > > >>>> > > > > 1. The state of the thread within a process, > as > >>>> you mentioned > >>>> > currently > >>>> > > > we > >>>> > > > > only expose the state of the process but not > the > >>>> finer grained > >>>> > > per-thread > >>>> > > > > state. > >>>> > > > > 2. The state of the task. Currently the most > >>>> close API to this is > >>>> > > > > StreamsMetadata, > >>>> > > > > however it aggregates the tasks across all > >>>> threads and only > >>>> > present the > >>>> > > > > aggregated set of the assigned partitions / > >>>> state stores etc. > >>>> > We can > >>>> > > > > consider extending this method to have a new > >>>> > StreamsMetadata#tasks() > >>>> > > > which > >>>> > > > > returns a TaskMetadata with the similar > fields, > >>>> and the > >>>> > > > > StreamsMetadata.stateStoreNames / etc would > >>>> still be returning the > >>>> > > > > aggregated results but users can still "drill > >>>> down" if they want. > >>>> > > > > > >>>> > > > > The second question is "how should we expose > >>>> them to the > >>>> > user". For > >>>> > > > > example, you mentioned about > >>>> consumedOffsetsByPartition in the > >>>> > > > activeTasks. > >>>> > > > > We could add this as a JMX metric based on > fetch > >>>> positions > >>>> > inside the > >>>> > > > > consumer layer (note that Streams is just > >>>> embedding consumers) > >>>> > or we > >>>> > > > could > >>>> > > > > consider adding it into TaskMetadata. Either > >>>> case it can be > >>>> > visualized > >>>> > > > for > >>>> > > > > monitoring. The reason we expose > StreamsMetadata > >>>> as well as > >>>> > State was > >>>> > > > that > >>>> > > > > it is expected to be "polled" in a > programmatic > >>>> way for > >>>> > interactive > >>>> > > > queries > >>>> > > > > and also for control flows (e.g. I would like > to > >>>> ONLY start > >>>> > running my > >>>> > > > > other topology until the first topology has > been > >>>> up and > >>>> > running) while > >>>> > > > for > >>>> > > > > your case it seems the main purpose is to > >>>> continuously query > >>>> > them for > >>>> > > > > monitoring etc. Personally I'd prefer to > expose > >>>> them as JMX > >>>> > only for > >>>> > > such > >>>> > > > > purposes only to have a simpler API. > >>>> > > > > > >>>> > > > > So given your current motivations I'd suggest > >>>> expose the following > >>>> > > > > information as newly added metrics in Streams: > >>>> > > > > > >>>> > > > > 1. Thread-level state metric. > >>>> > > > > 2. Task-level hosted client identifier metric > >>>> (e.g. host:port). > >>>> > > > > 3. Consumer-level per-topic/partition position > >>>> metric ( > >>>> > > > > > >>>> > >> https://kafka.apache.org/documentation/#topic_fetch_monitoring > >>>> < > >> https://kafka.apache.org/documentation/#topic_fetch_monitoring> > >>>> > > >>>> < > >> https://kafka.apache.org/documentation/#topic_fetch_monitoring > >>>> < > >> https://kafka.apache.org/documentation/#topic_fetch_monitoring>>). > >>>> > > > > > >>>> > > > > Note that the task-level assignment > information > >> is static, > >>>> > i.e. it will > >>>> > > > not > >>>> > > > > change during the runtime at all and can be > >> accessed from the > >>>> > > > `toString()` > >>>> > > > > function already even before the instance > start > >> running, so I > >>>> > think > >>>> > > this > >>>> > > > > piece of information do not need to be exposed > >> through JMX > >>>> > anymore. > >>>> > > > > > >>>> > > > > WDYT? > >>>> > > > > > >>>> > > > > Guozhang > >>>> > > > > > >>>> > > > > > >>>> > > > > On Thu, Mar 2, 2017 at 3:11 AM, Damian Guy > >>>> > <damian....@gmail.com <mailto:damian....@gmail.com> > >>>> <mailto:damian....@gmail.com <mailto:damian....@gmail.com > >>>>> > >>>> > > wrote: > >>>> > > > > > >>>> > > > > > Hi Florian, > >>>> > > > > > > >>>> > > > > > Thanks for the KIP. > >>>> > > > > > > >>>> > > > > > It seems there is some overlap here with > what > >> we already have in > >>>> > > > > > KafkaStreams.allMetadata(). This currently > >> returns a > >>>> > > > > > Collection<StreamsMetadata> where each > >> StreamsMetadata > >>>> > instance holds > >>>> > > > the > >>>> > > > > > state stores and partition assignment for > >> every instance of the > >>>> > > > > > KafkaStreams application. I'm wondering if > >> that is good > >>>> > enough for > >>>> > > what > >>>> > > > > you > >>>> > > > > > are trying to achieve? If not could it be > >> modified to > >>>> > include the per > >>>> > > > > > Thread assignment? > >>>> > > > > > > >>>> > > > > > Thanks, > >>>> > > > > > Damian > >>>> > > > > > > >>>> > > > > > > >>>> > > > > > > >>>> > > > > > > >>>> > > > > > > >>>> > > > > > > >>>> > > > > > On Wed, 1 Mar 2017 at 22:49 Florian > >> Hussonnois < > >>>> > > fhussonn...@gmail.com <mailto: > fhussonn...@gmail.com > >>> > >>>> <mailto:fhussonn...@gmail.com <mailto: > fhussonn...@gmail.com > >>>>> > >>>> > >>>> > > > > > wrote: > >>>> > > > > > > >>>> > > > > > > Hi Matthias, > >>>> > > > > > > > >>>> > > > > > > First, I will answer to your last > question. > >>>> > > > > > > > >>>> > > > > > > The main reason to have both > >>>> TaskState#assignment and > >>>> > > > > > > TaskState#consumedOffsetsByPartition is > that > >>>> tasks have no > >>>> > > consumed > >>>> > > > > > offsets > >>>> > > > > > > until at least one message is consumed for > >>>> each partition > >>>> > even if > >>>> > > > > > previous > >>>> > > > > > > offsets exist for the consumer group. > >>>> > > > > > > So yes this methods are redundant as it > only > >>>> diverge at > >>>> > application > >>>> > > > > > > startup. > >>>> > > > > > > > >>>> > > > > > > About the use case, currently we are > >>>> developping for a > >>>> > customer a > >>>> > > > > little > >>>> > > > > > > framework based on KafkaStreams which > >>>> > transform/denormalize data > >>>> > > > before > >>>> > > > > > > ingesting into hadoop. > >>>> > > > > > > > >>>> > > > > > > We have a cluster of workers (SpringBoot) > >>>> which instantiate > >>>> > > KStreams > >>>> > > > > > > topologies dynamicaly based on dataflow > >>>> configurations. > >>>> > > > > > > Each configuration describes a topic to > >>>> consume and how to > >>>> > process > >>>> > > > > > messages > >>>> > > > > > > (this looks like NiFi processors API). > >>>> > > > > > > > >>>> > > > > > > Our architecture is inspired from > >>>> KafkaConnect. We have > >>>> > topics for > >>>> > > > > > configs > >>>> > > > > > > and states which are consumed by each > >>>> workers (actually we > >>>> > have > >>>> > > > reused > >>>> > > > > > some > >>>> > > > > > > internals classes to the connect API). > >>>> > > > > > > > >>>> > > > > > > Now, we would like to develop UIs to > >>>> visualize topics and > >>>> > > partitions > >>>> > > > > > > consumed by our worker applications. > >>>> > > > > > > > >>>> > > > > > > Also, I think it would be nice to be able, > >>>> in the futur, to > >>>> > > develop > >>>> > > > > web > >>>> > > > > > > UIs similar to Spark but for KafkaStreams > to > >>>> visualize > >>>> > DAGs...so > >>>> > > > maybe > >>>> > > > > > this > >>>> > > > > > > KIP is just a first step. > >>>> > > > > > > > >>>> > > > > > > Thanks, > >>>> > > > > > > > >>>> > > > > > > 2017-03-01 22:52 GMT+01:00 Matthias J. Sax > >>>> > <matth...@confluent.io <mailto: > matth...@confluent.io> > >>>> <mailto:matth...@confluent.io <mailto: > matth...@confluent.io > >>>> > >>>> > >>>> > > >: > >>>> > > > > > > > >>>> > > > > > > > Thanks for the KIP. > >>>> > > > > > > > > >>>> > > > > > > > I am wondering a little bit, why you > need > >>>> to expose this > >>>> > > > information. > >>>> > > > > > > > Can you describe some use cases? > >>>> > > > > > > > > >>>> > > > > > > > Would it be worth to unify this new API > >> with > >>>> > KafkaStreams#state() > >>>> > > > to > >>>> > > > > > get > >>>> > > > > > > > the overall state of an application > >>>> without the need to > >>>> > call two > >>>> > > > > > > > different methods? Not sure how this > >>>> unified API might > >>>> > look like > >>>> > > > > > though. > >>>> > > > > > > > > >>>> > > > > > > > > >>>> > > > > > > > One minor comment about the API: > >>>> TaskState#assignment > >>>> > seems to be > >>>> > > > > > > > redundant. It should be the same as > >>>> > > > > > > > > >> TaskState#consumedOffsetsByPartition.keySet() > >>>> > > > > > > > > >>>> > > > > > > > Or do I miss something? > >>>> > > > > > > > > >>>> > > > > > > > > >>>> > > > > > > > -Matthias > >>>> > > > > > > > > >>>> > > > > > > > On 3/1/17 5:19 AM, Florian Hussonnois > >> wrote: > >>>> > > > > > > > > Hi Eno, > >>>> > > > > > > > > > >>>> > > > > > > > > Yes, but the state() method only > returns > >>>> the global > >>>> > state of > >>>> > > the > >>>> > > > > > > > > KafkaStream application (ie: CREATED, > >>>> RUNNING, > >>>> > REBALANCING, > >>>> > > > > > > > > PENDING_SHUTDOWN, NOT_RUNNING). > >>>> > > > > > > > > > >>>> > > > > > > > > An alternative to this KIP would be to > >>>> change this > >>>> > method to > >>>> > > > return > >>>> > > > > > > more > >>>> > > > > > > > > information instead of adding a new > >> method. > >>>> > > > > > > > > > >>>> > > > > > > > > 2017-03-01 13:46 GMT+01:00 Eno > Thereska > >> < > >>>> > > eno.there...@gmail.com > >>>> <mailto:eno.there...@gmail.com> > >>>> <mailto:eno.there...@gmail.com <mailto: > >> eno.there...@gmail.com>> > >>>> > > > >: > >>>> > > > > > > > > > >>>> > > > > > > > >> Thanks Florian, > >>>> > > > > > > > >> > >>>> > > > > > > > >> Have you had a chance to look at the > >> new state methods in > >>>> > > > 0.10.2, > >>>> > > > > > > e.g., > >>>> > > > > > > > >> KafkaStreams.state()? > >>>> > > > > > > > >> > >>>> > > > > > > > >> Thanks > >>>> > > > > > > > >> Eno > >>>> > > > > > > > >>> On 1 Mar 2017, at 11:54, Florian > >> Hussonnois < > >>>> > > > > fhussonn...@gmail.com > >>>> <mailto:fhussonn...@gmail.com> <mailto: > >> fhussonn...@gmail.com > >>>> <mailto:fhussonn...@gmail.com>> > >>>> > >>>> > > > > > > > >>>> > > > > > > > >> wrote: > >>>> > > > > > > > >>> > >>>> > > > > > > > >>> Hi all, > >>>> > > > > > > > >>> > >>>> > > > > > > > >>> I have just created KIP-130 to add a > >>>> new method to the > >>>> > > > > KafkaStreams > >>>> > > > > > > API > >>>> > > > > > > > >> in > >>>> > > > > > > > >>> order to expose the states of > threads > >>>> and active tasks. > >>>> > > > > > > > >>> > >>>> > > > > > > > >>> > >>>> > > >> https://cwiki.apache.org/confluence/display/KAFKA/KIP+ > >>>> <https://cwiki.apache.org/confluence/display/KAFKA/KIP+> > >>>> > > >>>> <https://cwiki.apache.org/confluence/display/KAFKA/KIP+ > >>>> <https://cwiki.apache.org/confluence/display/KAFKA/KIP+>> > >>>> > > > > > > > >> > >>>> 130%3A+Expose+states+of+active+tasks+to+KafkaStreams+ > >>>> > > public+API > >>>> > > > > > > > >>> > >>>> > > > > > > > >>> > >>>> > > > > > > > >>> Thanks, > >>>> > > > > > > > >>> > >>>> > > > > > > > >>> -- > >>>> > > > > > > > >>> Florian HUSSONNOIS > >>>> > > > > > > > >> > >>>> > > > > > > > >> > >>>> > > > > > > > > > >>>> > > > > > > > > > >>>> > > > > > > > > >>>> > > > > > > > > >>>> > > > > > > > >>>> > > > > > > > >>>> > > > > > > -- > >>>> > > > > > > Florian HUSSONNOIS > >>>> > > > > > > > >>>> > > > > > > >>>> > > > > > >>>> > > > > > >>>> > > > > > >>>> > > > > -- > >>>> > > > > -- Guozhang > >>>> > > > > > >>>> > > > > >>>> > > > > >>>> > > > > >>>> > > > -- > >>>> > > > Florian HUSSONNOIS > >>>> > > > > >>>> > > > >>>> > > > >>>> > > > >>>> > > -- > >>>> > > -- Guozhang > >>>> > > > >>>> > > >>>> > > >>>> > > >>>> > -- > >>>> > Florian HUSSONNOIS > >>>> > > >>>> > > >>>> > > >>>> > > >>>> > -- > >>>> > -- Guozhang > >>>> > >>>> > >>>> > >>>> > >>>> -- > >>>> -- Guozhang > >>>> > >>>> > >>>> > >>>> > >>>> -- > >>>> Florian HUSSONNOIS > >>>> > >>>> > >>>> > >>>> > >>>> -- > >>>> Florian HUSSONNOIS > >>> > >> > >> > > > > -- Florian HUSSONNOIS