fetch request are for semirandom UUIDs, and probably based on this it requires response with value like “Hello World!” or “Hello Universe” or similar.
There is nothing in description, I though it might be just couple of values, but it seems to be more then that and trying to find all does not make sense.
Generally I’m quite disappointed with this challenge for these reasons:
You say this beta - but it does not feels like that - from certain point instructions are missing completely and in cases like this one it’s not clear what is expected.
Its not much about kafka, but rather about It’s protocol, which is littered with legacy stuff and inconsistencies.
I think kafka key functionality is about its logs (WALs) and now they are efficiently passed from files to network sockets. Not much about it’s protocol, which just wraps this functionality.
So I’d see logical start with Record and RecordBatch and their logs and indexes. Then saving them and retrieving them, and sending through network sockets. The stuff that is currently in the challenge should come afterwards. When basic key functionality of kafka is understood.
So I did not learn much about kafka (only that its protocol docs sucks), the main benefit up to now was better understanding of Rust serde, which I tried to use for kafka protocol. It kinda works for protocol messages, but not for Record and RecordBatch, which are bit different entities.
I heard quite few good recommendation about Codecrafters, but this experience was not positive.
@izderadicka thanks for sharing this! I understand the incompleteness comments. We prefer to release early and iterate over time, and that’s why we explicitly mark these as beta & keep them free. I’d recommend checking out non-beta challenges if you’re looking for a more polished & complete experience.
Re: the order - we always approach things from a “build from scratch” perspective / order. We do cover records & record batches in the listing partitions extension:
The reason we start with the protocol in the base stages is that it’s difficult to test whether you’ve built a proper record batch parser if we can’t interact with your program in the first place.
@izderadicka if you haven’t already, I’d recommend switching the partitions extension on and working through that before Fetch. That should cover the on-disk format and have friendlier (but still incomplete) instructions: