jsun98 commented on a change in pull request #6431: Add Kinesis Indexing Service to core Druid URL: https://github.com/apache/incubator-druid/pull/6431#discussion_r242709035
########## File path: indexing-service/src/main/java/org/apache/druid/indexing/seekablestream/common/OrderedPartitionableRecord.java ########## @@ -0,0 +1,106 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.druid.indexing.seekablestream.common; + +import java.util.List; +import java.util.Objects; + +/** + * Represents a generic record with a PartitionIdType (partition id) and SequenceOffsetType (sequence number) and data + * from a Kafka/Kinesis stream + * + * @param <PartitionIdType> partition id + * @param <SequenceOffsetType> sequence number + */ +public class OrderedPartitionableRecord<PartitionIdType, SequenceOffsetType> +{ + /** + * In Kinesis, when a shard is closed due to shard splitting, a null ShardIterator is returned. + * The EOS marker is placed at the end of the Kinesis Record Supplier buffer, such that when + * an indexing task pulls the record 'EOS', it knows the shard has been closed and should stop + * reading and start publishing + */ + public static final String END_OF_SHARD_MARKER = "EOS"; + + private final String stream; + private final PartitionIdType partitionId; + private final SequenceOffsetType sequenceNumber; + private final List<byte[]> data; + + public OrderedPartitionableRecord( + String stream, + PartitionIdType partitionId, + SequenceOffsetType sequenceNumber, + List<byte[]> data + ) + { + this.stream = stream; + this.partitionId = partitionId; + this.sequenceNumber = sequenceNumber; + this.data = data; + } + + public String getStream() + { + return stream; + } + + public PartitionIdType getPartitionId() + { + return partitionId; + } + + public SequenceOffsetType getSequenceNumber() + { + return sequenceNumber; + } + + public List<byte[]> getData() Review comment: I think using a empty list instead of storing null would be better. What do you think? ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: [email protected] With regards, Apache Git Services --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
