Also I don't see any unit test coverage for this class directly, is that
right? If so I will add it...

I do see two big integration tests HighwatermarkPersistenceTest and
LogRecoveryTest both use it. What is the difference between these?

-Jay


On Mon, Nov 26, 2012 at 5:17 PM, Jay Kreps <jay.kr...@gmail.com> wrote:

> Does this capture the intention of this code:
> https://gist.github.com/4151743
> ?
>
> The idea is to rename it to OffsetCheckpoint so it is generic. To do this
> 1. I make the file name and argument
> 2. read now returns a Map of all values. To get the old behavior you would
> do chkpt.read.getOrElse(TopicPartition(t,p), 0L). This makes sense as
> defaulting to 0L may only make sense for highwatermarks.
> 3. Throw and exception rather than calling shutdown (always a good idea)
>
> Some things I am confused about:
> 1. Parsing logic--there is very complex being done but I don't know why.
> Are we just parsing three space-separated values? Why all the indexOf stuff?
> 2. Why do we store the number of entries in the file?
>
> Cheers,
>
> -Jay
>
>
> On Mon, Nov 26, 2012 at 4:14 PM, Jay Kreps <jay.kr...@gmail.com> wrote:
>
>> The api for the HighwaterMarkCheckpoint is:
>>
>>   def write(highwaterMarksPerPartition: Map[TopicAndPartition, Long])
>>
>>   def read(topic: String, partition: Int): Long
>>
>> Pretty weird, no? The write method writes a map of all values,
>> obliterating previous values. The read method internally reads back that
>> whole map, then throws away all the values but one and returns that one. It
>> seems like the natural way to do it would be to either read and write one
>> key/value pair or read and write them all together.
>>
>> Is there a rationale for this? Can we change it?
>>
>> It would be nice to reuse this class to track log flushes, and the
>> cleaner point. However in its current form it isn't particularly useful.
>>
>> -Jay
>>
>
>

Reply via email to