Hi Harsha/Satish, Thanks for the discussion today. Here is a link to the KIP-405 development milestones google doc we discussed in the meeting today: https://docs.google.com/document/d/1B5_jaZvWWb2DUpgbgImq0k_IPZ4DWrR8Ru7YpuJrXdc/edit . I have shared it with you. Please have a look and share your feedback/improvements. As we discussed, things are clear until milestone 1. Beyond that, we can discuss it again (perhaps in next sync or later), once you have thought through the implementation plan/milestones and release into preview in 3.0.
Cheers, Kowshik On Tue, Nov 10, 2020 at 6:56 AM Satish Duggana <satish.dugg...@gmail.com> wrote: > Hi Jun, > Thanks for your comments. Please find the inline replies below. > > 605.2 "Build the local leader epoch cache by cutting the leader epoch > sequence received from remote storage to [LSO, ELO]." I mentioned an issue > earlier. Suppose the leader's local start offset is 100. The follower finds > a remote segment covering offset range [80, 120). The producerState with > this remote segment is up to offset 120. To trim the producerState to > offset 100 requires more work since one needs to download the previous > producerState up to offset 80 and then replay the messages from 80 to 100. > It seems that it's simpler in this case for the follower just to take the > remote segment as it is and start fetching from offset 120. > > We chose that approach to avoid any edge cases here. It may be > possible that the remote log segment that is received may not have the > same leader epoch sequence from 100-120 as it contains on the > leader(this can happen due to unclean leader). It is safe to start > from what the leader returns here.Another way is to find the remote > log segment > > 5016. Just to echo what Kowshik was saying. It seems that > RLMM.onPartitionLeadershipChanges() is only called on the replicas for a > partition, not on the replicas for the __remote_log_segment_metadata > partition. It's not clear how the leader of __remote_log_segment_metadata > obtains the metadata for remote segments for deletion. > > RLMM will always receive the callback for the remote log metadata > topic partitions hosted on the local broker and these will be > subscribed. I will make this clear in the KIP. > > 5100. KIP-516 has been accepted and is being implemented now. Could you > update the KIP based on topicID? > > We mentioned KIP-516 and how it helps. We will update this KIP with > all the changes it brings with KIP-516. > > 5101. RLMM: It would be useful to clarify how the following two APIs are > used. According to the wiki, the former is used for topic deletion and the > latter is used for retention. It seems that retention should use the former > since remote segments without a matching epoch in the leader (potentially > due to unclean leader election) also need to be garbage collected. The > latter seems to be used for the new leader to determine the last tiered > segment. > default Iterator<RemoteLogSegmentMetadata> > listRemoteLogSegments(TopicPartition topicPartition) > Iterator<RemoteLogSegmentMetadata> listRemoteLogSegments(TopicPartition > topicPartition, long leaderEpoch); > > Right,.that is what we are currently doing. We will update the > javadocs and wiki with that. Earlier, we did not want to remove the > segments which are not matched with leader epochs from the ladder > partition as they may be used later by a replica which can become a > leader (unclean leader election) and refer those segments. But that > may leak these segments in remote storage until the topic lifetime. We > decided to cleanup the segments with the oldest incase of size based > retention also. > > 5102. RSM: > 5102.1 For methods like fetchLogSegmentData(), it seems that they can > use RemoteLogSegmentId instead of RemoteLogSegmentMetadata. > > It will be useful to have metadata for RSM to fetch log segment. It > may create location/path using id with other metadata too. > > 5102.2 In fetchLogSegmentData(), should we use long instead of Long? > > Wanted to keep endPosition as optional to read till the end of the > segment and avoid sentinels. > > 5102.3 Why only some of the methods have default implementation and others > Don't? > > Actually, RSM will not have any default implementations. Those 3 > methods were made default earlier for tests etc. Updated the wiki. > > 5102.4. Could we define RemoteLogSegmentMetadataUpdate > and DeletePartitionUpdate? > > Sure, they will be added. > > > 5102.5 LogSegmentData: It seems that it's easier to pass > in leaderEpochIndex as a ByteBuffer or byte array than a file since it will > be generated in memory. > > Right, this is in plan. > > 5102.6 RemoteLogSegmentMetadata: It seems that it needs both baseOffset and > startOffset. For example, deleteRecords() could move the startOffset to the > middle of a segment. If we copy the full segment to remote storage, the > baseOffset and the startOffset will be different. > > Good point. startOffset is baseOffset by default, if not set explicitly. > > 5102.7 Could we define all the public methods for RemoteLogSegmentMetadata > and LogSegmentData? > > Sure, updated the wiki. > > 5102.8 Could we document whether endOffset in RemoteLogSegmentMetadata is > inclusive/exclusive? > > It is inclusive, will update. > > 5103. configs: > 5103.1 Could we define the default value of non-required configs (e.g the > size of new thread pools)? > > Sure, that makes sense. > > 5103.2 It seems that local.log.retention.ms should default to retention.ms > , > instead of remote.log.retention.minutes. Similarly, it seems > that local.log.retention.bytes should default to segment.bytes. > > Right, we do not have remote.log.retention as we discussed earlier. > Thanks for catching the typo. > > 5103.3 remote.log.manager.thread.pool.size: The description says "used in > scheduling tasks to copy segments, fetch remote log indexes and clean up > remote log segments". However, there is a separate > config remote.log.reader.threads for fetching remote data. It's weird to > fetch remote index and log in different thread pools since both are used > for serving fetch requests. > > Right, remote.log.manager.thread.pool is mainly used for copy/cleanup > activities. Fetch path always goes through remote.log.reader.threads. > > 5103.4 remote.log.manager.task.interval.ms: Is that the amount of time to > back off when there is no work to do? If so, perhaps it can be renamed as > backoff.ms. > > This is the delay interval for each iteration. It may be renamed to > remote.log.manager.task.delay.ms > > 5103.5 Are rlm_process_interval_ms and rlm_retry_interval_ms configs? If > so, they need to be listed in this section. > > remote.log.manager.task.interval.ms is the process internal, retry > interval is missing in the configs, which will be updated in the KIP. > > 5104. "RLM maintains a bounded cache(possibly LRU) of the index files of > remote log segments to avoid multiple index fetches from the remote > storage." Is the RLM in memory or on disk? If on disk, where is it stored? > Do we need a configuration to bound the size? > > It is stored on disk. They are stored in a directory > `remote-log-index-cache` under log dir. We plan to have a config for > that instead of default. We will have a configuration for that. > > 5105. The KIP uses local-log-start-offset and Earliest Local Offset in > different places. It would be useful to standardize the terminology. > > Sure. > > 5106. The section on "In BuildingRemoteLogAux state". It listed two options > without saying which option is chosen. > We already mentioned in the KIP that we chose option-2. > > 5107. Follower to leader transition: It has step 2, but not step 1. > Step-1 is there but it is not explicitly highlighted. It is previous > table to step-2. > > 5108. If a consumer fetches from the remote data and the remote storage is > not available, what error code is used in the fetch response? > > Good point. We have not yet defined the error for this case. We need > to define an error message and send the same in fetch response. > > 5109. "ListOffsets: For timestamps >= 0, it returns the first message > offset whose timestamp is >= to the given timestamp in the request. That > means it checks in remote log time indexes first, after which local log > time indexes are checked." Could you document which method in RLMM is used > for this? > > Okay. > > 5110. Stopreplica: "it sets all the remote log segment metadata of that > partition with a delete marker and publishes them to RLMM." This seems > outdated given the new topic deletion logic. > > Will update with KIP-516 related points. > > 5111. "RLM follower fetches the earliest offset for the earliest leader > epoch by calling RLMM.earliestLogOffset(TopicPartition topicPartition, int > leaderEpoch) and updates that as the log start offset." Do we need that > since replication propagates logStartOffset already? > > Good point. Right, existing replication protocol takes care of > updating the followers’s log start offset received from the leader. > > 5112. Is the default maxWaitMs of 500ms enough for fetching from remote > storage? > > Remote reads may fail within the current default wait time, but > subsequent fetches would be able to serve as that data is stored in > the local cache. This cache is currently implemented in RSMs. But we > plan to pull this into the remote log messaging layer in future. > > 5113. "Committed offsets can be stored in a local file to avoid reading the > messages again when a broker is restarted." Could you describe the format > and the location of the file? Also, could the same message be processed by > RLMM again after broker restart? If so, how do we handle that? > > Sure, we will update in the KIP. > > 5114. Message format > 5114.1 There are two records named RemoteLogSegmentMetadataRecord with > apiKey 0 and 1. > > Nice catch, that was a typo. Fixed in the wiki. > > 5114.2 RemoteLogSegmentMetadataRecord: Could we document whether endOffset > is inclusive/exclusive? > It is inclusive, will update. > > 5114.3 RemoteLogSegmentMetadataRecord: Could you explain LeaderEpoch a bit > more? Is that the epoch of the leader when it copies the segment to remote > storage? Also, how will this field be used? > > Right, this is the leader epoch of the broker which copied this > segment. This is helpful in reason about which broker copied the > segment to remote storage. > > 5114.4 EventTimestamp: Could you explain this a bit more? Each record in > Kafka already has a timestamp field. Could we just use that? > > This is the timestamp at which the respective event occurred. Added > this to RemoteLogSegmentMetadata as RLMM can be any other > implementation. We thought about that but it looked cleaner to use at > the message structure level instead of getting that from the consumer > record and using that to build the respective event. > > > 5114.5 SegmentSizeInBytes: Could this just be int32? > > Right, it looks like config allows only int value >= 14. > > 5115. RemoteLogCleaner(RLC): This could be confused with the log cleaner > for compaction. Perhaps it can be renamed to sth like > RemotePartitionRemover. > > I am fine with RemotePartitionRemover or RemoteLogDeletionManager(we > have other manager classes like RLM, RLMM). > > 5116. "RLC receives the delete_partition_marked and processes it if it is > not yet processed earlier." How does it know whether > delete_partition_marked has been processed earlier? > > This is to handle duplicate delete_partition_marked events. RLC > internally maintains a state for the delete_partition events and if it > already has an existing event then it ignores if it is already being > processed. > > 5117. Should we add a new MessageFormatter to read the tier metadata topic? > > Right, this is in plan but did not mention it in the KIP. This will be > useful for debugging purposes too. > > 5118. "Maximum remote log reader thread pool task queue size. If the task > queue is full, broker will stop reading remote log segments." What do we > return to the fetch request in this case? > > We return an error response for that partition. > > 5119. It would be useful to list all things not supported in the first > version in a Future work or Limitations section. For example, compacted > topic, JBOD, changing remote.log.storage.enable from true to false, etc. > > We already have a non-goals section which is filled with some of these > details. Do we need another limitations section? > > Thanks, > Satish. > > On Wed, Nov 4, 2020 at 11:27 PM Jun Rao <j...@confluent.io> wrote: > > > > Hi, Satish, > > > > Thanks for the updated KIP. A few more comments below. > > > > 605.2 "Build the local leader epoch cache by cutting the leader epoch > > sequence received from remote storage to [LSO, ELO]." I mentioned an > issue > > earlier. Suppose the leader's local start offset is 100. The follower > finds > > a remote segment covering offset range [80, 120). The producerState with > > this remote segment is up to offset 120. To trim the producerState to > > offset 100 requires more work since one needs to download the previous > > producerState up to offset 80 and then replay the messages from 80 to > 100. > > It seems that it's simpler in this case for the follower just to take the > > remote segment as it is and start fetching from offset 120. > > > > 5016. Just to echo what Kowshik was saying. It seems that > > RLMM.onPartitionLeadershipChanges() is only called on the replicas for a > > partition, not on the replicas for the __remote_log_segment_metadata > > partition. It's not clear how the leader of __remote_log_segment_metadata > > obtains the metadata for remote segments for deletion. > > > > 5100. KIP-516 has been accepted and is being implemented now. Could you > > update the KIP based on topicID? > > > > 5101. RLMM: It would be useful to clarify how the following two APIs are > > used. According to the wiki, the former is used for topic deletion and > the > > latter is used for retention. It seems that retention should use the > former > > since remote segments without a matching epoch in the leader (potentially > > due to unclean leader election) also need to be garbage collected. The > > latter seems to be used for the new leader to determine the last tiered > > segment. > > default Iterator<RemoteLogSegmentMetadata> > > listRemoteLogSegments(TopicPartition topicPartition) > > Iterator<RemoteLogSegmentMetadata> > listRemoteLogSegments(TopicPartition > > topicPartition, long leaderEpoch); > > > > 5102. RSM: > > 5102.1 For methods like fetchLogSegmentData(), it seems that they can > > use RemoteLogSegmentId instead of RemoteLogSegmentMetadata. > > 5102.2 In fetchLogSegmentData(), should we use long instead of Long? > > 5102.3 Why only some of the methods have default implementation and > others > > don't? > > 5102.4. Could we define RemoteLogSegmentMetadataUpdate > > and DeletePartitionUpdate? > > 5102.5 LogSegmentData: It seems that it's easier to pass > > in leaderEpochIndex as a ByteBuffer or byte array than a file since it > will > > be generated in memory. > > 5102.6 RemoteLogSegmentMetadata: It seems that it needs both baseOffset > and > > startOffset. For example, deleteRecords() could move the startOffset to > the > > middle of a segment. If we copy the full segment to remote storage, the > > baseOffset and the startOffset will be different. > > 5102.7 Could we define all the public methods for > RemoteLogSegmentMetadata > > and LogSegmentData? > > 5102.8 Could we document whether endOffset in RemoteLogSegmentMetadata is > > inclusive/exclusive? > > > > 5103. configs: > > 5103.1 Could we define the default value of non-required configs (e.g the > > size of new thread pools)? > > 5103.2 It seems that local.log.retention.ms should default to > retention.ms, > > instead of remote.log.retention.minutes. Similarly, it seems > > that local.log.retention.bytes should default to segment.bytes. > > 5103.3 remote.log.manager.thread.pool.size: The description says "used in > > scheduling tasks to copy segments, fetch remote log indexes and clean up > > remote log segments". However, there is a separate > > config remote.log.reader.threads for fetching remote data. It's weird to > > fetch remote index and log in different thread pools since both are used > > for serving fetch requests. > > 5103.4 remote.log.manager.task.interval.ms: Is that the amount of time > to > > back off when there is no work to do? If so, perhaps it can be renamed as > > backoff.ms. > > 5103.5 Are rlm_process_interval_ms and rlm_retry_interval_ms configs? If > > so, they need to be listed in this section. > > > > 5104. "RLM maintains a bounded cache(possibly LRU) of the index files of > > remote log segments to avoid multiple index fetches from the remote > > storage." Is the RLM in memory or on disk? If on disk, where is it > stored? > > Do we need a configuration to bound the size? > > > > 5105. The KIP uses local-log-start-offset and Earliest Local Offset in > > different places. It would be useful to standardize the terminology. > > > > 5106. The section on "In BuildingRemoteLogAux state". It listed two > options > > without saying which option is chosen. > > > > 5107. Follower to leader transition: It has step 2, but not step 1. > > > > 5108. If a consumer fetches from the remote data and the remote storage > is > > not available, what error code is used in the fetch response? > > > > 5109. "ListOffsets: For timestamps >= 0, it returns the first message > > offset whose timestamp is >= to the given timestamp in the request. That > > means it checks in remote log time indexes first, after which local log > > time indexes are checked." Could you document which method in RLMM is > used > > for this? > > > > 5110. Stopreplica: "it sets all the remote log segment metadata of that > > partition with a delete marker and publishes them to RLMM." This seems > > outdated given the new topic deletion logic. > > > > 5111. "RLM follower fetches the earliest offset for the earliest leader > > epoch by calling RLMM.earliestLogOffset(TopicPartition topicPartition, > int > > leaderEpoch) and updates that as the log start offset." Do we need that > > since replication propagates logStartOffset already? > > > > 5112. Is the default maxWaitMs of 500ms enough for fetching from remote > > storage? > > > > 5113. "Committed offsets can be stored in a local file to avoid reading > the > > messages again when a broker is restarted." Could you describe the format > > and the location of the file? Also, could the same message be processed > by > > RLMM again after broker restart? If so, how do we handle that? > > > > 5114. Message format > > 5114.1 There are two records named RemoteLogSegmentMetadataRecord with > > apiKey 0 and 1. > > 5114.2 RemoteLogSegmentMetadataRecord: Could we document whether > endOffset > > is inclusive/exclusive? > > 5114.3 RemoteLogSegmentMetadataRecord: Could you explain LeaderEpoch a > bit > > more? Is that the epoch of the leader when it copies the segment to > remote > > storage? Also, how will this field be used? > > 5114.4 EventTimestamp: Could you explain this a bit more? Each record in > > Kafka already has a timestamp field. Could we just use that? > > 5114.5 SegmentSizeInBytes: Could this just be int32? > > > > 5115. RemoteLogCleaner(RLC): This could be confused with the log cleaner > > for compaction. Perhaps it can be renamed to sth like > > RemotePartitionRemover. > > > > 5116. "RLC receives the delete_partition_marked and processes it if it is > > not yet processed earlier." How does it know whether > > delete_partition_marked has been processed earlier? > > > > 5117. Should we add a new MessageFormatter to read the tier metadata > topic? > > > > 5118. "Maximum remote log reader thread pool task queue size. If the task > > queue is full, broker will stop reading remote log segments." What do we > > return to the fetch request in this case? > > > > 5119. It would be useful to list all things not supported in the first > > version in a Future work or Limitations section. For example, compacted > > topic, JBOD, changing remote.log.storage.enable from true to false, etc. > > > > Thanks, > > > > Jun > > > > On Tue, Oct 27, 2020 at 5:57 PM Kowshik Prakasam <kpraka...@confluent.io > > > > wrote: > > > > > Hi Satish, > > > > > > Thanks for the updates to the KIP. Here are my first batch of > > > comments/suggestions on the latest version of the KIP. > > > > > > 5012. In the RemoteStorageManager interface, there is an API defined > for > > > each file type. For example, fetchOffsetIndex, fetchTimestampIndex > etc. To > > > avoid the duplication, I'd suggest we can instead have a FileType enum > and > > > a common get API based on the FileType. > > > > > > 5013. There are some references to the Google doc in the KIP. I wasn't > sure > > > if the Google doc is expected to be in sync with the contents of the > wiki. > > > Going forward, it seems easier if just the KIP is maintained as the > source > > > of truth. In this regard, could you please move all the references to > the > > > Google doc, maybe to a separate References section at the bottom of the > > > KIP? > > > > > > 5014. There are some TODO sections in the KIP. Would these be filled > up in > > > future iterations? > > > > > > 5015. Under "Topic deletion lifecycle", I'm trying to understand why > do we > > > need delete_partition_marked as well as the delete_partition_started > > > messages. I couldn't spot a drawback if supposing we simplified the > design > > > such that the controller would only write delete_partition_started > message, > > > and RemoteLogCleaner (RLC) instance picks it up for processing. What > am I > > > missing? > > > > > > 5016. Under "Topic deletion lifecycle", step (4) is mentioned as "RLC > gets > > > all the remote log segments for the partition and each of these remote > log > > > segments is deleted with the next steps.". Since the RLC instance runs > on > > > each tier topic partition leader, how does the RLC then get the list of > > > remote log segments to be deleted? It will be useful to add that > detail to > > > the KIP. > > > > > > 5017. Under "Public Interfaces -> Configs", there is a line mentioning > "We > > > will support flipping remote.log.storage.enable in next versions." It > will > > > be useful to mention this in the "Future Work" section of the KIP too. > > > > > > 5018. The KIP introduces a number of configuration parameters. It will > be > > > useful to mention in the KIP if the user should assume these as static > > > configuration in the server.properties file, or dynamic configuration > which > > > can be modified without restarting the broker. > > > > > > 5019. Maybe this is planned as a future update to the KIP, but I > thought > > > I'd mention it here. Could you please add details to the KIP on why > RocksDB > > > was chosen as the default cache implementation of RLMM, and how it is > going > > > to be used? Were alternatives compared/considered? For example, it > would be > > > useful to explain/evaluate the following: 1) debuggability of the > RocksDB > > > JNI interface, 2) performance, 3) portability across platforms and 4) > > > interface parity of RocksDB’s JNI api with it's underlying C/C++ api. > > > > > > 5020. Following up on (5019), for the RocksDB cache, it will be useful > to > > > explain the relationship/mapping between the following in the KIP: 1) > # of > > > tiered partitions, 2) # of partitions of metadata topic > > > __remote_log_metadata and 3) # of RocksDB instances. i.e. is the plan > to > > > have a RocksDB instance per tiered partition, or per metadata topic > > > partition, or just 1 for per broker? > > > > > > 5021. I was looking at the implementation prototype (PR link: > > > https://github.com/apache/kafka/pull/7561). It seems that a boolean > > > attribute is being introduced into the Log layer to check if remote log > > > capability is enabled. While the boolean footprint is small at the > moment, > > > this can easily grow in the future and become harder to > > > test/maintain, considering that the Log layer is already pretty > complex. We > > > should start thinking about how to manage such changes to the Log layer > > > (for the purpose of improved testability, better separation of > concerns and > > > readability). One proposal I have is to take a step back and define a > > > higher level Log interface. Then, the Broker code can be changed to use > > > this interface. It can be changed such that only a handle to the > interface > > > is exposed to other components (such as LogCleaner, ReplicaManager > etc.) > > > and not the underlying Log object. This approach keeps the user of the > Log > > > layer agnostic of the whereabouts of the data. Underneath the > interface, > > > the implementing classes can completely separate local log capabilities > > > from the remote log. For example, the Log class can be simplified to > only > > > manage logic surrounding local log segments and metadata. > Additionally, a > > > wrapper class can be provided (implementing the higher level Log > interface) > > > which will contain any/all logic surrounding tiered data. The wrapper > > > class will wrap around an instance of the Log class delegating the > local > > > log logic to it. Finally, a handle to the wrapper class can be exposed > to > > > the other components wherever they need a handle to the higher level > Log > > > interface. > > > > > > > > > Cheers, > > > Kowshik > > > > > > On Mon, Oct 26, 2020 at 9:52 PM Satish Duggana < > satish.dugg...@gmail.com> > > > wrote: > > > > > > > Hi, > > > > KIP is updated with 1) topic deletion lifecycle and its related items > > > > 2) Protocol changes(mainly related to ListOffsets) and other minor > > > > changes. > > > > Please go through them and let us know your comments. > > > > > > > > Thanks, > > > > Satish. > > > > > > > > On Mon, Sep 28, 2020 at 9:10 PM Satish Duggana < > satish.dugg...@gmail.com > > > > > > > > wrote: > > > > > > > > > > Hi Dhruvil, > > > > > Thanks for looking into the KIP and sending your comments. Sorry > for > > > > > the late reply, missed it in the mail thread. > > > > > > > > > > 1. Could you describe how retention would work with this KIP and > which > > > > > threads are responsible for driving this work? I believe there are > 3 > > > > kinds > > > > > of retention processes we are looking at: > > > > > (a) Regular retention for data in tiered storage as per > configured ` > > > > > retention.ms` / `retention.bytes`. > > > > > (b) Local retention for data in local storage as per configured ` > > > > > local.log.retention.ms` / `local.log.retention.bytes` > > > > > (c) Possibly regular retention for data in local storage, if the > > > > tiering > > > > > task is lagging or for data that is below the log start offset. > > > > > > > > > > Local log retention is done by the existing log cleanup tasks. > These > > > > > are not done for segments that are not yet copied to remote > storage. > > > > > Remote log cleanup is done by the leader partition’s RLMTask. > > > > > > > > > > 2. When does a segment become eligible to be tiered? Is it as soon > as > > > the > > > > > segment is rolled and the end offset is less than the last stable > > > offset > > > > as > > > > > mentioned in the KIP? I wonder if we need to consider other > parameters > > > > too, > > > > > like the highwatermark so that we are guaranteed that what we are > > > tiering > > > > > has been committed to the log and accepted by the ISR. > > > > > > > > > > AFAIK, last stable offset is always <= highwatermark. This will > make > > > > > sure we are always tiering the message segments which have been > > > > > accepted by ISR and transactionally completed. > > > > > > > > > > > > > > > 3. The section on "Follower Fetch Scenarios" is useful but is a bit > > > > > difficult to parse at the moment. It would be useful to summarize > the > > > > > changes we need in the ReplicaFetcher. > > > > > > > > > > It may become difficult for users to read/follow if we add code > changes > > > > here. > > > > > > > > > > 4. Related to the above, it's a bit unclear how we are planning on > > > > > restoring the producer state for a new replica. Could you expand on > > > that? > > > > > > > > > > It is mentioned in the KIP BuildingRemoteLogAuxState is introduced > to > > > > > build the state like leader epoch sequence and producer snapshots > > > > > before it starts fetching the data from the leader. We will make it > > > > > clear in the KIP. > > > > > > > > > > > > > > > 5. Similarly, it would be worth summarizing the behavior on unclean > > > > leader > > > > > election. There are several scenarios to consider here: data loss > from > > > > > local log, data loss from remote log, data loss from metadata > topic, > > > etc. > > > > > It's worth describing these in detail. > > > > > > > > > > We mentioned the cases about unclean leader election in the > follower > > > > > fetch scenarios. > > > > > If there are errors while fetching data from remote store or > metadata > > > > > store, it will work the same way as it works with local log. It > > > > > returns the error back to the caller. Please let us know if I am > > > > > missing your point here. > > > > > > > > > > > > > > > 7. For a READ_COMMITTED FetchRequest, how do we retrieve and > return the > > > > > aborted transaction metadata? > > > > > > > > > > When a fetch for a remote log is accessed, we will fetch aborted > > > > > transactions along with the segment if it is not found in the local > > > > > index cache. This includes the case of transaction index not > existing > > > > > in the remote log segment. That means, the cache entry can be > empty or > > > > > have a list of aborted transactions. > > > > > > > > > > > > > > > 8. The `LogSegmentData` class assumes that we have a log segment, > > > offset > > > > > index, time index, transaction index, producer snapshot and leader > > > epoch > > > > > index. How do we deal with cases where we do not have one or more > of > > > > these? > > > > > For example, we may not have a transaction index or producer > snapshot > > > > for a > > > > > particular segment. The former is optional, and the latter is only > kept > > > > for > > > > > up to the 3 latest segments. > > > > > > > > > > This is a good point, we discussed this in the last meeting. > > > > > Transaction index is optional and we will copy them only if it > exists. > > > > > We want to keep all the producer snapshots at each log segment > rolling > > > > > and they can be removed if the log copying is successful and it > still > > > > > maintains the existing latest 3 segments, We only delete the > producer > > > > > snapshots which have been copied to remote log segments on leader. > > > > > Follower will keep the log segments beyond the segments which have > not > > > > > been copied to remote storage. We will update the KIP with these > > > > > details. > > > > > > > > > > Thanks, > > > > > Satish. > > > > > > > > > > On Thu, Sep 17, 2020 at 1:47 AM Dhruvil Shah <dhru...@confluent.io > > > > > > wrote: > > > > > > > > > > > > Hi Satish, Harsha, > > > > > > > > > > > > Thanks for the KIP. Few questions below: > > > > > > > > > > > > 1. Could you describe how retention would work with this KIP and > > > which > > > > > > threads are responsible for driving this work? I believe there > are 3 > > > > kinds > > > > > > of retention processes we are looking at: > > > > > > (a) Regular retention for data in tiered storage as per > configured > > > ` > > > > > > retention.ms` / `retention.bytes`. > > > > > > (b) Local retention for data in local storage as per > configured ` > > > > > > local.log.retention.ms` / `local.log.retention.bytes` > > > > > > (c) Possibly regular retention for data in local storage, if > the > > > > tiering > > > > > > task is lagging or for data that is below the log start offset. > > > > > > > > > > > > 2. When does a segment become eligible to be tiered? Is it as > soon as > > > > the > > > > > > segment is rolled and the end offset is less than the last stable > > > > offset as > > > > > > mentioned in the KIP? I wonder if we need to consider other > > > parameters > > > > too, > > > > > > like the highwatermark so that we are guaranteed that what we are > > > > tiering > > > > > > has been committed to the log and accepted by the ISR. > > > > > > > > > > > > 3. The section on "Follower Fetch Scenarios" is useful but is a > bit > > > > > > difficult to parse at the moment. It would be useful to > summarize the > > > > > > changes we need in the ReplicaFetcher. > > > > > > > > > > > > 4. Related to the above, it's a bit unclear how we are planning > on > > > > > > restoring the producer state for a new replica. Could you expand > on > > > > that? > > > > > > > > > > > > 5. Similarly, it would be worth summarizing the behavior on > unclean > > > > leader > > > > > > election. There are several scenarios to consider here: data loss > > > from > > > > > > local log, data loss from remote log, data loss from metadata > topic, > > > > etc. > > > > > > It's worth describing these in detail. > > > > > > > > > > > > 6. It would be useful to add details about how we plan on using > > > > RocksDB in > > > > > > the default implementation of `RemoteLogMetadataManager`. > > > > > > > > > > > > 7. For a READ_COMMITTED FetchRequest, how do we retrieve and > return > > > the > > > > > > aborted transaction metadata? > > > > > > > > > > > > 8. The `LogSegmentData` class assumes that we have a log segment, > > > > offset > > > > > > index, time index, transaction index, producer snapshot and > leader > > > > epoch > > > > > > index. How do we deal with cases where we do not have one or > more of > > > > these? > > > > > > For example, we may not have a transaction index or producer > snapshot > > > > for a > > > > > > particular segment. The former is optional, and the latter is > only > > > > kept for > > > > > > up to the 3 latest segments. > > > > > > > > > > > > Thanks, > > > > > > Dhruvil > > > > > > > > > > > > On Mon, Sep 7, 2020 at 6:54 PM Harsha Ch <harsha...@gmail.com> > > > wrote: > > > > > > > > > > > > > Hi All, > > > > > > > > > > > > > > We are all working through the last meeting feedback. I'll > cancel > > > the > > > > > > > tomorrow 's meeting and we can meanwhile continue our > discussion in > > > > mailing > > > > > > > list. We can start the regular meeting from next week onwards. > > > > > > > > > > > > > > Thanks, > > > > > > > > > > > > > > Harsha > > > > > > > > > > > > > > On Fri, Sep 04, 2020 at 8:41 AM, Satish Duggana < > > > > satish.dugg...@gmail.com > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi Jun, > > > > > > > > Thanks for your thorough review and comments. Please find the > > > > inline > > > > > > > > replies below. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 600. The topic deletion logic needs more details. > > > > > > > > 600.1 The KIP mentions "The controller considers the topic > > > > partition is > > > > > > > > deleted only when it determines that there are no log > segments > > > for > > > > that > > > > > > > > topic partition by using RLMM". How is this done? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > It uses RLMM#listSegments() returns all the segments for the > > > given > > > > topic > > > > > > > > partition. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 600.2 "If the delete option is enabled then the leader will > stop > > > > RLM task > > > > > > > > and stop processing and it sets all the remote log segment > > > > metadata of > > > > > > > > that partition with a delete marker and publishes them to > RLMM." > > > We > > > > > > > > discussed this earlier. When a topic is being deleted, there > may > > > > not be a > > > > > > > > leader for the deleted partition. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > This is a good point. As suggested in the meeting, we will > add a > > > > separate > > > > > > > > section for topic/partition deletion lifecycle and this > scenario > > > > will be > > > > > > > > addressed. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 601. Unclean leader election > > > > > > > > 601.1 Scenario 1: new empty follower > > > > > > > > After step 1, the follower restores up to offset 3. So why > does > > > it > > > > have > > > > > > > > LE-2 <https://issues.apache.org/jira/browse/LE-2> at offset > 5? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Nice catch. It was showing the leader epoch fetched from the > > > remote > > > > > > > > storage. It should be shown with the truncated till offset 3. > > > > Updated the > > > > > > > > KIP. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 601.2 senario 5: After Step 3, leader A has inconsistent data > > > > between its > > > > > > > > local and the tiered data. For example. offset 3 has msg 3 > LE-0 > > > > <https://issues.apache.org/jira/browse/LE-0> locally, > > > > > > > > but msg 5 LE-1 <https://issues.apache.org/jira/browse/LE-1> > in > > > > the remote store. While it's ok for the unclean leader > > > > > > > > to lose data, it should still return consistent data, whether > > > it's > > > > from > > > > > > > > the local or the remote store. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > There is no inconsistency here as LE-0 > > > > <https://issues.apache.org/jira/browse/LE-0> offsets are [0, 4] and > LE-2 > > > > <https://issues.apache.org/jira/browse/LE-2>: > > > > > > > > [5, ]. It will always get the right records for the given > offset > > > > and > > > > > > > > leader epoch. In case of remote, RSM is invoked to get the > remote > > > > log > > > > > > > > segment that contains the given offset with the leader epoch. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 601.4 It seems that retention is based on > > > > > > > > listRemoteLogSegments(TopicPartition topicPartition, long > > > > leaderEpoch). > > > > > > > > When there is an unclean leader election, it's possible for > the > > > new > > > > > > > leader > > > > > > > > to not to include certain epochs in its epoch cache. How are > > > remote > > > > > > > > segments associated with those epochs being cleaned? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > That is a good point. This leader will also cleanup the > epochs > > > > earlier to > > > > > > > > its start leader epoch and delete those segments. It gets the > > > > earliest > > > > > > > > epoch for a partition and starts deleting segments from that > > > leader > > > > > > > epoch. > > > > > > > > We need one more API in RLMM to get the earliest leader > epoch. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 601.5 The KIP discusses the handling of unclean leader > elections > > > > for user > > > > > > > > topics. What about unclean leader elections on > > > > > > > > __remote_log_segment_metadata? > > > > > > > > This is the same as other system topics like > consumer_offsets, > > > > > > > > __transaction_state topics. As discussed in the meeting, we > will > > > > add the > > > > > > > > behavior of __remote_log_segment_metadata topic’s unclean > leader > > > > > > > > truncation. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 602. It would be useful to clarify the limitations in the > initial > > > > > > > release. > > > > > > > > The KIP mentions not supporting compacted topics. What about > JBOD > > > > and > > > > > > > > changing the configuration of a topic from delete to compact > > > after > > > > > > > remote. > > > > > > > > log. storage. enable ( http://remote.log.storage.enable/ ) > is > > > > enabled? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > This was updated in the KIP earlier. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 603. RLM leader tasks: > > > > > > > > 603.1"It checks for rolled over LogSegments (which have the > last > > > > message > > > > > > > > offset less than last stable offset of that topic partition) > and > > > > copies > > > > > > > > them along with their offset/time/transaction indexes and > leader > > > > epoch > > > > > > > > cache to the remote tier." It needs to copy the producer > snapshot > > > > too. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Right. It copies producer snapshots too as mentioned in > > > > LogSegmentData. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 603.2 "Local logs are not cleaned up till those segments are > > > copied > > > > > > > > successfully to remote even though their retention time/size > is > > > > reached" > > > > > > > > This seems weird. If the tiering stops because the remote > store > > > is > > > > not > > > > > > > > available, we don't want the local data to grow forever. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > It was clarified in the discussion that the comment was more > > > about > > > > the > > > > > > > > local storage goes beyond the log.retention. The above > statement > > > > is about > > > > > > > > local.log.retention but not for the complete log.retention. > When > > > it > > > > > > > > reaches the log.retention then it will delete the local logs > even > > > > though > > > > > > > > those are not copied to remote storage. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 604. "RLM maintains a bounded cache(possibly LRU) of the > index > > > > files of > > > > > > > > remote log segments to avoid multiple index fetches from the > > > remote > > > > > > > > storage. These indexes can be used in the same way as local > > > segment > > > > > > > > indexes are used." Could you provide more details on this? > Are > > > the > > > > > > > indexes > > > > > > > > cached in memory or on disk? If on disk, where are they > stored? > > > > Are the > > > > > > > > cached indexes bound by a certain size? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > These are cached on disk and stored in log.dir with a name > > > > > > > > “__remote_log_index_cache”. They are bound by the total size. > > > This > > > > will > > > > > > > be > > > > > > > > exposed as a user configuration, > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 605. BuildingRemoteLogAux > > > > > > > > 605.1 In this section, two options are listed. Which one is > > > chosen? > > > > > > > > Option-2, updated the KIP. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 605.2 In option 2, it says "Build the local leader epoch > cache by > > > > cutting > > > > > > > > the leader epoch sequence received from remote storage to > [LSO, > > > > ELO]. > > > > > > > (LSO > > > > > > > > > > > > > > > > = log start offset)." We need to do the same thing for the > > > producer > > > > > > > > snapshot. However, it's hard to cut the producer snapshot to > an > > > > earlier > > > > > > > > offset. Another option is to simply take the lastOffset from > the > > > > remote > > > > > > > > segment and use that as the starting fetch offset in the > > > follower. > > > > This > > > > > > > > avoids the need for cutting. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Right, this was mentioned in the “transactional support” > section > > > > about > > > > > > > > adding these details. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 606. ListOffsets: Since we need a version bump, could you > > > document > > > > it > > > > > > > > under a protocol change section? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Sure, we will update the KIP. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 607. "LogStartOffset of a topic can point to either of local > > > > segment or > > > > > > > > remote segment but it is initialised and maintained in the > Log > > > > class like > > > > > > > > now. This is already maintained in `Log` class while loading > the > > > > logs and > > > > > > > > it can also be fetched from RemoteLogMetadataManager." What > will > > > > happen > > > > > > > to > > > > > > > > the existing logic (e.g. log recovery) that currently > depends on > > > > > > > > logStartOffset but assumes it's local? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > They use a field called localLogStartOffset which is the > local > > > log > > > > start > > > > > > > > offset.. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 608. Handle expired remote segment: How does it pick up new > > > > > > > logStartOffset > > > > > > > > from deleteRecords? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Good point. This was not addressed in the KIP. Will update > the > > > KIP > > > > on how > > > > > > > > the RLM task handles this scenario. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 609. RLMM message format: > > > > > > > > 609.1 It includes both MaxTimestamp and EventTimestamp. Where > > > does > > > > it get > > > > > > > > both since the message in the log only contains one > timestamp? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > `EventTimeStamp` is the timestamp at which that segment > metadata > > > > event is > > > > > > > > generated. This is more for audits. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 609.2 If we change just the state (e.g. to DELETE_STARTED), > it > > > > seems it's > > > > > > > > wasteful to have to include all other fields not changed. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > This is a good point. We thought about incremental updates. > But > > > we > > > > want > > > > > > > to > > > > > > > > make sure all the events are in the expected order and take > > > action > > > > based > > > > > > > > on the latest event. Will think through the approaches in > detail > > > > and > > > > > > > > update here. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 609.3 Could you document which process makes the following > > > > transitions > > > > > > > > DELETE_MARKED, DELETE_STARTED, DELETE_FINISHED? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Okay, will document more details. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 610. remote.log.reader.max.pending.tasks: "Maximum remote log > > > > reader > > > > > > > > thread pool task queue size. If the task queue is full, > broker > > > > will stop > > > > > > > > reading remote log segments." What does the broker do if the > > > queue > > > > is > > > > > > > > full? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > It returns an error for this topic partition. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 611. What do we return if the request offset/epoch doesn't > exist > > > > in the > > > > > > > > following API? > > > > > > > > RemoteLogSegmentMetadata > remoteLogSegmentMetadata(TopicPartition > > > > > > > > topicPartition, long offset, int epochForOffset) > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > This returns null. But we prefer to update the return type as > > > > Optional > > > > > > > and > > > > > > > > return Empty if that does not exist. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks, > > > > > > > > Satish. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Tue, Sep 1, 2020 at 9:45 AM Jun Rao < jun@ confluent. io > ( > > > > > > > > j...@confluent.io ) > wrote: > > > > > > > > > > > > > > > > > > > > > > > >> > > > > > > > >> > > > > > > > >> Hi, Satish, > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > >> Thanks for the updated KIP. Made another pass. A few more > > > comments > > > > > > > below. > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > >> 600. The topic deletion logic needs more details. > > > > > > > >> 600.1 The KIP mentions "The controller considers the topic > > > > partition is > > > > > > > >> deleted only when it determines that there are no log > segments > > > > for that > > > > > > > >> topic partition by using RLMM". How is this done? 600.2 "If > the > > > > delete > > > > > > > >> option is enabled then the leader will stop RLM task and > stop > > > > processing > > > > > > > >> and it sets all the remote log segment metadata of that > > > partition > > > > with a > > > > > > > >> delete marker and publishes them to RLMM." We discussed this > > > > earlier. > > > > > > > When > > > > > > > >> a topic is being deleted, there may not be a leader for the > > > > deleted > > > > > > > >> partition. > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > >> 601. Unclean leader election > > > > > > > >> 601.1 Scenario 1: new empty follower > > > > > > > >> After step 1, the follower restores up to offset 3. So why > does > > > > it have > > > > > > > >> LE-2 <https://issues.apache.org/jira/browse/LE-2> at > offset 5? > > > > > > > >> 601.2 senario 5: After Step 3, leader A has inconsistent > data > > > > between > > > > > > > its > > > > > > > >> local and the tiered data. For example. offset 3 has msg 3 > LE-0 > > > > <https://issues.apache.org/jira/browse/LE-0> locally, > > > > > > > >> but msg 5 LE-1 <https://issues.apache.org/jira/browse/LE-1> > in > > > > the remote store. While it's ok for the unclean leader > > > > > > > >> to lose data, it should still return consistent data, > whether > > > > it's from > > > > > > > >> the local or the remote store. > > > > > > > >> 601.3 The follower picks up log start offset using the > following > > > > api. > > > > > > > >> Suppose that we have 3 remote segments (LE, > SegmentStartOffset) > > > > as (2, > > > > > > > >> 10), > > > > > > > >> (3, 20) and (7, 15) due to an unclean leader election. > Using the > > > > > > > following > > > > > > > >> api will cause logStartOffset to go backward from 20 to 15. > How > > > > do we > > > > > > > >> prevent that? > > > > > > > >> earliestLogOffset(TopicPartition topicPartition, int > > > leaderEpoch) > > > > 601.4 > > > > > > > It > > > > > > > >> seems that retention is based on > > > > > > > >> listRemoteLogSegments(TopicPartition topicPartition, long > > > > leaderEpoch). > > > > > > > >> When there is an unclean leader election, it's possible for > the > > > > new > > > > > > > leader > > > > > > > >> to not to include certain epochs in its epoch cache. How are > > > > remote > > > > > > > >> segments associated with those epochs being cleaned? 601.5 > The > > > KIP > > > > > > > >> discusses the handling of unclean leader elections for user > > > > topics. What > > > > > > > >> about unclean leader elections on > > > > > > > >> __remote_log_segment_metadata? > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > >> 602. It would be useful to clarify the limitations in the > > > initial > > > > > > > release. > > > > > > > >> The KIP mentions not supporting compacted topics. What about > > > JBOD > > > > and > > > > > > > >> changing the configuration of a topic from delete to compact > > > after > > > > > > > remote. > > > > > > > >> log. storage. enable ( http://remote.log.storage.enable/ ) > is > > > > enabled? > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > >> 603. RLM leader tasks: > > > > > > > >> 603.1"It checks for rolled over LogSegments (which have the > last > > > > message > > > > > > > >> offset less than last stable offset of that topic > partition) and > > > > copies > > > > > > > >> them along with their offset/time/transaction indexes and > leader > > > > epoch > > > > > > > >> cache to the remote tier." It needs to copy the producer > > > snapshot > > > > too. > > > > > > > >> 603.2 "Local logs are not cleaned up till those segments are > > > > copied > > > > > > > >> successfully to remote even though their retention > time/size is > > > > reached" > > > > > > > >> This seems weird. If the tiering stops because the remote > store > > > > is not > > > > > > > >> available, we don't want the local data to grow forever. > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > >> 604. "RLM maintains a bounded cache(possibly LRU) of the > index > > > > files of > > > > > > > >> remote log segments to avoid multiple index fetches from the > > > > remote > > > > > > > >> storage. These indexes can be used in the same way as local > > > > segment > > > > > > > >> indexes are used." Could you provide more details on this? > Are > > > the > > > > > > > indexes > > > > > > > >> cached in memory or on disk? If on disk, where are they > stored? > > > > Are the > > > > > > > >> cached indexes bound by a certain size? > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > >> 605. BuildingRemoteLogAux > > > > > > > >> 605.1 In this section, two options are listed. Which one is > > > > chosen? > > > > > > > 605.2 > > > > > > > >> In option 2, it says "Build the local leader epoch cache by > > > > cutting the > > > > > > > >> leader epoch sequence received from remote storage to [LSO, > > > ELO]. > > > > (LSO > > > > > > > >> = log start offset)." We need to do the same thing for the > > > > producer > > > > > > > >> snapshot. However, it's hard to cut the producer snapshot > to an > > > > earlier > > > > > > > >> offset. Another option is to simply take the lastOffset > from the > > > > remote > > > > > > > >> segment and use that as the starting fetch offset in the > > > > follower. This > > > > > > > >> avoids the need for cutting. > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > >> 606. ListOffsets: Since we need a version bump, could you > > > > document it > > > > > > > >> under a protocol change section? > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > >> 607. "LogStartOffset of a topic can point to either of local > > > > segment or > > > > > > > >> remote segment but it is initialised and maintained in the > Log > > > > class > > > > > > > like > > > > > > > >> now. This is already maintained in `Log` class while > loading the > > > > logs > > > > > > > and > > > > > > > >> it can also be fetched from RemoteLogMetadataManager." What > will > > > > happen > > > > > > > to > > > > > > > >> the existing logic (e.g. log recovery) that currently > depends on > > > > > > > >> logStartOffset but assumes it's local? > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > >> 608. Handle expired remote segment: How does it pick up new > > > > > > > logStartOffset > > > > > > > >> from deleteRecords? > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > >> 609. RLMM message format: > > > > > > > >> 609.1 It includes both MaxTimestamp and EventTimestamp. > Where > > > > does it > > > > > > > get > > > > > > > >> both since the message in the log only contains one > timestamp? > > > > 609.2 If > > > > > > > we > > > > > > > >> change just the state (e.g. to DELETE_STARTED), it seems > it's > > > > wasteful > > > > > > > to > > > > > > > >> have to include all other fields not changed. 609.3 Could > you > > > > document > > > > > > > >> which process makes the following transitions DELETE_MARKED, > > > > > > > >> DELETE_STARTED, DELETE_FINISHED? > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > >> 610. remote.log.reader.max.pending.tasks: "Maximum remote > log > > > > reader > > > > > > > >> thread pool task queue size. If the task queue is full, > broker > > > > will stop > > > > > > > >> reading remote log segments." What does the broker do if the > > > > queue is > > > > > > > >> full? > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > >> 611. What do we return if the request offset/epoch doesn't > exist > > > > in the > > > > > > > >> following API? > > > > > > > >> RemoteLogSegmentMetadata > remoteLogSegmentMetadata(TopicPartition > > > > > > > >> topicPartition, long offset, int epochForOffset) > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > >> Jun > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > >> On Mon, Aug 31, 2020 at 11:19 AM Satish Duggana < satish. > > > duggana@ > > > > > > > gmail. com > > > > > > > >> ( satish.dugg...@gmail.com ) > wrote: > > > > > > > >> > > > > > > > >> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> KIP is updated with > > > > > > > >>> - Remote log segment metadata topic message format/schema. > > > > > > > >>> - Added remote log segment metadata state transitions and > > > > explained how > > > > > > > >>> the deletion of segments is handled, including the case of > > > > partition > > > > > > > >>> deletions. > > > > > > > >>> - Added a few more limitations in the "Non goals" section. > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> Thanks, > > > > > > > >>> Satish. > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> On Thu, Aug 27, 2020 at 12:42 AM Harsha Ch < harsha. ch@ > > > gmail. > > > > com ( > > > > > > > >>> harsha...@gmail.com ) > wrote: > > > > > > > >>> > > > > > > > >>> > > > > > > > >>>> > > > > > > > >>>> > > > > > > > >>>> Updated the KIP with Meeting Notes section > > > > > > > >>>> > > > > > > > >>>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> https:/ / cwiki. apache. org/ confluence/ display/ KAFKA/ > > > > > > > KIP-405 <https://issues.apache.org/jira/browse/KIP-405> > > > > %3A+Kafka+Tiered+Storage#KIP405:KafkaTieredStorage-MeetingNotes > > > > > > > >>> ( > > > > > > > >>> > > > > > > > > > > > > > > > https://cwiki.apache.org/confluence/display/KAFKA/KIP-405%3A+Kafka+Tiered+Storage#KIP405:KafkaTieredStorage-MeetingNotes > > > > > > > >>> ) > > > > > > > >>> > > > > > > > >>> > > > > > > > >>>> > > > > > > > >>>> > > > > > > > >>>> On Tue, Aug 25, 2020 at 1:03 PM Jun Rao < jun@ > confluent. io > > > ( > > > > > > > >>>> j...@confluent.io ) > wrote: > > > > > > > >>>> > > > > > > > >>>> > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>>> Hi, Harsha, > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>>> Thanks for the summary. Could you add the summary and the > > > > recording > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>> > > > > > > > >>>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> link to > > > > > > > >>> > > > > > > > >>> > > > > > > > >>>> > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>>> the last section of > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>> > > > > > > > >>>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> https:/ / cwiki. apache. org/ confluence/ display/ KAFKA/ > > > > > > > Kafka+Improvement+Proposals > > > > > > > >>> ( > > > > > > > >>> > > > > > > > > > > > > > > > https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Improvement+Proposals > > > > > > > >>> ) > > > > > > > >>> > > > > > > > >>> > > > > > > > >>>> > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>>> ? > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>>> Jun > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>>> On Tue, Aug 25, 2020 at 11:12 AM Harsha Chintalapani < > kafka@ > > > > > > > harsha. io ( > > > > > > > >>>>> ka...@harsha.io ) > wrote: > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> Thanks everyone for attending the meeting today. > > > > > > > >>>>>> Here is the recording > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>> > > > > > > > >>>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> https:/ / drive. google. com/ file/ d/ > > > > > > > 14PRM7U0OopOOrJR197VlqvRX5SXNtmKj/ view?usp=sharing > > > > > > > >>> ( > > > > > > > >>> > > > > > > > > > > > > > > > https://drive.google.com/file/d/14PRM7U0OopOOrJR197VlqvRX5SXNtmKj/view?usp=sharing > > > > > > > >>> ) > > > > > > > >>> > > > > > > > >>> > > > > > > > >>>> > > > > > > > >>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> Notes: > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> 1. KIP is updated with follower fetch protocol and > ready to > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>> > > > > > > > >>>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> reviewed > > > > > > > >>> > > > > > > > >>> > > > > > > > >>>> > > > > > > > >>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> 2. Satish to capture schema of internal metadata topic > in > > > the > > > > KIP > > > > > > > >>>>>> 3. We will update the KIP with details of different > cases > > > > > > > >>>>>> 4. Test plan will be captured in a doc and will add to > the > > > KIP > > > > > > > >>>>>> 5. Add a section "Limitations" to capture the > capabilities > > > > that > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>> > > > > > > > >>>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> will > > > > > > > >>> > > > > > > > >>> > > > > > > > >>>> > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>>> be > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> introduced with this KIP and what will not be covered in > > > this > > > > KIP. > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> Please add to it I missed anything. Will produce a > formal > > > > meeting > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>> > > > > > > > >>>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> notes > > > > > > > >>> > > > > > > > >>> > > > > > > > >>>> > > > > > > > >>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> from next meeting onwards. > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> Thanks, > > > > > > > >>>>>> Harsha > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> On Mon, Aug 24, 2020 at 9:42 PM, Ying Zheng < yingz@ > uber. > > > > com. > > > > > > > invalid ( > > > > > > > >>>>>> yi...@uber.com.invalid ) > wrote: > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> We did some basic feature tests at Uber. The test > cases and > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>> > > > > > > > >>>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> results are > > > > > > > >>> > > > > > > > >>> > > > > > > > >>>> > > > > > > > >>>>> > > > > > > > >>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> shared in this google doc: > > > > > > > >>>>>>> https:/ / docs. google. com/ spreadsheets/ d/ ( > > > > > > > >>>>>>> https://docs.google.com/spreadsheets/d/ ) > > > > > > > >>>>>>> > > > 1XhNJqjzwXvMCcAOhEH0sSXU6RTvyoSf93DHF-YMfGLk/edit?usp=sharing > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> The performance test results were already shared in > the KIP > > > > last > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>> > > > > > > > >>>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> month. > > > > > > > >>> > > > > > > > >>> > > > > > > > >>>> > > > > > > > >>>>> > > > > > > > >>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> On Mon, Aug 24, 2020 at 11:10 AM Harsha Ch < harsha. > ch@ > > > > gmail. > > > > > > > com ( > > > > > > > >>>>>>> harsha...@gmail.com ) > > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>>> wrote: > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> "Understand commitments towards driving design & > > > > implementation of > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>> > > > > > > > >>>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> the > > > > > > > >>> > > > > > > > >>> > > > > > > > >>>> > > > > > > > >>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> KIP > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> further and how it aligns with participant interests in > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>> > > > > > > > >>>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> contributing to > > > > > > > >>> > > > > > > > >>> > > > > > > > >>>> > > > > > > > >>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> the > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> efforts (ex: in the context of Uber’s Q3/Q4 roadmap)." > What > > > > is that > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> about? > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> On Mon, Aug 24, 2020 at 11:05 AM Kowshik Prakasam < > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> kprakasam@ confluent. io ( kpraka...@confluent.io ) > > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> wrote: > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> Hi Harsha, > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> The following google doc contains a proposal for > temporary > > > > agenda > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>> > > > > > > > >>>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> for > > > > > > > >>> > > > > > > > >>> > > > > > > > >>>> > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>>> the > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> KIP-405 <https://issues.apache.org/jira/browse/KIP-405> > < > > > > https:/ / issues. apache. org/ jira/ browse/ KIP-405 > > > > <https://issues.apache.org/jira/browse/KIP-405> ( > > > > > > > >>>>>>> https://issues.apache.org/jira/browse/KIP-405 ) > sync > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>> > > > > > > > >>>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> meeting > > > > > > > >>> > > > > > > > >>> > > > > > > > >>>> > > > > > > > >>>>> > > > > > > > >>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> tomorrow: > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> https:/ / docs. google. com/ document/ d/ ( > > > > > > > >>>>>>> https://docs.google.com/document/d/ ) > > > > > > > >>>>>>> 1pqo8X5LU8TpwfC_iqSuVPezhfCfhGkbGN2TqiPA3LBU/edit > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> . > > > > > > > >>>>>>> Please could you add it to the Google calendar invite? > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> Thank you. > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> Cheers, > > > > > > > >>>>>>> Kowshik > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> On Thu, Aug 20, 2020 at 10:58 AM Harsha Ch < harsha. > ch@ > > > > gmail. > > > > > > > com ( > > > > > > > >>>>>>> harsha...@gmail.com ) > > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>>> wrote: > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> Hi All, > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> Scheduled a meeting for Tuesday 9am - 10am. I can > record > > > and > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>> > > > > > > > >>>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> upload for > > > > > > > >>> > > > > > > > >>> > > > > > > > >>>> > > > > > > > >>>>> > > > > > > > >>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> community to be able to follow the discussion. > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> Jun, please add the required folks on confluent side. > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> Thanks, > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> Harsha > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> On Thu, Aug 20, 2020 at 12:33 AM, Alexandre Dupriez < > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>>> alexandre.dupriez@ > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> gmail. com ( http://gmail.com/ ) > wrote: > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> Hi Jun, > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> Many thanks for your initiative. > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> If you like, I am happy to attend at the time you > > > suggested. > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> Many thanks, > > > > > > > >>>>>>> Alexandre > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> Le mer. 19 août 2020 à 22:00, Harsha Ch < harsha. ch@ > > > > gmail. com ( > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> harsha. > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> ch@ gmail. com ( c...@gmail.com ) ) > a écrit : > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> Hi Jun, > > > > > > > >>>>>>> Thanks. This will help a lot. Tuesday will work for us. > > > > > > > >>>>>>> -Harsha > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> On Wed, Aug 19, 2020 at 1:24 PM Jun Rao < jun@ > confluent. > > > > io ( > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>> > > > > > > > >>>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> jun@ > > > > > > > >>> > > > > > > > >>> > > > > > > > >>>> > > > > > > > >>>>> > > > > > > > >>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> confluent. io ( http://confluent.io/ ) ) > wrote: > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> Hi, Satish, Ying, Harsha, > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> Do you think it would be useful to have a regular > virtual > > > > meeting > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > > >>>> > > > > > > > >>>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> to > > > > > > > >>> > > > > > > > >>> > > > > > > > >>>> > > > > > > > >>>>> > > > > > > > >>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> discuss this KIP? The goal of the meeting will be > sharing > > > > > > > >>>>>>> design/development progress and discussing any open > issues > > > to > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> accelerate > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> this KIP. If so, will every Tuesday (from next week) > > > 9am-10am > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> PT > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> work for you? I can help set up a Zoom meeting, invite > > > > everyone who > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> might > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> be interested, have it recorded and shared, etc. > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> Thanks, > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> Jun > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> On Tue, Aug 18, 2020 at 11:01 AM Satish Duggana < > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> satish. duggana@ gmail. com ( satish. duggana@ gmail. > com > > > ( > > > > > > > >>>>>>> satish.dugg...@gmail.com ) ) > > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> wrote: > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> Hi Kowshik, > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> Thanks for looking into the KIP and sending your > comments. > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> 5001. Under the section "Follower fetch protocol in > > > detail", > > > > the > > > > > > > >>>>>>> next-local-offset is the offset upto which the > segments are > > > > copied > > > > > > > >>>>>>> > > > > >