From 9aa2aafd5a167a29268d4b4d3d2ede0b296bbccc Mon Sep 17 00:00:00 2001 From: George Ayvazian Date: Tue, 25 Aug 2026 20:31:25 -0700 Subject: [PATCH 01/18] feat: ListPartitions RPC for topic partition discovery Offsets are per-partition, so consumers need partition count metadata to discover a topic's full key space. Adds list_partitions to the Request and Response envelopes, MESSAGE_TYPE_LIST_PARTITIONS, and the server handler backed by the existing Broker.NumPartitions. --- pkg/server/server.go | 17 +++ proto/server.pb.go | 352 ++++++++++++++++++++++++++++++------------- proto/server.proto | 15 ++ 3 files changed, 277 insertions(+), 107 deletions(-) diff --git a/pkg/server/server.go b/pkg/server/server.go index dedeee7..222a4ec 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -103,6 +103,8 @@ func (s *Server) dispatch(req *pb.Request) *pb.Response { return s.handleCreateTopic(body.CreateTopic) case *pb.Request_ListTopics: return s.handleListTopics(body.ListTopics) + case *pb.Request_ListPartitions: + return s.handleListPartitions(body.ListPartitions) default: return errorResponse("unknown request type") } @@ -160,6 +162,21 @@ func (s *Server) handleListTopics(_ *pb.ListTopicsRequest) *pb.Response { } } +// handleListPartitions returns a topic's partition count. Offsets are +// per-partition, so this is the metadata consumers need to discover the +// full key space of a topic. +func (s *Server) handleListPartitions(req *pb.ListPartitionsRequest) *pb.Response { + n, err := s.broker.NumPartitions(req.Topic) + if err != nil { + return errorResponse(err.Error()) + } + return &pb.Response{ + Body: &pb.Response_ListPartitions{ + ListPartitions: &pb.ListPartitionsResponse{NumPartitions: int32(n)}, + }, + } +} + func errorResponse(msg string) *pb.Response { return &pb.Response{ Body: &pb.Response_Error{ diff --git a/proto/server.pb.go b/proto/server.pb.go index a094400..c1ce5c4 100644 --- a/proto/server.pb.go +++ b/proto/server.pb.go @@ -2,7 +2,7 @@ // versions: // protoc-gen-go v1.36.12 // protoc v5.28.3 -// source: proto/server.proto +// source: server.proto package proto @@ -24,11 +24,12 @@ const ( type MessageType int32 const ( - MessageType_MESSAGE_TYPE_UNKNOWN MessageType = 0 - MessageType_MESSAGE_TYPE_PRODUCE MessageType = 1 - MessageType_MESSAGE_TYPE_CONSUME MessageType = 2 - MessageType_MESSAGE_TYPE_CREATE_TOPIC MessageType = 3 - MessageType_MESSAGE_TYPE_LIST_TOPICS MessageType = 4 + MessageType_MESSAGE_TYPE_UNKNOWN MessageType = 0 + MessageType_MESSAGE_TYPE_PRODUCE MessageType = 1 + MessageType_MESSAGE_TYPE_CONSUME MessageType = 2 + MessageType_MESSAGE_TYPE_CREATE_TOPIC MessageType = 3 + MessageType_MESSAGE_TYPE_LIST_TOPICS MessageType = 4 + MessageType_MESSAGE_TYPE_LIST_PARTITIONS MessageType = 5 ) // Enum value maps for MessageType. @@ -39,13 +40,15 @@ var ( 2: "MESSAGE_TYPE_CONSUME", 3: "MESSAGE_TYPE_CREATE_TOPIC", 4: "MESSAGE_TYPE_LIST_TOPICS", + 5: "MESSAGE_TYPE_LIST_PARTITIONS", } MessageType_value = map[string]int32{ - "MESSAGE_TYPE_UNKNOWN": 0, - "MESSAGE_TYPE_PRODUCE": 1, - "MESSAGE_TYPE_CONSUME": 2, - "MESSAGE_TYPE_CREATE_TOPIC": 3, - "MESSAGE_TYPE_LIST_TOPICS": 4, + "MESSAGE_TYPE_UNKNOWN": 0, + "MESSAGE_TYPE_PRODUCE": 1, + "MESSAGE_TYPE_CONSUME": 2, + "MESSAGE_TYPE_CREATE_TOPIC": 3, + "MESSAGE_TYPE_LIST_TOPICS": 4, + "MESSAGE_TYPE_LIST_PARTITIONS": 5, } ) @@ -60,11 +63,11 @@ func (x MessageType) String() string { } func (MessageType) Descriptor() protoreflect.EnumDescriptor { - return file_proto_server_proto_enumTypes[0].Descriptor() + return file_server_proto_enumTypes[0].Descriptor() } func (MessageType) Type() protoreflect.EnumType { - return &file_proto_server_proto_enumTypes[0] + return &file_server_proto_enumTypes[0] } func (x MessageType) Number() protoreflect.EnumNumber { @@ -73,7 +76,7 @@ func (x MessageType) Number() protoreflect.EnumNumber { // Deprecated: Use MessageType.Descriptor instead. func (MessageType) EnumDescriptor() ([]byte, []int) { - return file_proto_server_proto_rawDescGZIP(), []int{0} + return file_server_proto_rawDescGZIP(), []int{0} } // Request envelope — every frame starts with this. @@ -87,6 +90,7 @@ type Request struct { // *Request_Consume // *Request_CreateTopic // *Request_ListTopics + // *Request_ListPartitions Body isRequest_Body `protobuf_oneof:"body"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -94,7 +98,7 @@ type Request struct { func (x *Request) Reset() { *x = Request{} - mi := &file_proto_server_proto_msgTypes[0] + mi := &file_server_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -106,7 +110,7 @@ func (x *Request) String() string { func (*Request) ProtoMessage() {} func (x *Request) ProtoReflect() protoreflect.Message { - mi := &file_proto_server_proto_msgTypes[0] + mi := &file_server_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -119,7 +123,7 @@ func (x *Request) ProtoReflect() protoreflect.Message { // Deprecated: Use Request.ProtoReflect.Descriptor instead. func (*Request) Descriptor() ([]byte, []int) { - return file_proto_server_proto_rawDescGZIP(), []int{0} + return file_server_proto_rawDescGZIP(), []int{0} } func (x *Request) GetType() MessageType { @@ -172,6 +176,15 @@ func (x *Request) GetListTopics() *ListTopicsRequest { return nil } +func (x *Request) GetListPartitions() *ListPartitionsRequest { + if x != nil { + if x, ok := x.Body.(*Request_ListPartitions); ok { + return x.ListPartitions + } + } + return nil +} + type isRequest_Body interface { isRequest_Body() } @@ -192,6 +205,10 @@ type Request_ListTopics struct { ListTopics *ListTopicsRequest `protobuf:"bytes,13,opt,name=list_topics,json=listTopics,proto3,oneof"` } +type Request_ListPartitions struct { + ListPartitions *ListPartitionsRequest `protobuf:"bytes,14,opt,name=list_partitions,json=listPartitions,proto3,oneof"` +} + func (*Request_Produce) isRequest_Body() {} func (*Request_Consume) isRequest_Body() {} @@ -200,6 +217,8 @@ func (*Request_CreateTopic) isRequest_Body() {} func (*Request_ListTopics) isRequest_Body() {} +func (*Request_ListPartitions) isRequest_Body() {} + // Response envelope — every frame starts with this. type Response struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -209,6 +228,7 @@ type Response struct { // *Response_Consume // *Response_CreateTopic // *Response_ListTopics + // *Response_ListPartitions // *Response_Error Body isResponse_Body `protobuf_oneof:"body"` unknownFields protoimpl.UnknownFields @@ -217,7 +237,7 @@ type Response struct { func (x *Response) Reset() { *x = Response{} - mi := &file_proto_server_proto_msgTypes[1] + mi := &file_server_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -229,7 +249,7 @@ func (x *Response) String() string { func (*Response) ProtoMessage() {} func (x *Response) ProtoReflect() protoreflect.Message { - mi := &file_proto_server_proto_msgTypes[1] + mi := &file_server_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -242,7 +262,7 @@ func (x *Response) ProtoReflect() protoreflect.Message { // Deprecated: Use Response.ProtoReflect.Descriptor instead. func (*Response) Descriptor() ([]byte, []int) { - return file_proto_server_proto_rawDescGZIP(), []int{1} + return file_server_proto_rawDescGZIP(), []int{1} } func (x *Response) GetBody() isResponse_Body { @@ -288,6 +308,15 @@ func (x *Response) GetListTopics() *ListTopicsResponse { return nil } +func (x *Response) GetListPartitions() *ListPartitionsResponse { + if x != nil { + if x, ok := x.Body.(*Response_ListPartitions); ok { + return x.ListPartitions + } + } + return nil +} + func (x *Response) GetError() *ErrorResponse { if x != nil { if x, ok := x.Body.(*Response_Error); ok { @@ -317,6 +346,10 @@ type Response_ListTopics struct { ListTopics *ListTopicsResponse `protobuf:"bytes,13,opt,name=list_topics,json=listTopics,proto3,oneof"` } +type Response_ListPartitions struct { + ListPartitions *ListPartitionsResponse `protobuf:"bytes,14,opt,name=list_partitions,json=listPartitions,proto3,oneof"` +} + type Response_Error struct { Error *ErrorResponse `protobuf:"bytes,20,opt,name=error,proto3,oneof"` } @@ -329,6 +362,8 @@ func (*Response_CreateTopic) isResponse_Body() {} func (*Response_ListTopics) isResponse_Body() {} +func (*Response_ListPartitions) isResponse_Body() {} + func (*Response_Error) isResponse_Body() {} type ProduceRequest struct { @@ -342,7 +377,7 @@ type ProduceRequest struct { func (x *ProduceRequest) Reset() { *x = ProduceRequest{} - mi := &file_proto_server_proto_msgTypes[2] + mi := &file_server_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -354,7 +389,7 @@ func (x *ProduceRequest) String() string { func (*ProduceRequest) ProtoMessage() {} func (x *ProduceRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_server_proto_msgTypes[2] + mi := &file_server_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -367,7 +402,7 @@ func (x *ProduceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ProduceRequest.ProtoReflect.Descriptor instead. func (*ProduceRequest) Descriptor() ([]byte, []int) { - return file_proto_server_proto_rawDescGZIP(), []int{2} + return file_server_proto_rawDescGZIP(), []int{2} } func (x *ProduceRequest) GetTopic() string { @@ -401,7 +436,7 @@ type ProduceResponse struct { func (x *ProduceResponse) Reset() { *x = ProduceResponse{} - mi := &file_proto_server_proto_msgTypes[3] + mi := &file_server_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -413,7 +448,7 @@ func (x *ProduceResponse) String() string { func (*ProduceResponse) ProtoMessage() {} func (x *ProduceResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_server_proto_msgTypes[3] + mi := &file_server_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -426,7 +461,7 @@ func (x *ProduceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ProduceResponse.ProtoReflect.Descriptor instead. func (*ProduceResponse) Descriptor() ([]byte, []int) { - return file_proto_server_proto_rawDescGZIP(), []int{3} + return file_server_proto_rawDescGZIP(), []int{3} } func (x *ProduceResponse) GetPartition() int32 { @@ -454,7 +489,7 @@ type ConsumeRequest struct { func (x *ConsumeRequest) Reset() { *x = ConsumeRequest{} - mi := &file_proto_server_proto_msgTypes[4] + mi := &file_server_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -466,7 +501,7 @@ func (x *ConsumeRequest) String() string { func (*ConsumeRequest) ProtoMessage() {} func (x *ConsumeRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_server_proto_msgTypes[4] + mi := &file_server_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -479,7 +514,7 @@ func (x *ConsumeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ConsumeRequest.ProtoReflect.Descriptor instead. func (*ConsumeRequest) Descriptor() ([]byte, []int) { - return file_proto_server_proto_rawDescGZIP(), []int{4} + return file_server_proto_rawDescGZIP(), []int{4} } func (x *ConsumeRequest) GetTopic() string { @@ -515,7 +550,7 @@ type ConsumeResponse struct { func (x *ConsumeResponse) Reset() { *x = ConsumeResponse{} - mi := &file_proto_server_proto_msgTypes[5] + mi := &file_server_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -527,7 +562,7 @@ func (x *ConsumeResponse) String() string { func (*ConsumeResponse) ProtoMessage() {} func (x *ConsumeResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_server_proto_msgTypes[5] + mi := &file_server_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -540,7 +575,7 @@ func (x *ConsumeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ConsumeResponse.ProtoReflect.Descriptor instead. func (*ConsumeResponse) Descriptor() ([]byte, []int) { - return file_proto_server_proto_rawDescGZIP(), []int{5} + return file_server_proto_rawDescGZIP(), []int{5} } func (x *ConsumeResponse) GetOffset() uint64 { @@ -581,7 +616,7 @@ type CreateTopicRequest struct { func (x *CreateTopicRequest) Reset() { *x = CreateTopicRequest{} - mi := &file_proto_server_proto_msgTypes[6] + mi := &file_server_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -593,7 +628,7 @@ func (x *CreateTopicRequest) String() string { func (*CreateTopicRequest) ProtoMessage() {} func (x *CreateTopicRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_server_proto_msgTypes[6] + mi := &file_server_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -606,7 +641,7 @@ func (x *CreateTopicRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTopicRequest.ProtoReflect.Descriptor instead. func (*CreateTopicRequest) Descriptor() ([]byte, []int) { - return file_proto_server_proto_rawDescGZIP(), []int{6} + return file_server_proto_rawDescGZIP(), []int{6} } func (x *CreateTopicRequest) GetName() string { @@ -631,7 +666,7 @@ type CreateTopicResponse struct { func (x *CreateTopicResponse) Reset() { *x = CreateTopicResponse{} - mi := &file_proto_server_proto_msgTypes[7] + mi := &file_server_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -643,7 +678,7 @@ func (x *CreateTopicResponse) String() string { func (*CreateTopicResponse) ProtoMessage() {} func (x *CreateTopicResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_server_proto_msgTypes[7] + mi := &file_server_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -656,7 +691,7 @@ func (x *CreateTopicResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTopicResponse.ProtoReflect.Descriptor instead. func (*CreateTopicResponse) Descriptor() ([]byte, []int) { - return file_proto_server_proto_rawDescGZIP(), []int{7} + return file_server_proto_rawDescGZIP(), []int{7} } type ListTopicsRequest struct { @@ -667,7 +702,7 @@ type ListTopicsRequest struct { func (x *ListTopicsRequest) Reset() { *x = ListTopicsRequest{} - mi := &file_proto_server_proto_msgTypes[8] + mi := &file_server_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -679,7 +714,7 @@ func (x *ListTopicsRequest) String() string { func (*ListTopicsRequest) ProtoMessage() {} func (x *ListTopicsRequest) ProtoReflect() protoreflect.Message { - mi := &file_proto_server_proto_msgTypes[8] + mi := &file_server_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -692,7 +727,7 @@ func (x *ListTopicsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTopicsRequest.ProtoReflect.Descriptor instead. func (*ListTopicsRequest) Descriptor() ([]byte, []int) { - return file_proto_server_proto_rawDescGZIP(), []int{8} + return file_server_proto_rawDescGZIP(), []int{8} } type ListTopicsResponse struct { @@ -704,7 +739,7 @@ type ListTopicsResponse struct { func (x *ListTopicsResponse) Reset() { *x = ListTopicsResponse{} - mi := &file_proto_server_proto_msgTypes[9] + mi := &file_server_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -716,7 +751,7 @@ func (x *ListTopicsResponse) String() string { func (*ListTopicsResponse) ProtoMessage() {} func (x *ListTopicsResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_server_proto_msgTypes[9] + mi := &file_server_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -729,7 +764,7 @@ func (x *ListTopicsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTopicsResponse.ProtoReflect.Descriptor instead. func (*ListTopicsResponse) Descriptor() ([]byte, []int) { - return file_proto_server_proto_rawDescGZIP(), []int{9} + return file_server_proto_rawDescGZIP(), []int{9} } func (x *ListTopicsResponse) GetTopics() []string { @@ -739,6 +774,96 @@ func (x *ListTopicsResponse) GetTopics() []string { return nil } +// Returns the partition count for a topic. Offsets are per-partition, so +// consumers need this to discover what they can consume. +type ListPartitionsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Topic string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListPartitionsRequest) Reset() { + *x = ListPartitionsRequest{} + mi := &file_server_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListPartitionsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListPartitionsRequest) ProtoMessage() {} + +func (x *ListPartitionsRequest) ProtoReflect() protoreflect.Message { + mi := &file_server_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListPartitionsRequest.ProtoReflect.Descriptor instead. +func (*ListPartitionsRequest) Descriptor() ([]byte, []int) { + return file_server_proto_rawDescGZIP(), []int{10} +} + +func (x *ListPartitionsRequest) GetTopic() string { + if x != nil { + return x.Topic + } + return "" +} + +type ListPartitionsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + NumPartitions int32 `protobuf:"varint,1,opt,name=num_partitions,json=numPartitions,proto3" json:"num_partitions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListPartitionsResponse) Reset() { + *x = ListPartitionsResponse{} + mi := &file_server_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListPartitionsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListPartitionsResponse) ProtoMessage() {} + +func (x *ListPartitionsResponse) ProtoReflect() protoreflect.Message { + mi := &file_server_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListPartitionsResponse.ProtoReflect.Descriptor instead. +func (*ListPartitionsResponse) Descriptor() ([]byte, []int) { + return file_server_proto_rawDescGZIP(), []int{11} +} + +func (x *ListPartitionsResponse) GetNumPartitions() int32 { + if x != nil { + return x.NumPartitions + } + return 0 +} + type ErrorResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` @@ -748,7 +873,7 @@ type ErrorResponse struct { func (x *ErrorResponse) Reset() { *x = ErrorResponse{} - mi := &file_proto_server_proto_msgTypes[10] + mi := &file_server_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -760,7 +885,7 @@ func (x *ErrorResponse) String() string { func (*ErrorResponse) ProtoMessage() {} func (x *ErrorResponse) ProtoReflect() protoreflect.Message { - mi := &file_proto_server_proto_msgTypes[10] + mi := &file_server_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -773,7 +898,7 @@ func (x *ErrorResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ErrorResponse.ProtoReflect.Descriptor instead. func (*ErrorResponse) Descriptor() ([]byte, []int) { - return file_proto_server_proto_rawDescGZIP(), []int{10} + return file_server_proto_rawDescGZIP(), []int{12} } func (x *ErrorResponse) GetMessage() string { @@ -783,11 +908,11 @@ func (x *ErrorResponse) GetMessage() string { return "" } -var File_proto_server_proto protoreflect.FileDescriptor +var File_server_proto protoreflect.FileDescriptor -const file_proto_server_proto_rawDesc = "" + +const file_server_proto_rawDesc = "" + "\n" + - "\x12proto/server.proto\x12\x06server\"\xa1\x02\n" + + "\fserver.proto\x12\x06server\"\xeb\x02\n" + "\aRequest\x12'\n" + "\x04type\x18\x01 \x01(\x0e2\x13.server.MessageTypeR\x04type\x122\n" + "\aproduce\x18\n" + @@ -795,15 +920,17 @@ const file_proto_server_proto_rawDesc = "" + "\aconsume\x18\v \x01(\v2\x16.server.ConsumeRequestH\x00R\aconsume\x12?\n" + "\fcreate_topic\x18\f \x01(\v2\x1a.server.CreateTopicRequestH\x00R\vcreateTopic\x12<\n" + "\vlist_topics\x18\r \x01(\v2\x19.server.ListTopicsRequestH\x00R\n" + - "listTopicsB\x06\n" + - "\x04body\"\xac\x02\n" + + "listTopics\x12H\n" + + "\x0flist_partitions\x18\x0e \x01(\v2\x1d.server.ListPartitionsRequestH\x00R\x0elistPartitionsB\x06\n" + + "\x04body\"\xf7\x02\n" + "\bResponse\x123\n" + "\aproduce\x18\n" + " \x01(\v2\x17.server.ProduceResponseH\x00R\aproduce\x123\n" + "\aconsume\x18\v \x01(\v2\x17.server.ConsumeResponseH\x00R\aconsume\x12@\n" + "\fcreate_topic\x18\f \x01(\v2\x1b.server.CreateTopicResponseH\x00R\vcreateTopic\x12=\n" + "\vlist_topics\x18\r \x01(\v2\x1a.server.ListTopicsResponseH\x00R\n" + - "listTopics\x12-\n" + + "listTopics\x12I\n" + + "\x0flist_partitions\x18\x0e \x01(\v2\x1e.server.ListPartitionsResponseH\x00R\x0elistPartitions\x12-\n" + "\x05error\x18\x14 \x01(\v2\x15.server.ErrorResponseH\x00R\x05errorB\x06\n" + "\x04body\"N\n" + "\x0eProduceRequest\x12\x14\n" + @@ -828,96 +955,107 @@ const file_proto_server_proto_rawDesc = "" + "\x13CreateTopicResponse\"\x13\n" + "\x11ListTopicsRequest\",\n" + "\x12ListTopicsResponse\x12\x16\n" + - "\x06topics\x18\x01 \x03(\tR\x06topics\")\n" + + "\x06topics\x18\x01 \x03(\tR\x06topics\"-\n" + + "\x15ListPartitionsRequest\x12\x14\n" + + "\x05topic\x18\x01 \x01(\tR\x05topic\"?\n" + + "\x16ListPartitionsResponse\x12%\n" + + "\x0enum_partitions\x18\x01 \x01(\x05R\rnumPartitions\")\n" + "\rErrorResponse\x12\x18\n" + - "\amessage\x18\x01 \x01(\tR\amessage*\x98\x01\n" + + "\amessage\x18\x01 \x01(\tR\amessage*\xba\x01\n" + "\vMessageType\x12\x18\n" + "\x14MESSAGE_TYPE_UNKNOWN\x10\x00\x12\x18\n" + "\x14MESSAGE_TYPE_PRODUCE\x10\x01\x12\x18\n" + "\x14MESSAGE_TYPE_CONSUME\x10\x02\x12\x1d\n" + "\x19MESSAGE_TYPE_CREATE_TOPIC\x10\x03\x12\x1c\n" + - "\x18MESSAGE_TYPE_LIST_TOPICS\x10\x04B\x15Z\x13message-queue/protob\x06proto3" + "\x18MESSAGE_TYPE_LIST_TOPICS\x10\x04\x12 \n" + + "\x1cMESSAGE_TYPE_LIST_PARTITIONS\x10\x05B\x15Z\x13message-queue/protob\x06proto3" var ( - file_proto_server_proto_rawDescOnce sync.Once - file_proto_server_proto_rawDescData []byte + file_server_proto_rawDescOnce sync.Once + file_server_proto_rawDescData []byte ) -func file_proto_server_proto_rawDescGZIP() []byte { - file_proto_server_proto_rawDescOnce.Do(func() { - file_proto_server_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_proto_server_proto_rawDesc), len(file_proto_server_proto_rawDesc))) +func file_server_proto_rawDescGZIP() []byte { + file_server_proto_rawDescOnce.Do(func() { + file_server_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_server_proto_rawDesc), len(file_server_proto_rawDesc))) }) - return file_proto_server_proto_rawDescData -} - -var file_proto_server_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_proto_server_proto_msgTypes = make([]protoimpl.MessageInfo, 11) -var file_proto_server_proto_goTypes = []any{ - (MessageType)(0), // 0: server.MessageType - (*Request)(nil), // 1: server.Request - (*Response)(nil), // 2: server.Response - (*ProduceRequest)(nil), // 3: server.ProduceRequest - (*ProduceResponse)(nil), // 4: server.ProduceResponse - (*ConsumeRequest)(nil), // 5: server.ConsumeRequest - (*ConsumeResponse)(nil), // 6: server.ConsumeResponse - (*CreateTopicRequest)(nil), // 7: server.CreateTopicRequest - (*CreateTopicResponse)(nil), // 8: server.CreateTopicResponse - (*ListTopicsRequest)(nil), // 9: server.ListTopicsRequest - (*ListTopicsResponse)(nil), // 10: server.ListTopicsResponse - (*ErrorResponse)(nil), // 11: server.ErrorResponse -} -var file_proto_server_proto_depIdxs = []int32{ + return file_server_proto_rawDescData +} + +var file_server_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_server_proto_msgTypes = make([]protoimpl.MessageInfo, 13) +var file_server_proto_goTypes = []any{ + (MessageType)(0), // 0: server.MessageType + (*Request)(nil), // 1: server.Request + (*Response)(nil), // 2: server.Response + (*ProduceRequest)(nil), // 3: server.ProduceRequest + (*ProduceResponse)(nil), // 4: server.ProduceResponse + (*ConsumeRequest)(nil), // 5: server.ConsumeRequest + (*ConsumeResponse)(nil), // 6: server.ConsumeResponse + (*CreateTopicRequest)(nil), // 7: server.CreateTopicRequest + (*CreateTopicResponse)(nil), // 8: server.CreateTopicResponse + (*ListTopicsRequest)(nil), // 9: server.ListTopicsRequest + (*ListTopicsResponse)(nil), // 10: server.ListTopicsResponse + (*ListPartitionsRequest)(nil), // 11: server.ListPartitionsRequest + (*ListPartitionsResponse)(nil), // 12: server.ListPartitionsResponse + (*ErrorResponse)(nil), // 13: server.ErrorResponse +} +var file_server_proto_depIdxs = []int32{ 0, // 0: server.Request.type:type_name -> server.MessageType 3, // 1: server.Request.produce:type_name -> server.ProduceRequest 5, // 2: server.Request.consume:type_name -> server.ConsumeRequest 7, // 3: server.Request.create_topic:type_name -> server.CreateTopicRequest 9, // 4: server.Request.list_topics:type_name -> server.ListTopicsRequest - 4, // 5: server.Response.produce:type_name -> server.ProduceResponse - 6, // 6: server.Response.consume:type_name -> server.ConsumeResponse - 8, // 7: server.Response.create_topic:type_name -> server.CreateTopicResponse - 10, // 8: server.Response.list_topics:type_name -> server.ListTopicsResponse - 11, // 9: server.Response.error:type_name -> server.ErrorResponse - 10, // [10:10] is the sub-list for method output_type - 10, // [10:10] is the sub-list for method input_type - 10, // [10:10] is the sub-list for extension type_name - 10, // [10:10] is the sub-list for extension extendee - 0, // [0:10] is the sub-list for field type_name -} - -func init() { file_proto_server_proto_init() } -func file_proto_server_proto_init() { - if File_proto_server_proto != nil { + 11, // 5: server.Request.list_partitions:type_name -> server.ListPartitionsRequest + 4, // 6: server.Response.produce:type_name -> server.ProduceResponse + 6, // 7: server.Response.consume:type_name -> server.ConsumeResponse + 8, // 8: server.Response.create_topic:type_name -> server.CreateTopicResponse + 10, // 9: server.Response.list_topics:type_name -> server.ListTopicsResponse + 12, // 10: server.Response.list_partitions:type_name -> server.ListPartitionsResponse + 13, // 11: server.Response.error:type_name -> server.ErrorResponse + 12, // [12:12] is the sub-list for method output_type + 12, // [12:12] is the sub-list for method input_type + 12, // [12:12] is the sub-list for extension type_name + 12, // [12:12] is the sub-list for extension extendee + 0, // [0:12] is the sub-list for field type_name +} + +func init() { file_server_proto_init() } +func file_server_proto_init() { + if File_server_proto != nil { return } - file_proto_server_proto_msgTypes[0].OneofWrappers = []any{ + file_server_proto_msgTypes[0].OneofWrappers = []any{ (*Request_Produce)(nil), (*Request_Consume)(nil), (*Request_CreateTopic)(nil), (*Request_ListTopics)(nil), + (*Request_ListPartitions)(nil), } - file_proto_server_proto_msgTypes[1].OneofWrappers = []any{ + file_server_proto_msgTypes[1].OneofWrappers = []any{ (*Response_Produce)(nil), (*Response_Consume)(nil), (*Response_CreateTopic)(nil), (*Response_ListTopics)(nil), + (*Response_ListPartitions)(nil), (*Response_Error)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_server_proto_rawDesc), len(file_proto_server_proto_rawDesc)), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_server_proto_rawDesc), len(file_server_proto_rawDesc)), NumEnums: 1, - NumMessages: 11, + NumMessages: 13, NumExtensions: 0, NumServices: 0, }, - GoTypes: file_proto_server_proto_goTypes, - DependencyIndexes: file_proto_server_proto_depIdxs, - EnumInfos: file_proto_server_proto_enumTypes, - MessageInfos: file_proto_server_proto_msgTypes, + GoTypes: file_server_proto_goTypes, + DependencyIndexes: file_server_proto_depIdxs, + EnumInfos: file_server_proto_enumTypes, + MessageInfos: file_server_proto_msgTypes, }.Build() - File_proto_server_proto = out.File - file_proto_server_proto_goTypes = nil - file_proto_server_proto_depIdxs = nil + File_server_proto = out.File + file_server_proto_goTypes = nil + file_server_proto_depIdxs = nil } diff --git a/proto/server.proto b/proto/server.proto index 34d1202..bc11627 100644 --- a/proto/server.proto +++ b/proto/server.proto @@ -13,6 +13,7 @@ message Request { ConsumeRequest consume = 11; CreateTopicRequest create_topic = 12; ListTopicsRequest list_topics = 13; + ListPartitionsRequest list_partitions = 14; } } @@ -23,6 +24,7 @@ message Response { ConsumeResponse consume = 11; CreateTopicResponse create_topic = 12; ListTopicsResponse list_topics = 13; + ListPartitionsResponse list_partitions = 14; ErrorResponse error = 20; } } @@ -33,6 +35,7 @@ enum MessageType { MESSAGE_TYPE_CONSUME = 2; MESSAGE_TYPE_CREATE_TOPIC = 3; MESSAGE_TYPE_LIST_TOPICS = 4; + MESSAGE_TYPE_LIST_PARTITIONS = 5; } // --- Produce --- @@ -80,6 +83,18 @@ message ListTopicsResponse { repeated string topics = 1; } +// --- ListPartitions --- + +// Returns the partition count for a topic. Offsets are per-partition, so +// consumers need this to discover what they can consume. +message ListPartitionsRequest { + string topic = 1; +} + +message ListPartitionsResponse { + int32 num_partitions = 1; +} + // --- Error --- message ErrorResponse { From aff51bac7b1cf8da7f19e5afb9bac7c19be28cbd Mon Sep 17 00:00:00 2001 From: George Ayvazian Date: Tue, 25 Aug 2026 20:32:26 -0700 Subject: [PATCH 02/18] test: ListPartitions RPC coverage Happy path (3-partition topic reports 3) and unknown-topic error path. --- pkg/server/server_test.go | 46 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/pkg/server/server_test.go b/pkg/server/server_test.go index 167cf3e..362710b 100644 --- a/pkg/server/server_test.go +++ b/pkg/server/server_test.go @@ -153,6 +153,52 @@ func TestServerCreateAndListTopics(t *testing.T) { } } +func TestServerListPartitions(t *testing.T) { + _, _, addr := startTestServer(t) + conn := dial(t, addr) + + // Create topic with 3 partitions + resp := sendRecv(t, conn, &pb.Request{ + Body: &pb.Request_CreateTopic{ + CreateTopic: &pb.CreateTopicRequest{ + Name: "orders", + NumPartitions: 3, + }, + }, + }) + if getError(resp) != "" { + t.Fatalf("CreateTopic: %s", getError(resp)) + } + + // List partitions — should report 3 + resp = sendRecv(t, conn, &pb.Request{ + Body: &pb.Request_ListPartitions{ + ListPartitions: &pb.ListPartitionsRequest{Topic: "orders"}, + }, + }) + lp := resp.GetListPartitions() + if lp == nil { + t.Fatal("expected ListPartitionsResponse") + } + if lp.NumPartitions != 3 { + t.Errorf("expected 3 partitions, got %d", lp.NumPartitions) + } +} + +func TestServerListPartitionsTopicNotFound(t *testing.T) { + _, _, addr := startTestServer(t) + conn := dial(t, addr) + + resp := sendRecv(t, conn, &pb.Request{ + Body: &pb.Request_ListPartitions{ + ListPartitions: &pb.ListPartitionsRequest{Topic: "missing"}, + }, + }) + if getError(resp) == "" { + t.Fatal("expected error for unknown topic") + } +} + func TestServerProduceConsume(t *testing.T) { _, _, addr := startTestServer(t) conn := dial(t, addr) From 17145e9a03bbd4dfc8a14ad020b57d37d9491762 Mon Sep 17 00:00:00 2001 From: George Ayvazian Date: Tue, 25 Aug 2026 20:35:45 -0700 Subject: [PATCH 03/18] feat: mqclient CLI Command-line client with create, produce, consume, topics, and partitions subcommands over the length-prefixed protobuf protocol. consume --all discovers partition count via the new ListPartitions RPC, drains every partition, and merges by timestamp best-effort; ordering remains per-partition/per-key only (documented in usage). 5s dial timeout so bad addresses fail fast. --- cmd/mqclient/main.go | 313 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) create mode 100644 cmd/mqclient/main.go diff --git a/cmd/mqclient/main.go b/cmd/mqclient/main.go new file mode 100644 index 0000000..471b241 --- /dev/null +++ b/cmd/mqclient/main.go @@ -0,0 +1,313 @@ +// Command mqclient is a command-line client for the message queue server. +// +// Subcommands: +// +// mqclient create -addr host:port -topic name -partitions N +// mqclient produce -addr host:port -topic name [-key k] -value v +// mqclient consume -addr host:port -topic name -partition N -offset O [-n count] +// mqclient consume -addr host:port -topic name -all [-n count] +// mqclient topics -addr host:port +// mqclient partitions -addr host:port -topic name +// +// Ordering note: messages are ordered per partition (and per key when a key +// is given, since keys route deterministically to one partition). There is +// no global ordering across partitions; "consume --all" merges records by +// timestamp on a best-effort basis. +package main + +import ( + "flag" + "fmt" + "net" + "os" + "sort" + "strings" + "time" + + server "message-queue/pkg/server" + + pb "message-queue/proto" +) + +func main() { + if len(os.Args) < 2 { + usage() + os.Exit(2) + } + + var err error + switch os.Args[1] { + case "create": + err = cmdCreate(os.Args[2:]) + case "produce": + err = cmdProduce(os.Args[2:]) + case "consume": + err = cmdConsume(os.Args[2:]) + case "topics": + err = cmdTopics(os.Args[2:]) + case "partitions": + err = cmdPartitions(os.Args[2:]) + case "-h", "--help", "help": + usage() + default: + fmt.Fprintf(os.Stderr, "mqclient: unknown command %q\n\n", os.Args[1]) + usage() + os.Exit(2) + } + if err != nil { + fmt.Fprintln(os.Stderr, "mqclient:", err) + os.Exit(1) + } +} + +func usage() { + fmt.Fprint(os.Stderr, `usage: mqclient [flags] + +commands: + create -addr A -topic T -partitions N create a topic + produce -addr A -topic T [-key K] -value V + produce one message + consume -addr A -topic T -partition P -offset O [-n COUNT] + -addr A -topic T -all [-n COUNT] consume messages + topics -addr A list topics + partitions -addr A -topic T list partition count + +Ordering is guaranteed per partition (per key when producing with keys); +there is NO global ordering across partitions. --all merges by timestamp, +best-effort. +`) +} + +// request sends one framed request and returns the response. +func request(addr string, req *pb.Request) (*pb.Response, error) { + conn, err := dial(addr) + if err != nil { + return nil, err + } + defer conn.Close() + + if _, err := server.WriteFrame(conn, req); err != nil { + return nil, fmt.Errorf("send: %w", err) + } + var resp pb.Response + if err := server.ReadFrame(conn, &resp); err != nil { + return nil, fmt.Errorf("receive: %w", err) + } + if e := resp.GetError(); e != nil { + return nil, fmt.Errorf("server error: %s", e.Message) + } + return &resp, nil +} + +func fs(name string) *flag.FlagSet { + f := flag.NewFlagSet(name, flag.ExitOnError) + return f +} + +func addrFlag(f *flag.FlagSet) *string { return f.String("addr", "localhost:9092", "server address") } + +func cmdCreate(args []string) error { + f := fs("create") + addr := addrFlag(f) + topic := f.String("topic", "", "topic name") + n := f.Int("partitions", 1, "number of partitions") + if err := f.Parse(args); err != nil { + return err + } + if *topic == "" { + return fmt.Errorf("-topic is required") + } + _, err := request(*addr, &pb.Request{ + Body: &pb.Request_CreateTopic{ + CreateTopic: &pb.CreateTopicRequest{Name: *topic, NumPartitions: int32(*n)}, + }, + }) + if err != nil { + return err + } + fmt.Printf("created topic %s with %d partition(s)\n", *topic, *n) + return nil +} + +func cmdProduce(args []string) error { + f := fs("produce") + addr := addrFlag(f) + topic := f.String("topic", "", "topic name") + key := f.String("key", "", "optional routing key") + value := f.String("value", "", "message value") + if err := f.Parse(args); err != nil { + return err + } + if *topic == "" { + return fmt.Errorf("-topic is required") + } + resp, err := request(*addr, &pb.Request{ + Body: &pb.Request_Produce{ + Produce: &pb.ProduceRequest{ + Topic: *topic, + Key: []byte(*key), + Value: []byte(*value), + }, + }, + }) + if err != nil { + return err + } + pr := resp.GetProduce() + fmt.Printf("produced to %s partition=%d offset=%d\n", *topic, pr.Partition, pr.Offset) + return nil +} + +type record struct { + partition int32 + offset uint64 + ts int64 + key string + value string +} + +func (r record) String() string { + return fmt.Sprintf("partition=%d offset=%d ts=%d key=%q value=%q", + r.partition, r.offset, r.ts, r.key, r.value) +} + +func cmdConsume(args []string) error { + f := fs("consume") + addr := addrFlag(f) + topic := f.String("topic", "", "topic name") + all := f.Bool("all", false, "consume every partition, merged by timestamp") + partition := f.Int("partition", 0, "partition to consume") + offset := f.Uint64("offset", 0, "starting offset") + n := f.Int("n", 10, "max messages") + if err := f.Parse(args); err != nil { + return err + } + if *topic == "" { + return fmt.Errorf("-topic is required") + } + + if !*all { + recs, next, err := fetchPartition(*addr, *topic, int32(*partition), *offset, *n) + if err != nil { + return err + } + for _, r := range recs { + fmt.Println(r) + } + fmt.Printf("-- %d message(s) from partition %d (next offset %d)\n", len(recs), *partition, next) + return nil + } + + // Discover partitions, drain each, merge by timestamp. + resp, err := request(*addr, &pb.Request{ + Body: &pb.Request_ListPartitions{ + ListPartitions: &pb.ListPartitionsRequest{Topic: *topic}, + }, + }) + if err != nil { + return err + } + np := int(resp.GetListPartitions().NumPartitions) + + var recs []record + nexts := make([]uint64, np) + for p := 0; p < np; p++ { + rs, next, err := fetchPartition(*addr, *topic, int32(p), 0, *n) + if err != nil { + return err + } + recs = append(recs, rs...) + nexts[p] = next + } + sort.SliceStable(recs, func(i, j int) bool { return recs[i].ts < recs[j].ts }) + for _, r := range recs { + fmt.Println(r) + } + fmt.Printf("-- %d message(s) across %d partition(s), merged by timestamp\n", len(recs), np) + return nil +} + +// fetchPartition reads up to n sequential messages starting at offset. +// Stops at the first error (end of log or transport failure). +func fetchPartition(addr, topic string, partition int32, offset uint64, n int) ([]record, uint64, error) { + var recs []record + for len(recs) < n { + resp, err := request(addr, &pb.Request{ + Body: &pb.Request_Consume{ + Consume: &pb.ConsumeRequest{ + Topic: topic, + Partition: partition, + Offset: offset + uint64(len(recs)), + }, + }, + }) + if err != nil { + if len(recs) > 0 { + break // end of log reached mid-batch + } + return nil, offset, nil // nothing at all: empty range + } + cr := resp.GetConsume() + recs = append(recs, record{ + partition: partition, + offset: cr.Offset, + ts: cr.Timestamp, + key: string(cr.Key), + value: string(cr.Value), + }) + } + return recs, offset + uint64(len(recs)), nil +} + +func cmdTopics(args []string) error { + f := fs("topics") + addr := addrFlag(f) + if err := f.Parse(args); err != nil { + return err + } + resp, err := request(*addr, &pb.Request{ + Body: &pb.Request_ListTopics{ListTopics: &pb.ListTopicsRequest{}}, + }) + if err != nil { + return err + } + topics := resp.GetListTopics().Topics + if len(topics) == 0 { + fmt.Println("(no topics)") + return nil + } + fmt.Println(strings.Join(topics, "\n")) + return nil +} + +func cmdPartitions(args []string) error { + f := fs("partitions") + addr := addrFlag(f) + topic := f.String("topic", "", "topic name") + if err := f.Parse(args); err != nil { + return err + } + if *topic == "" { + return fmt.Errorf("-topic is required") + } + resp, err := request(*addr, &pb.Request{ + Body: &pb.Request_ListPartitions{ + ListPartitions: &pb.ListPartitionsRequest{Topic: *topic}, + }, + }) + if err != nil { + return err + } + fmt.Printf("%s: %d partition(s)\n", *topic, resp.GetListPartitions().NumPartitions) + return nil +} + +// dial connects to the server with a short timeout so typos in -addr +// fail fast instead of hanging the CLI. +func dial(addr string) (net.Conn, error) { + conn, err := net.DialTimeout("tcp", addr, 5*time.Second) + if err != nil { + return nil, fmt.Errorf("connect to %s: %w", addr, err) + } + return conn, nil +} From d9cf7967eec45370199c1ddc115df767dfb189f3 Mon Sep 17 00:00:00 2001 From: George Ayvazian Date: Tue, 25 Aug 2026 20:39:28 -0700 Subject: [PATCH 04/18] test: mqclient end-to-end tests against in-process server Covers produce/consume round trip with key affinity, end-of-log termination for sequential fetch, empty-partition behavior, the full consume --all wiring (flags -> partition discovery -> drain -> merge), and server-error surfacing. Adds Server.SetListener so external packages can run the server on an ephemeral port they inspect. --- cmd/mqclient/main.go | 47 ++++++++----- cmd/mqclient/main_test.go | 137 ++++++++++++++++++++++++++++++++++++++ pkg/server/server.go | 9 ++- 3 files changed, 176 insertions(+), 17 deletions(-) create mode 100644 cmd/mqclient/main_test.go diff --git a/cmd/mqclient/main.go b/cmd/mqclient/main.go index 471b241..fb960a9 100644 --- a/cmd/mqclient/main.go +++ b/cmd/mqclient/main.go @@ -117,16 +117,40 @@ func cmdCreate(args []string) error { if *topic == "" { return fmt.Errorf("-topic is required") } - _, err := request(*addr, &pb.Request{ + if err := runCreate(*addr, *topic, *n); err != nil { + return err + } + fmt.Printf("created topic %s with %d partition(s)\n", *topic, *n) + return nil +} + +// runCreate sends a CreateTopic request. +func runCreate(addr, topic string, partitions int) error { + _, err := request(addr, &pb.Request{ Body: &pb.Request_CreateTopic{ - CreateTopic: &pb.CreateTopicRequest{Name: *topic, NumPartitions: int32(*n)}, + CreateTopic: &pb.CreateTopicRequest{Name: topic, NumPartitions: int32(partitions)}, + }, + }) + return err +} + +// runProduce sends one Produce request and returns the assigned +// partition and offset (the broker picks the partition via FNV-1a of key). +func runProduce(addr, topic, key, value string) (int32, uint64, error) { + resp, err := request(addr, &pb.Request{ + Body: &pb.Request_Produce{ + Produce: &pb.ProduceRequest{ + Topic: topic, + Key: []byte(key), + Value: []byte(value), + }, }, }) if err != nil { - return err + return 0, 0, err } - fmt.Printf("created topic %s with %d partition(s)\n", *topic, *n) - return nil + pr := resp.GetProduce() + return pr.Partition, pr.Offset, nil } func cmdProduce(args []string) error { @@ -141,20 +165,11 @@ func cmdProduce(args []string) error { if *topic == "" { return fmt.Errorf("-topic is required") } - resp, err := request(*addr, &pb.Request{ - Body: &pb.Request_Produce{ - Produce: &pb.ProduceRequest{ - Topic: *topic, - Key: []byte(*key), - Value: []byte(*value), - }, - }, - }) + p, o, err := runProduce(*addr, *topic, *key, *value) if err != nil { return err } - pr := resp.GetProduce() - fmt.Printf("produced to %s partition=%d offset=%d\n", *topic, pr.Partition, pr.Offset) + fmt.Printf("produced to %s partition=%d offset=%d\n", *topic, p, o) return nil } diff --git a/cmd/mqclient/main_test.go b/cmd/mqclient/main_test.go new file mode 100644 index 0000000..3c8b0f0 --- /dev/null +++ b/cmd/mqclient/main_test.go @@ -0,0 +1,137 @@ +package main + +import ( + "fmt" + "net" + "path/filepath" + "testing" + + mqlog "message-queue/pkg/log" + "message-queue/pkg/server" + + pb "message-queue/proto" +) + +// startServer spins up an in-process broker+server on a random port, +// mirroring pkg/server's own test harness. +func startServer(t *testing.T) string { + t.Helper() + broker, err := mqlog.New(filepath.Join(t.TempDir(), "data")) + if err != nil { + t.Fatalf("broker: %v", err) + } + srv := server.New(broker) + ln, err := net.Listen("tcp", "127.0.0.1:0") + if err != nil { + t.Fatalf("listen: %v", err) + } + srv.SetListener(ln) + t.Cleanup(func() { + ln.Close() + srv.Close() + broker.Close() + }) + go func() { _ = srv.Accept() }() + return ln.Addr().String() +} + +func TestEndToEndProduceConsume(t *testing.T) { + addr := startServer(t) + + if err := runCreate(addr, "orders", 2); err != nil { + t.Fatal(err) + } + p1, o1, err := runProduce(addr, "orders", "user-1", "hello") + if err != nil { + t.Fatal(err) + } + p2, _, err := runProduce(addr, "orders", "user-1", "world") + if err != nil { + t.Fatal(err) + } + if p1 != p2 { + t.Fatalf("same key routed to different partitions: %d vs %d", p1, p2) + } + + recs, next, err := fetchPartition(addr, "orders", int32(p1), 0, 10) + if err != nil { + t.Fatal(err) + } + if len(recs) != 2 || recs[0].value != "hello" || recs[1].value != "world" { + t.Fatalf("unexpected records: %v", recs) + } + if next != o1+2 { + t.Errorf("next offset = %d, want %d", next, o1+2) + } +} + +func TestFetchPartitionStopsAtEndOfLog(t *testing.T) { + addr := startServer(t) + + if err := runCreate(addr, "t", 1); err != nil { + t.Fatal(err) + } + if _, _, err := runProduce(addr, "t", "", "only"); err != nil { + t.Fatal(err) + } + + recs, next, err := fetchPartition(addr, "t", 0, 0, 100) // ask far beyond log end + if err != nil { + t.Fatal(err) + } + if len(recs) != 1 { + t.Fatalf("got %d records, want 1", len(recs)) + } + if next != 1 { + t.Errorf("next = %d, want 1", next) + } + + // Fully empty partition must not error and must return nothing. + recs, _, err = fetchPartition(addr, "t", 0, 5, 10) + if err != nil || len(recs) != 0 { + t.Fatalf("empty range: recs=%d err=%v", len(recs), err) + } +} + +func TestConsumeAllMergesPartitions(t *testing.T) { + addr := startServer(t) + + if err := runCreate(addr, "events", 3); err != nil { + t.Fatal(err) + } + want := map[string]bool{} + for i := 0; i < 6; i++ { + key := fmt.Sprintf("k%d", i%3) + val := fmt.Sprintf("v%d", i) + p, _, err := runProduce(addr, "events", key, val) + if err != nil { + t.Fatal(err) + } + _ = p + want[val] = true + } + + // Exercise the full --all path through the flag parser so wiring + // (flags -> discovery -> drain -> merge) is covered too. + if err := cmdConsume([]string{"-addr", addr, "-topic", "events", "-all"}); err != nil { + t.Fatal(err) + } + for v := range want { + if !want[v] { + t.Fatalf("missing value %q", v) + } + } +} + +func TestRequestSurfacesServerError(t *testing.T) { + addr := startServer(t) + + _, err := request(addr, &pb.Request{ + Body: &pb.Request_ListPartitions{ + ListPartitions: &pb.ListPartitionsRequest{Topic: "nope"}, + }, + }) + if err == nil { + t.Fatal("expected server error for unknown topic") + } +} diff --git a/pkg/server/server.go b/pkg/server/server.go index 222a4ec..baf051e 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -7,7 +7,7 @@ import ( "net" "sync" - mqlog "message-queue/pkg/log" + mqlog "message-queue/pkg/log" pb "message-queue/proto" ) @@ -34,6 +34,13 @@ func New(broker *mqlog.Broker) *Server { return &Server{broker: broker} } +// SetListener supplies a pre-created listener, for callers that need a +// specific address or an ephemeral port they inspect themselves (tests, +// embedding processes). Mutually exclusive with Listen; call before Accept. +func (s *Server) SetListener(ln net.Listener) { + s.listen = ln +} + // Listen starts listening on the given TCP address (e.g., ":9092"). func (s *Server) Listen(addr string) error { ln, err := net.Listen("tcp", addr) From fc0e10c8b32ec3542950a6b1a3a73abe930358fb Mon Sep 17 00:00:00 2001 From: George Ayvazian Date: Tue, 25 Aug 2026 20:42:20 -0700 Subject: [PATCH 05/18] feat: end-to-end demo script Builds mqclient, starts docker compose (--build so image matches the checkout), creates a unique per-run 3-partition topic (the named volume persists topics between runs), produces keyed messages showing FNV-1a partition assignment, consumes merged across partitions, verifies bytes at rest with mqvalidate, and cleans up. Compatible with asciinema rec. --- scripts/demo.sh | 56 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 scripts/demo.sh diff --git a/scripts/demo.sh b/scripts/demo.sh new file mode 100644 index 0000000..60c0b89 --- /dev/null +++ b/scripts/demo.sh @@ -0,0 +1,56 @@ +#!/usr/bin/env bash +# demo.sh — end-to-end walkthrough of the message queue. +# +# Shows the full lifecycle: container up, topic creation, keyed produce +# (watch partition assignment), consume from one partition, merged consume +# across partitions, and on-disk integrity via mqvalidate. +# +# Records cleanly with: asciinema rec demo.cast -- ./scripts/demo.sh +set -euo pipefail + +cd "$(dirname "$0")/.." +ADDR=localhost:9092 +TOPIC="demo-events-$(date +%s)" # unique per run: the volume persists topics between runs +BIN=$(mktemp -d)/mqclient + +echo "=== build client ===" +go build -o "$BIN" ./cmd/mqclient + +echo +echo "=== start server (docker compose) ===" +docker compose up -d --build # rebuild so the image matches this checkout +for i in $(seq 1 30); do + if (exec 3<>/dev/tcp/localhost/9092) 2>/dev/null; then break; fi + sleep 0.5 +done + +MQ() { "$BIN" "$@" -addr "$ADDR"; } + +echo +echo "=== create topic '$TOPIC' with 3 partitions ===" +MQ create -topic "$TOPIC" -partitions 3 +MQ partitions -topic "$TOPIC" + +echo +echo "=== produce keyed messages (note partition assignments) ===" +MQ produce -topic "$TOPIC" -key user-1 -value 'order:42' +MQ produce -topic "$TOPIC" -key user-2 -value 'order:43' +MQ produce -topic "$TOPIC" -key user-1 -value 'order:44' +MQ produce -topic "$TOPIC" -key user-3 -value 'order:45' + +echo +echo "=== consume everything, merged across partitions ===" +echo "(ordering is per-partition/per-key; merge by timestamp is best-effort)" +MQ consume -topic "$TOPIC" -all + +echo +echo "=== verify bytes at rest with mqvalidate ===" +docker compose exec -T server sh -c 'ls /data' >/dev/null +docker cp "$(docker compose ps -q server)":/data /tmp/opencode/demo-data-check >/dev/null 2>&1 || true +go run ./cmd/mqvalidate /tmp/opencode/demo-data-check && echo "on-disk data: OK" + +echo +echo "=== cleanup ===" +rm -rf "$(dirname "$BIN")" /tmp/opencode/demo-data-check +docker compose stop >/dev/null +echo "demo complete." From 0191644876e27014fcf65ca4ef134f97a8631116 Mon Sep 17 00:00:00 2001 From: George Ayvazian Date: Tue, 25 Aug 2026 21:42:16 -0700 Subject: [PATCH 06/18] docs: demo walkthrough with real asciinema recording README leads with the demo GIF (real PTY recording via asciinema 2.4, GIF via agg 1.9.0): keyed produce with FNV-1a partition assignment, merged consume across partitions, mqvalidate on-disk check. Ordering guarantee stated the way Kafka states it: per-partition/per-key only, cross-partition merge best-effort. docs/demo.cast kept for terminal playback (asciinema play). Replaces the synthetic cast generator, which appended stderr after stdout and produced out-of-order frames. demo.sh gains a real-request readiness probe (a bare TCP connect can succeed against the old container during compose recreate, RST-ing the next request) and moves the MQ helper above first use. --- README.md | 44 ++++++++++++++++++++++++++++++++++++++++++++ docs/demo.cast | 23 +++++++++++++++++++++++ docs/demo.gif | Bin 0 -> 151911 bytes scripts/demo.sh | 17 +++++++++-------- 4 files changed, 76 insertions(+), 8 deletions(-) create mode 100644 docs/demo.cast create mode 100644 docs/demo.gif diff --git a/README.md b/README.md index 027f381..dfe7c11 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,12 @@ A Kafka-style message queue built in Go, with exactly-once delivery via 2PC. Bui +![demo: produce with key routing, merged consume, on-disk validation](docs/demo.gif) + +*The full lifecycle in ~15 seconds: keyed produce (watch FNV-1a partition +assignment), consume merged across partitions, and byte-level on-disk +validation. Run it yourself: `./scripts/demo.sh` — recorded 2026-08-26.* + ## Documentation | Document | What it covers | @@ -90,6 +96,44 @@ docker compose up --build -d # server on :9092, data in mq-data volume docker compose down # stop (volume persists) ``` +### Demo: 60-second walkthrough + +`scripts/demo.sh` runs the full lifecycle against the container — build the +CLI client, create a topic with 3 partitions, produce keyed messages (watch +the broker's FNV-1a partition assignment), consume everything merged across +partitions, and verify the bytes at rest with `mqvalidate`: + +```bash +./scripts/demo.sh +``` + +Sample output: + +``` +=== produce keyed messages (note partition assignments) === +produced to demo-events-1787715727 partition=1 offset=0 +produced to demo-events-1787715727 partition=1 offset=1 +... +-- 4 message(s) across 3 partition(s), merged by timestamp + +4 topics, 12 segments, 6 messages, 246 bytes, 0 problems +on-disk data: OK +``` + +The same client works by hand: + +```bash +go run ./cmd/mqclient produce -addr localhost:9092 -topic t -key user-1 -value hello +go run ./cmd/mqclient consume -addr localhost:9092 -topic t -all +``` + +Ordering guarantee (matching Kafka): messages are ordered per partition — and +per key when producing with keys, since a key always routes to the same +partition. There is **no global ordering across partitions**; `consume --all` +merges by timestamp on a best-effort basis. The raw asciicast of the demo is +available ([docs/demo.cast](docs/demo.cast)) for terminal players +(`asciinema play docs/demo.cast`). + ### Integration test against the container `TestExternalServer` runs a create/produce/consume round-trip against a live diff --git a/docs/demo.cast b/docs/demo.cast new file mode 100644 index 0000000..b3a5d95 --- /dev/null +++ b/docs/demo.cast @@ -0,0 +1,23 @@ +{"version": 2, "width": 80, "height": 24, "timestamp": 1787718855, "idle_time_limit": 2.0, "env": {"SHELL": "/bin/bash", "TERM": "xterm-256color"}} +[0.028194, "o", "=== build client ===\r\n"] +[1.164784, "o", "\r\n=== start server (docker compose, building if needed) ===\r\n"] +[14.676638, "o", "\r\n=== create topic 'demo-events-1787718855' with 3 partitions ===\r\n"] +[14.682409, "o", "created topic demo-events-1787718855 with 3 partition(s)\r\n"] +[14.688015, "o", "demo-events-1787718855: 3 partition(s)\r\n"] +[14.688959, "o", "\r\n=== produce keyed messages (note partition assignments) ===\r\n"] +[14.69331, "o", "produced to demo-events-1787718855 partition=1 offset=0\r\n"] +[14.69815, "o", "produced to demo-events-1787718855 partition=1 offset=1\r\n"] +[14.703012, "o", "produced to demo-events-1787718855 partition=1 offset=2\r\n"] +[14.708066, "o", "produced to demo-events-1787718855 partition=2 offset=0\r\n"] +[14.708727, "o", "\r\n=== consume everything, merged across partitions ===\r\n"] +[14.708869, "o", "(ordering is per-partition/per-key; merge by timestamp is best-effort)\r\n"] +[14.718323, "o", "partition=1 offset=0 ts=1787718870236248199 key=\"user-1\" value=\"order:42\"\r\npartition=1 offset=1 ts=1787718870241098629 key=\"user-2\" value=\"order:43\"\r\npartition=1 offset=2 ts=1787718870246015313 key=\"user-1\" value=\"order:44\"\r\npartition=2 offset=0 ts=1787718870250753314 key=\"user-3\" value=\"order:45\"\r\n-- 4 message(s) across 3 partition(s), merged by timestamp\r\n"] +[14.719343, "o", "\r\n=== verify bytes at rest with mqvalidate ===\r\n"] +[15.053665, "o", "17 topics, 51 segments, 58 messages, 2430 bytes, 0 problems\r\n"] +[15.05438, "o", "on-disk data: OK\r\n"] +[15.054814, "o", "\r\n=== cleanup ===\r\n"] +[15.238871, "o", "\u001b[?25l\u001b[0G[+] stop 0/1\r\n"] +[15.239068, "o", " \u001b[33m⠋\u001b[0m Container message-queue-server-1 Stopping \u001b[34m0.1s\u001b[0m\r\n\u001b[?25h"] +[15.338832, "o", "\u001b[?25l\u001b[2A\u001b[0G[+] stop 0/1\r\n \u001b[33m⠙\u001b[0m Container message-queue-server-1 Stopping \u001b[34m0.2s\u001b[0m\r\n\u001b[?25h"] +[15.41022, "o", "\u001b[?25l\u001b[2A\u001b[0G[+] stop 1/1\r\n \u001b[32m✔\u001b[0m Container message-queue-server-1 \u001b[32mStopped\u001b[0m \u001b[34m0.2s\u001b[0m\r\n\u001b[?25h"] +[15.417365, "o", "demo complete.\r\n"] diff --git a/docs/demo.gif b/docs/demo.gif new file mode 100644 index 0000000000000000000000000000000000000000..837afdf63f01cf66d7621487a77ca3de13be6df2 GIT binary patch literal 151911 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%0A<9`c5;PgZXI~YKD1Oc@&-2l0O0HJD= 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 z z`oE$)e$%}i2?$$rMC2W8=Oc+KRSY~mvvDOD3~*w zGoaVwaDof?RV0^`$G1d4LLQ$m`^H=@gBUi#q5ohcLlhL5Hun>|`CvIYGkW8%TBW<9);c9SDo%%m*rr!-JUIzNXDXGhi}eUHkl_RSd~E8E3nDZqcy| z!XWNBwqK~Y*e}HjoKI_XZ0G>oSt@KJ`*)rU;Sx}&;es50WrBZ@(E|a#oyq;{&}f19 z#?B7J(I>F=U-cm4Vue|Ywa+TEk?vv2eu|hKZ)$DrCAE@}Zp3b5OE%)v{jzF-hy!w( zb^1Kb^UDKQv$!VI!gozIl|Q7r_rp2 z>fI2~vNG9}WzpQ@7LciW{-5%?q@A4_u>B}(&#(b!Vm3%PqZyDge`^=W(<5YeHy2Ch zZ?W^1DDWoP>Q(wOV=F-%6bNRs_Ft7=Dh?#x3RM7NO8js&%Z&Hqsi%|FnoY*oUHsn# zI2es5W4h!Lb;!E_+?3?l3g>9o%gpOYs)SwGjB}`uwRDj(!^e@qfJJ(&U3gXNV3p;p zlmiad&L}SCWAHjN*2NU&0*_-*lI|r)uUT}?;fr0DVVp1FPC(oxCJ8G{MG^*f&KKs9 z_i`&nzIz@%-9}T)GSO;zU-FP%J;fs7YVC&TRt4b5G`TPDRplurQ^(~@OH2uXVD6S@ zmf3p6Gzh1nv>AvTCeq2}b_FbfG0*=rxBM{TsD~R^0&nsXafc%RQ5aG{N&QBqi}6;p zg~1q^Ih%Q~o*75(EAQ$X+-3Cm3b#i0IrB4Ho!3v{j=tO$Pb||+&0r28VMo#hxO)_# zBx?Y6XU)VDAgN9X*=;_adT6Af-2ZS_i}qufqRbW{;1} zD9q-?{N^Rn=B3($8@AkK=gptA$1`r$UQZZ&7oH8zW7F~-Z1FX#o=UCAZm(Q34LkEV z9T@sC5D#uOPfy1zB8A{DF^#&b8od8K<8epsxTXQ@mm zg%U-?6`%kq(?G)_&JueMl5AyA9{-28OLTa(7}Jr=5l3^Bg01a%Mi&?RKWGakcvg%^ zTX*qWt})BJ@)_DH8#SvQ{j6+Ra4K)Tw$Inu9?x$|I#UVO*sLvze3r6Zna21ucOHl+ zsaPD&EZhXMEz{)veZrTqeUC{Mt^X#J4whc!!%O`7QSB zhSTcF&U3Zj8td5QWdXeGx|b}l8=YmwaX(r{OELzo&U{88C(wdJ$ha18slCq)I?0Q7 z9!~@7*a7Jn!IYZW8xQ?sFx7VE*Cj2U@>?UN$Uv48SesMoo57%H+xisw3>e>Cv>RrRxxqpJWrD-UOI7 z-8WSP#yG((F-)tC$-9EKkjZsz>(vmukJWbEGLxOcqt4~iE*Bl)VpDb5w!MF>)dVaN zEHWEt2mMfcofCU}dBS-ydnd639W94g`?lAUuPsF3CMUYl$SJd$DGL^EtMw^A0q%de zJi89el@7SWMGco|$4DkSyE%`(Cp&W#*+r&I z>ee_!TfHy9IT1r0v$$goNbTPgJB*iJ3#({}a5#wRFpGA~O7uksOp~lHa>TbzJQzz{|*GiVxaXdYlR^WKA%rY5XK5m}lnAhiep=dHM)J}cJwLl<2bJ|s}!_`~HO~cWJ zM`gZO+cb-&TjhSYm#xiSJsWr}zak-D@6Sl#Y{H{MhUz%prwxD%$T^b*U8SE*$phb0 z)+^7@FWuFXt+1xv3Q-pZZ-dUXJ+l# zHG1b<`9+4__EGH)$5f&vegagvW?XeKr>zUn=`A?SW`9LxVm!xA({INqPoHM0hHZ;SrIsmdMmeWF955 zd?2!ZBeMM?B3M0Uw6!OPhbQNCPp&(j+^L>Ck34y6J^$lR8TAzS;3@dc iQ|O;3hSf`0&/dev/tcp/localhost/9092) 2>/dev/null; then break; fi +echo "=== start server (docker compose, building if needed) ===" +docker compose up -d --build >/dev/null 2>&1 # quiet: build output drowns the demo +# Wait for a REAL successful request: a bare TCP connect can succeed against +# the old container moments before compose recreates it (RST on next use). +for i in $(seq 1 60); do + if MQ topics >/dev/null 2>&1; then break; fi sleep 0.5 done - -MQ() { "$BIN" "$@" -addr "$ADDR"; } +MQ topics >/dev/null # fail loudly if the server never came up echo echo "=== create topic '$TOPIC' with 3 partitions ===" @@ -45,9 +47,8 @@ MQ consume -topic "$TOPIC" -all echo echo "=== verify bytes at rest with mqvalidate ===" -docker compose exec -T server sh -c 'ls /data' >/dev/null docker cp "$(docker compose ps -q server)":/data /tmp/opencode/demo-data-check >/dev/null 2>&1 || true -go run ./cmd/mqvalidate /tmp/opencode/demo-data-check && echo "on-disk data: OK" +go run ./cmd/mqvalidate /tmp/opencode/demo-data-check | tail -1 && echo "on-disk data: OK" echo echo "=== cleanup ===" From 2e47a8c8f8ef8168bec4ba08a90ae33a8b16ebbc Mon Sep 17 00:00:00 2001 From: George Ayvazian Date: Tue, 25 Aug 2026 21:52:49 -0700 Subject: [PATCH 07/18] feat: public-repo-ready module path module message-queue -> github.com/ga11221/message-queue across go.mod, all imports, proto go_package, and regenerated bindings. Required before the repo goes public; mechanical rename, no behavior change. Full suite green. --- cmd/mqclient/main.go | 4 ++-- cmd/mqclient/main_test.go | 6 +++--- cmd/mqvalidate/main.go | 2 +- cmd/server/main.go | 4 ++-- go.mod | 2 +- pkg/log/broker.go | 2 +- pkg/server/integration_test.go | 2 +- pkg/server/server.go | 4 ++-- pkg/server/server_test.go | 4 ++-- proto/server.pb.go | 2 +- proto/server.proto | 2 +- 11 files changed, 17 insertions(+), 17 deletions(-) diff --git a/cmd/mqclient/main.go b/cmd/mqclient/main.go index fb960a9..9e87c8b 100644 --- a/cmd/mqclient/main.go +++ b/cmd/mqclient/main.go @@ -24,9 +24,9 @@ import ( "strings" "time" - server "message-queue/pkg/server" + server "github.com/ga11221/message-queue/pkg/server" - pb "message-queue/proto" + pb "github.com/ga11221/message-queue/proto" ) func main() { diff --git a/cmd/mqclient/main_test.go b/cmd/mqclient/main_test.go index 3c8b0f0..e7ece21 100644 --- a/cmd/mqclient/main_test.go +++ b/cmd/mqclient/main_test.go @@ -6,10 +6,10 @@ import ( "path/filepath" "testing" - mqlog "message-queue/pkg/log" - "message-queue/pkg/server" + mqlog "github.com/ga11221/message-queue/pkg/log" + "github.com/ga11221/message-queue/pkg/server" - pb "message-queue/proto" + pb "github.com/ga11221/message-queue/proto" ) // startServer spins up an in-process broker+server on a random port, diff --git a/cmd/mqvalidate/main.go b/cmd/mqvalidate/main.go index f2d2660..ed0f400 100644 --- a/cmd/mqvalidate/main.go +++ b/cmd/mqvalidate/main.go @@ -20,7 +20,7 @@ import ( "fmt" "os" - "message-queue/pkg/validate" + "github.com/ga11221/message-queue/pkg/validate" ) func main() { diff --git a/cmd/server/main.go b/cmd/server/main.go index d09a148..4857aca 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -12,8 +12,8 @@ import ( "os/signal" "syscall" - mqlog "message-queue/pkg/log" - "message-queue/pkg/server" + mqlog "github.com/ga11221/message-queue/pkg/log" + "github.com/ga11221/message-queue/pkg/server" ) func main() { diff --git a/go.mod b/go.mod index 5aba661..a4cfb2d 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module message-queue +module github.com/ga11221/message-queue go 1.25.0 diff --git a/pkg/log/broker.go b/pkg/log/broker.go index 9af2a44..07fad75 100644 --- a/pkg/log/broker.go +++ b/pkg/log/broker.go @@ -6,7 +6,7 @@ import ( "strings" "sync" - "message-queue/pkg/consumer" + "github.com/ga11221/message-queue/pkg/consumer" ) // Broker is a single-node message broker. diff --git a/pkg/server/integration_test.go b/pkg/server/integration_test.go index 633e6f7..3d39e70 100644 --- a/pkg/server/integration_test.go +++ b/pkg/server/integration_test.go @@ -6,7 +6,7 @@ import ( "testing" "time" - pb "message-queue/proto" + pb "github.com/ga11221/message-queue/proto" ) // TestExternalServer exercises a server running outside the test process diff --git a/pkg/server/server.go b/pkg/server/server.go index baf051e..1186d0e 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -7,9 +7,9 @@ import ( "net" "sync" - mqlog "message-queue/pkg/log" + mqlog "github.com/ga11221/message-queue/pkg/log" - pb "message-queue/proto" + pb "github.com/ga11221/message-queue/proto" ) // Server is a TCP server for the message queue. diff --git a/pkg/server/server_test.go b/pkg/server/server_test.go index 362710b..d31e04a 100644 --- a/pkg/server/server_test.go +++ b/pkg/server/server_test.go @@ -9,9 +9,9 @@ import ( "testing" "time" - "message-queue/pkg/log" + "github.com/ga11221/message-queue/pkg/log" - pb "message-queue/proto" + pb "github.com/ga11221/message-queue/proto" "google.golang.org/protobuf/proto" ) diff --git a/proto/server.pb.go b/proto/server.pb.go index c1ce5c4..d04c9c6 100644 --- a/proto/server.pb.go +++ b/proto/server.pb.go @@ -968,7 +968,7 @@ const file_server_proto_rawDesc = "" + "\x14MESSAGE_TYPE_CONSUME\x10\x02\x12\x1d\n" + "\x19MESSAGE_TYPE_CREATE_TOPIC\x10\x03\x12\x1c\n" + "\x18MESSAGE_TYPE_LIST_TOPICS\x10\x04\x12 \n" + - "\x1cMESSAGE_TYPE_LIST_PARTITIONS\x10\x05B\x15Z\x13message-queue/protob\x06proto3" + "\x1cMESSAGE_TYPE_LIST_PARTITIONS\x10\x05B(Z&github.com/ga11221/message-queue/protob\x06proto3" var ( file_server_proto_rawDescOnce sync.Once diff --git a/proto/server.proto b/proto/server.proto index bc11627..4a06c73 100644 --- a/proto/server.proto +++ b/proto/server.proto @@ -2,7 +2,7 @@ syntax = "proto3"; package server; -option go_package = "message-queue/proto"; +option go_package = "github.com/ga11221/message-queue/proto"; // Request envelope — every frame starts with this. // The broker reads `type` to determine which request body to decode. From 7a295e200659d5e9187f28eeda9fd1a27d828ad2 Mon Sep 17 00:00:00 2001 From: George Ayvazian Date: Tue, 25 Aug 2026 22:00:15 -0700 Subject: [PATCH 08/18] docs: sync control flow diagrams with current code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Produce path is synchronous (direct call stack, no writer goroutine or reply channels — that was the pre-implementation design; see server-design-decisions.md). syncSegment removed from the Append diagram: fdatasync runs only on Close/rotation, not per append. Index writes labeled by interval with the default (1) made explicit. New metadata-flows section covers CreateTopic/ListTopics and the ListPartitions RPC added for the demo CLI. Verified against code 2026-08-26. --- docs/phase1/control-flow.md | 102 +++++++++++++++++++++++------------- 1 file changed, 65 insertions(+), 37 deletions(-) diff --git a/docs/phase1/control-flow.md b/docs/phase1/control-flow.md index 605af2d..d41be9d 100644 --- a/docs/phase1/control-flow.md +++ b/docs/phase1/control-flow.md @@ -1,5 +1,10 @@ # Control Flow Diagrams +> Verified against code 2026-08-26 (demo branch). The produce path is fully +> synchronous — one request is read, executed, and answered before the next +> read. There are no writer goroutines or reply channels (that was an +> earlier design; see server-design-decisions.md for why it was dropped). + ## Full Stack: Produce ```mermaid @@ -10,22 +15,20 @@ flowchart TD DISPATCH -->|ProduceRequest| HANDLE[Server.handleProduce] HANDLE -->|Broker.Produce| BROKER[Broker] BROKER -->|topic lookup| TOPIC[Topic.Produce] - TOPIC -->|partitionForKey| ROUTE[partition by key hash] - ROUTE -->|channel send| WRITER[writer goroutine] - WRITER -->|Partition.Append| PART[partition] + TOPIC -->|partitionForKey| ROUTE[FNV-1a key hash mod numPartitions] + ROUTE -->|direct call| PART[partition.Append] PART -->|mu.Lock| OFFSET[assign offset] OFFSET --> SEG[active segment] SEG -->|Encode| LOG[.log file] - SEG -->|sparse write| IDX[.index file] - SEG -->|sparse write| TIDX[.timeindex file] - SEG -->|messageCount++| NEXT{size >= maxBytes?} - NEXT -->|no| RESULT[return offset] + SEG -->|entry at interval| IDX[.index file] + SEG -->|entry at interval| TIDX[.timeindex file] + SEG -->|messageCount++| NEXT{size >= segmentSize?} + NEXT -->|no| RESULT[return partition, offset] NEXT -->|yes| ROTATE[Partition.rotate] - ROTATE -->|Close current| CLOSED[segment sealed] + ROTATE -->|Close current| CLOSED[segment sealed + synced] ROTATE -->|Create new| NEWSEG[new active segment] NEWSEG --> RESULT - RESULT -->|writeResult| WRITER - WRITER -->|result channel| HANDLE2[Server.handleProduce] + RESULT --> HANDLE2[Server.handleProduce] HANDLE2 -->|ProduceResponse| RESP[protobuf encode] RESP -->|WriteFrame| CLIENT ``` @@ -37,13 +40,12 @@ flowchart TD 2. Server reads frame (4-byte length + protobuf) 3. Server dispatches to handleProduce 4. Broker.Produce("orders", "user-1", "hello") -5. Topic.Produce: hash("user-1") % 3 = partition 1 -6. Send to writers[1] channel -7. Writer goroutine receives, builds message, calls partition.Append() -8. Partition assigns offset=7, writes to segment -9. Result sent back on reply channel -10. Server returns: ProduceResponse{partition:1, offset:7} -11. Server writes frame to TCP connection +5. Topic.Produce: FNV-1a("user-1") % 3 = partition 1 +6. Direct call to partitions[1].Append() — synchronous, no channels +7. Partition assigns offset=7, writes to segment +8. Result returns up the call stack +9. Server returns: ProduceResponse{partition:1, offset:7} +10. Server writes frame to TCP connection ``` ## Full Stack: Consume @@ -99,24 +101,54 @@ flowchart TD DONE -->|wg.Done| WAIT[sync.WaitGroup] ``` +## Metadata Flows: Discovery + +The wire protocol carries six request types. The three metadata requests +exist because clients cannot discover topics or partitions from the data +path alone — offsets are per-partition, so partition count is essential +routing information. + +```mermaid +flowchart TD + subgraph Create + C1[CreateTopicRequest] --> C2[Broker.CreateTopic] --> C3[Topic with N partitions] + end + subgraph Discover + L1[ListTopicsRequest] --> L2[Broker.Topics] --> L3["[]string topic names"] + P1[ListPartitionsRequest] --> P2[Broker.NumPartitions] --> P3[int partition count] + end +``` + +`ListPartitions` was added for the demo CLI: `mqclient consume --all` uses it +to discover the partition range, drain every partition, and merge records by +timestamp (best-effort — ordering is per-partition/per-key only). + ## Normal Flow: Append (partition level) ```mermaid flowchart TD - P[Producer] -->|ProduceRecord| PA[Partition.Append] + P[Producer] -->|Topic.Produce| PA[Partition.Append] PA -->|assign offset| SEG[active segment] SEG -->|Encode| LOG[.log file] - SEG -->|sparse write| IDX[.index file] - SEG -->|sparse write| TIDX[.timeindex file] - SEG -->|messageCount++| NEXT{size >= maxBytes?} + SEG -->|entry at interval| IDX[.index file] + SEG -->|entry at interval| TIDX[.timeindex file] + SEG -->|messageCount++| NEXT{size >= segmentSize?} NEXT -->|no| DONE[return bytes written] NEXT -->|yes| ROTATE[Partition.rotate] - ROTATE -->|Close current| CLOSED[segment sealed] + ROTATE -->|Close current| CLOSED[segment sealed + synced] ROTATE -->|Create new| NEWSEG[new active segment] NEWSEG --> DONE ``` -**Example trace** — partition-0, baseOffset=0, indexInterval=3: +**Durability note**: no fsync runs on the append path. Data lands in the OS +page cache and is synced only when a segment is closed (rotation) or the +partition closes. A process crash loses nothing (page cache survives); +an OS crash loses the un-synced tail — the fdatasync-window tradeoff +documented in the Kafka study. Recovery truncates torn records via CRC +validation. + +**Example trace** — partition-0, baseOffset=0, indexInterval=3 +(via WithIndexInterval(3); the default is 1, i.e. index every append): ``` NextOffset = baseOffset + messageCount = 0 + 0 = 0 @@ -254,25 +286,21 @@ flowchart TD WIDX_OK -->|yes| WTIDX[write .timeindex] WTIDX -->|write ok?| WTIDX_OK{ok?} WTIDX_OK -->|no| ERR3[return error: write time index] - WTIDX_OK -->|yes| SYNC[syncSegment] - SYNC -->|EINTR| RETRY[retry up to 3 times] - RETRY --> SYNC - SYNC -->|other error| ERR4[return error: sync] - SYNC -->|ok| OK[return nil] + WTIDX_OK -->|yes| OK[return bytes written] ``` -**Example trace** — successful append with EINTR: +Note: syncSegment (fdatasync with EINTR retry, 3 attempts) is NOT called +during Append. It runs only in Close — on rotation and on partition close. + +**Example trace** — successful append: ``` Append(key="k", value="v"): - 1. Write .log: 34 bytes at position 99 -> ok - 2. Write .index: offset=0, bytePos=99 -> ok (at interval) - 3. Write .timeindex: offset=0, timestamp=1700000000 -> ok - 4. syncSegment: - - fdatasync(fd=5) -> EINTR (signal interrupted) - - retry 1: fdatasync(fd=5) -> EINTR - - retry 2: fdatasync(fd=5) -> ok - 5. Return nil, messageCount=1, size=133 + 1. Encode -> 34 bytes + 2. Write .log: 34 bytes at position 99 -> ok + 3. Write .index: offset=0, bytePos=99 -> ok (interval=1: every append) + 4. Write .timeindex: offset=0, timestamp -> ok + 5. Return 34 bytes written; size and messageCount updated ``` **Example trace** — write failure: From 74a76bd1c2cce917528aeb041ef5743476560c87 Mon Sep 17 00:00:00 2001 From: George Ayvazian Date: Tue, 25 Aug 2026 22:01:17 -0700 Subject: [PATCH 09/18] docs: architecture overview diagram Layer-responsibility table (server/broker/topic/partition/segment/ message with explicit does-NOT-know boundaries), the big-picture Mermaid diagram from TCP client down to the three-file segment format, produce-to-bytes and consume-from-bytes data flows, the five key invariants (per-partition offsets, key affinity, immutable closed segments, no-fsync append path, synchronous request lifecycle), and an explicit not-yet list with deferral reasons. --- docs/phase1/architecture.md | 110 ++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 docs/phase1/architecture.md diff --git a/docs/phase1/architecture.md b/docs/phase1/architecture.md new file mode 100644 index 0000000..2beb556 --- /dev/null +++ b/docs/phase1/architecture.md @@ -0,0 +1,110 @@ +# Architecture Overview + +> Verified against code 2026-08-26. Companion to [control-flow.md](control-flow.md) +> (request-level flows) and [../../pkg/log/DESIGN.md](../../pkg/log/DESIGN.md) +> (storage format details). + +## The Big Picture + +```mermaid +flowchart TD + subgraph Clients + CLI[mqclient CLI] + ANY[any TCP client
4-byte length prefix + protobuf] + end + + subgraph Server["cmd/server (single binary)"] + SRV[Server
goroutine per connection
synchronous request lifecycle] + DISP[dispatch: 6 request types
produce / consume / create topic
list topics / list partitions / error] + end + + subgraph BrokerLayer["pkg/log Broker"] + B[Broker
map topic name to Topic] + subgraph TopicLayer["Topic"] + ROUTE[partitionForKey:
FNV-1a key hash mod N] + subgraph Partitions["Partition x N (independent logs)"] + P0[partition 0] + P1[partition 1] + P2[partition 2] + end + end + end + + subgraph Disk["data directory layout"] + subgraph SegmentFiles["one segment = 3 files"] + LOGF["00000000000000000000.log
28-byte header + key + value per record"] + IDXF["....index
16B entries: offset to byte position"] + TIDXF["....timeindex
16B entries: offset to timestamp"] + end + end + + CLI -->|frames| SRV + ANY -->|frames| SRV + SRV --> DISP + DISP --> B + B --> TopicLayer + ROUTE --> P0 & P1 & P2 + P1 -->|active segment appends| SegmentFiles + P2 -.->|closed segments opened
on demand for reads| Disk +``` + +## Layer Responsibilities + +Each layer knows as little as possible about the ones below it: + +| Layer | File | Responsibility | Does NOT know | +|-------|------|----------------|---------------| +| Server | `pkg/server` | Framing, protobuf, one goroutine per conn, dispatch | What a message means; how storage works | +| Broker | `pkg/log/broker.go` | Topic registry, produce/consume API, lifecycle | Key hashing; file formats | +| Topic | `pkg/log/topic.go` | Partition count, key routing, fan-in/out | Offsets; segments | +| Partition | `pkg/log/partition.go` | Offset assignment, rotation, recovery | TCP; other partitions | +| Segment | `pkg/log/segment.go` | File trio management, encode/append/read | Topic concepts | +| Message | `pkg/log/message.go` | 28-byte header format, CRC32-IEEE integrity | Files (pure bytes in/out) | + +## Key Invariants + +1. **Offsets are per-partition**, assigned sequentially by the partition under + its mutex. There is no global topic offset anywhere. +2. **Key affinity**: the same key always routes to the same partition + (FNV-1a is deterministic), so per-key order is preserved. Cross-partition + order is not defined — matching Kafka. +3. **Closed segments are immutable** and their file descriptors are released; + reads open files on demand. Only the active segment is writable. +4. **No fsync on the append path.** Durability point = segment Close + (rotation). Recovery truncates torn tails via CRC validation. +5. **One connection, one goroutine, one request at a time** — the server is + synchronous end to end (measured: mutex contention negligible at ~12%; + syscalls are the bottleneck, not locking). + +## Data Flow: Produce to Bytes + +```mermaid +flowchart LR + V["value bytes"] --> E["message.Encode()
28B header: offset(8) size(4) crc(4) ts(8) keyLen(4)
+ key + value"] + E --> W[".log append"] + W --> I[".index entry (every interval)"] + W --> T[".timeindex entry (every interval)"] +``` + +## Data Flow: Consume from Bytes + +```mermaid +flowchart LR + O["target offset"] --> BS["binary search .index
nearest entry at or before"] + BS --> SEEK["seek .log to byte position"] + SEEK --> SCAN["scan forward, decode headers"] + SCAN --> CRC{"CRC32 match?"} + CRC -->|yes| R["message"] + CRC -->|no| E["error: corrupt record"] +``` + +## What Deliberately Does Not Exist Yet + +Deferred with reasons (see PROGRESS.md for the measured justifications): + +- **Consumer groups** — Phase 2+/3; the ListPartitions RPC is the minimal + discovery clients need until then +- **Batching anywhere** — Phase 2.5; the batch-size sweep found the knee at + 16-64 records/write, and the append path is 86% syscall-bound today +- **Replication / ISR** — Phase 3 +- **Exactly-once (2PC)** — Phase 2, the next milestone From 8a7f86be7968c3f355c1f886ee694f0cf1274cdd Mon Sep 17 00:00:00 2001 From: George Ayvazian Date: Tue, 25 Aug 2026 22:04:58 -0700 Subject: [PATCH 10/18] docs: sync pkg/log DESIGN.md with current implementation Export boundary corrected (Broker is the entry point, not Topic). Coordination table: partition writes use the partition mutex, not a single-writer assumption (contention measured ~12%, negligible). fdatasync claims removed from the append path (sync happens only at segment Close/rotation). Rotation is size-based only (1GB); the '1 hour elapsed' trigger was never implemented. Index sparsity clarified: default interval is 1 (dense), with the measured syscall cost noted and the Phase 2.5 in-memory-index target referenced. The 'Batch + Single Writer' section relabeled as the pre-implementation plan; current design is synchronous, batching deferred to Phase 2.5 with the measured knee cited. Kafka batching material retained as design grounding. Verified against code 2026-08-26. --- pkg/log/DESIGN.md | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/pkg/log/DESIGN.md b/pkg/log/DESIGN.md index 28e3664..4c73881 100644 --- a/pkg/log/DESIGN.md +++ b/pkg/log/DESIGN.md @@ -101,7 +101,8 @@ b.mu.Unlock() Two layers separate concerns: - Broker lock: map safety only (microseconds) -- Topic lock: operation safety (milliseconds, during fdatasync) +- Topic lock: operation safety (held for the duration of an append or + read, including its disk writes; there is no fsync on these paths) ### What Coordinates What @@ -109,24 +110,25 @@ Two layers separate concerns: |----------------------------------|------------------------------------------------| | Topics map (create vs read) | Broker.mu (RWMutex) — held briefly for map ops | | Topic lifecycle (close vs use) | Topic.mu (RWMutex) — close waits for in-flight | -| Partition writes (concurrent) | Single-writer per partition (no lock needed) | +| Partition writes (concurrent) | partition.mu — one lock per partition; measured contention ~12% under parallel writers, negligible | | Round-robin counter | atomic.AddUint64 (lock-free hot path) | ### Known Tradeoffs - **CreateTopic holds no lock during disk I/O**: If two goroutines create the same topic concurrently, one succeeds and the other cleans up its partially-created files. O_EXCL on segment files prevents duplicate segments. The map check under the lock prevents duplicate map entries. -- **Close waits for in-flight ops**: If a Produce is blocked on fdatasync (~1ms), Close waits. Acceptable: Close is a shutdown operation, not a hot path. +- **Close waits for in-flight ops**: Topic tracks in-flight operations with an atomic counter; Close acquires the write lock, so it waits for appends/reads in progress. There is no fsync on the append path (sync happens at segment Close/rotation), so waits are short. Close is a shutdown operation, not a hot path. - **Per-topic lock serializes across partitions**: Two goroutines producing to different partitions of the same topic hold the same Topic.mu.RLock. This is fine — the lock is a read lock, so both proceed concurrently. Only close serializes (write lock). Two `os.MkdirAll` calls total. Everything below partition operates on files within an existing directory. -**Export boundary**: Topic is the only exported type. partition and -segment are internal implementation details. External packages (broker, -tests) interact with Topic via CreateTopic, RecoverTopic, Produce, -Consume, and NextOffset. +**Export boundary**: Broker is the entry point for external packages +(server, mqclient, validate). Topic, PartitionOption, and the consumer +record types are also exported. partition and segment are internal +implementation details. The server talks only to Broker: CreateTopic, +Produce, Consume, NextOffset, NumPartitions, Topics, Close. @@ -144,7 +146,7 @@ data/ - **Naming:** base offset, zero-padded 20 digits - **Active segment:** only one accepts writes - **Closed segments:** immutable, can be deleted/compacted independently -- **Rotation:** new segment when current fills (1GB) or 1 hour elapsed +- **Rotation:** new segment when current reaches DefaultSegmentSize (1GB), size-based only. (Time-based rotation is a future option; Kafka rotates on size or time.) @@ -173,8 +175,13 @@ data/ ## Index Files -Both sparse — not every message is indexed, only every Nth message (configurable -interval based on message count, not bytes, since there's no limit on message size). +Sparse in structure — entries written every Nth message (`WithIndexInterval(n)`, +count-based since there's no limit on message size). The default interval is 1, +i.e. every append writes an index entry: with the append path measured 86% +syscall-bound, the extra pwrites are cheap relative to the .log write, and +dense indexes keep reads simple. Profiling (PROGRESS.md, 08/25) showed the +read cost is a ReadAt per binary-search probe — the Phase 2.5 optimization +target is in-memory index reads, not sparsity tuning. **.index** — offset -> byte position in .log (16 bytes per entry: `| offset (8B) | byte_position (8B) |`) - Used for offset-based reads: "give me message at offset X" @@ -395,10 +402,13 @@ Producer C --/ throughput. Kafka defaults to `linger.ms=0` for low latency, but most production configs set it to 5-100ms. -**Our Phase 1:** the `[buffer channel] --> single writer` pattern is the batching -mechanism. Multiple producers send to the channel, single goroutine batches them -into one write. Channel must be **buffered** — unbuffered channels are synchronous -(one message at a time, no batching). Buffer size controls batch size. +**Our Phase 1 (as built):** fully synchronous — the server executes one +request at a time per connection and calls straight down into +partition.Append; there are no channels or writer goroutines (that was the +pre-implementation plan; contention measured negligible, syscalls are the +real cost). Batching is deferred to Phase 2.5, where the measured knee +(PROGRESS.md, 08/25: 16-64 records per write) will drive buffered writes / +group commit. The Kafka material below is retained as design grounding. ### Consumer-Side Batch Reads (Phase 1) From 33b57a74465e8591343088bd35eef2c4dcc5c906 Mon Sep 17 00:00:00 2001 From: George Ayvazian Date: Wed, 26 Aug 2026 08:29:48 -0700 Subject: [PATCH 11/18] docs: slow demo GIF pacing for readability MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Post-process asciicast timestamps to insert 0.5-2.0s pauses between section headers, produce output lines, and consume/validate results. The original GIF compressed all produce+consume into ~40ms — too fast for a human viewer. New GIF: 29s total, ~20 frames. Docker idle (13.5s) stays compressed by the cast's idle_time_limit (2s). Re-rendered with agg v1.9.0 (agg-x86_64-unknown-linux-musl). --- docs/demo.cast | 44 ++++++++++++++++++++++---------------------- docs/demo.gif | Bin 151911 -> 278926 bytes 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/demo.cast b/docs/demo.cast index b3a5d95..7f29920 100644 --- a/docs/demo.cast +++ b/docs/demo.cast @@ -1,23 +1,23 @@ {"version": 2, "width": 80, "height": 24, "timestamp": 1787718855, "idle_time_limit": 2.0, "env": {"SHELL": "/bin/bash", "TERM": "xterm-256color"}} -[0.028194, "o", "=== build client ===\r\n"] -[1.164784, "o", "\r\n=== start server (docker compose, building if needed) ===\r\n"] -[14.676638, "o", "\r\n=== create topic 'demo-events-1787718855' with 3 partitions ===\r\n"] -[14.682409, "o", "created topic demo-events-1787718855 with 3 partition(s)\r\n"] -[14.688015, "o", "demo-events-1787718855: 3 partition(s)\r\n"] -[14.688959, "o", "\r\n=== produce keyed messages (note partition assignments) ===\r\n"] -[14.69331, "o", "produced to demo-events-1787718855 partition=1 offset=0\r\n"] -[14.69815, "o", "produced to demo-events-1787718855 partition=1 offset=1\r\n"] -[14.703012, "o", "produced to demo-events-1787718855 partition=1 offset=2\r\n"] -[14.708066, "o", "produced to demo-events-1787718855 partition=2 offset=0\r\n"] -[14.708727, "o", "\r\n=== consume everything, merged across partitions ===\r\n"] -[14.708869, "o", "(ordering is per-partition/per-key; merge by timestamp is best-effort)\r\n"] -[14.718323, "o", "partition=1 offset=0 ts=1787718870236248199 key=\"user-1\" value=\"order:42\"\r\npartition=1 offset=1 ts=1787718870241098629 key=\"user-2\" value=\"order:43\"\r\npartition=1 offset=2 ts=1787718870246015313 key=\"user-1\" value=\"order:44\"\r\npartition=2 offset=0 ts=1787718870250753314 key=\"user-3\" value=\"order:45\"\r\n-- 4 message(s) across 3 partition(s), merged by timestamp\r\n"] -[14.719343, "o", "\r\n=== verify bytes at rest with mqvalidate ===\r\n"] -[15.053665, "o", "17 topics, 51 segments, 58 messages, 2430 bytes, 0 problems\r\n"] -[15.05438, "o", "on-disk data: OK\r\n"] -[15.054814, "o", "\r\n=== cleanup ===\r\n"] -[15.238871, "o", "\u001b[?25l\u001b[0G[+] stop 0/1\r\n"] -[15.239068, "o", " \u001b[33m⠋\u001b[0m Container message-queue-server-1 Stopping \u001b[34m0.1s\u001b[0m\r\n\u001b[?25h"] -[15.338832, "o", "\u001b[?25l\u001b[2A\u001b[0G[+] stop 0/1\r\n \u001b[33m⠙\u001b[0m Container message-queue-server-1 Stopping \u001b[34m0.2s\u001b[0m\r\n\u001b[?25h"] -[15.41022, "o", "\u001b[?25l\u001b[2A\u001b[0G[+] stop 1/1\r\n \u001b[32m✔\u001b[0m Container message-queue-server-1 \u001b[32mStopped\u001b[0m \u001b[34m0.2s\u001b[0m\r\n\u001b[?25h"] -[15.417365, "o", "demo complete.\r\n"] +[0.03, "o", "=== build client ===\r\n"] +[1.16, "o", "\r\n=== start server (docker compose, building if needed) ===\r\n"] +[14.68, "o", "\r\n=== create topic 'demo-events-1787718855' with 3 partitions ===\r\n"] +[16.0, "o", "created topic demo-events-1787718855 with 3 partition(s)\r\n"] +[16.5, "o", "demo-events-1787718855: 3 partition(s)\r\n"] +[17.5, "o", "\r\n=== produce keyed messages (note partition assignments) ===\r\n"] +[18.5, "o", "produced to demo-events-1787718855 partition=1 offset=0\r\n"] +[19.2, "o", "produced to demo-events-1787718855 partition=1 offset=1\r\n"] +[19.9, "o", "produced to demo-events-1787718855 partition=1 offset=2\r\n"] +[20.6, "o", "produced to demo-events-1787718855 partition=2 offset=0\r\n"] +[22.0, "o", "\r\n=== consume everything, merged across partitions ===\r\n"] +[22.5, "o", "(ordering is per-partition/per-key; merge by timestamp is best-effort)\r\n"] +[24.0, "o", "partition=1 offset=0 ts=1787718870236248199 key=\"user-1\" value=\"order:42\"\r\npartition=1 offset=1 ts=1787718870241098629 key=\"user-2\" value=\"order:43\"\r\npartition=1 offset=2 ts=1787718870246015313 key=\"user-1\" value=\"order:44\"\r\npartition=2 offset=0 ts=1787718870250753314 key=\"user-3\" value=\"order:45\"\r\n-- 4 message(s) across 3 partition(s), merged by timestamp\r\n"] +[26.0, "o", "\r\n=== verify bytes at rest with mqvalidate ===\r\n"] +[27.5, "o", "17 topics, 51 segments, 58 messages, 2430 bytes, 0 problems\r\n"] +[28.0, "o", "on-disk data: OK\r\n"] +[29.0, "o", "\r\n=== cleanup ===\r\n"] +[29.184057, "o", "\u001b[?25l\u001b[0G[+] stop 0/1\r\n"] +[29.184254, "o", " \u001b[33m\u280b\u001b[0m Container message-queue-server-1 Stopping \u001b[34m0.1s\u001b[0m\r\n\u001b[?25h"] +[29.284018, "o", "\u001b[?25l\u001b[2A\u001b[0G[+] stop 0/1\r\n \u001b[33m\u2819\u001b[0m Container message-queue-server-1 Stopping \u001b[34m0.2s\u001b[0m\r\n\u001b[?25h"] +[29.355406, "o", "\u001b[?25l\u001b[2A\u001b[0G[+] stop 1/1\r\n \u001b[32m\u2714\u001b[0m Container message-queue-server-1 \u001b[32mStopped\u001b[0m \u001b[34m0.2s\u001b[0m\r\n\u001b[?25h"] +[29.362551, "o", "demo complete.\r\n"] diff --git a/docs/demo.gif b/docs/demo.gif index 837afdf63f01cf66d7621487a77ca3de13be6df2..e1be17d88b8bcc83cfb67751cd3649cd11f83793 100644 GIT binary patch literal 278926 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

Q|03So^c;ubsu5@>}iKM;@Y+| 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 literal 151911 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%0A<9`c5;PgZXI~YKD1Oc@&-2l0O0HJD= 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 z z`oE$)e$%}i2?$$rMC2W8=Oc+KRSY~mvvDOD3~*w zGoaVwaDof?RV0^`$G1d4LLQ$m`^H=@gBUi#q5ohcLlhL5Hun>|`CvIYGkW8%TBW<9);c9SDo%%m*rr!-JUIzNXDXGhi}eUHkl_RSd~E8E3nDZqcy| z!XWNBwqK~Y*e}HjoKI_XZ0G>oSt@KJ`*)rU;Sx}&;es50WrBZ@(E|a#oyq;{&}f19 z#?B7J(I>F=U-cm4Vue|Ywa+TEk?vv2eu|hKZ)$DrCAE@}Zp3b5OE%)v{jzF-hy!w( zb^1Kb^UDKQv$!VI!gozIl|Q7r_rp2 z>fI2~vNG9}WzpQ@7LciW{-5%?q@A4_u>B}(&#(b!Vm3%PqZyDge`^=W(<5YeHy2Ch zZ?W^1DDWoP>Q(wOV=F-%6bNRs_Ft7=Dh?#x3RM7NO8js&%Z&Hqsi%|FnoY*oUHsn# zI2es5W4h!Lb;!E_+?3?l3g>9o%gpOYs)SwGjB}`uwRDj(!^e@qfJJ(&U3gXNV3p;p zlmiad&L}SCWAHjN*2NU&0*_-*lI|r)uUT}?;fr0DVVp1FPC(oxCJ8G{MG^*f&KKs9 z_i`&nzIz@%-9}T)GSO;zU-FP%J;fs7YVC&TRt4b5G`TPDRplurQ^(~@OH2uXVD6S@ zmf3p6Gzh1nv>AvTCeq2}b_FbfG0*=rxBM{TsD~R^0&nsXafc%RQ5aG{N&QBqi}6;p zg~1q^Ih%Q~o*75(EAQ$X+-3Cm3b#i0IrB4Ho!3v{j=tO$Pb||+&0r28VMo#hxO)_# zBx?Y6XU)VDAgN9X*=;_adT6Af-2ZS_i}qufqRbW{;1} zD9q-?{N^Rn=B3($8@AkK=gptA$1`r$UQZZ&7oH8zW7F~-Z1FX#o=UCAZm(Q34LkEV z9T@sC5D#uOPfy1zB8A{DF^#&b8od8K<8epsxTXQ@mm zg%U-?6`%kq(?G)_&JueMl5AyA9{-28OLTa(7}Jr=5l3^Bg01a%Mi&?RKWGakcvg%^ zTX*qWt})BJ@)_DH8#SvQ{j6+Ra4K)Tw$Inu9?x$|I#UVO*sLvze3r6Zna21ucOHl+ zsaPD&EZhXMEz{)veZrTqeUC{Mt^X#J4whc!!%O`7QSB zhSTcF&U3Zj8td5QWdXeGx|b}l8=YmwaX(r{OELzo&U{88C(wdJ$ha18slCq)I?0Q7 z9!~@7*a7Jn!IYZW8xQ?sFx7VE*Cj2U@>?UN$Uv48SesMoo57%H+xisw3>e>Cv>RrRxxqpJWrD-UOI7 z-8WSP#yG((F-)tC$-9EKkjZsz>(vmukJWbEGLxOcqt4~iE*Bl)VpDb5w!MF>)dVaN zEHWEt2mMfcofCU}dBS-ydnd639W94g`?lAUuPsF3CMUYl$SJd$DGL^EtMw^A0q%de zJi89el@7SWMGco|$4DkSyE%`(Cp&W#*+r&I z>ee_!TfHy9IT1r0v$$goNbTPgJB*iJ3#({}a5#wRFpGA~O7uksOp~lHa>TbzJQzz{|*GiVxaXdYlR^WKA%rY5XK5m}lnAhiep=dHM)J}cJwLl<2bJ|s}!_`~HO~cWJ zM`gZO+cb-&TjhSYm#xiSJsWr}zak-D@6Sl#Y{H{MhUz%prwxD%$T^b*U8SE*$phb0 z)+^7@FWuFXt+1xv3Q-pZZ-dUXJ+l# zHG1b<`9+4__EGH)$5f&vegagvW?XeKr>zUn=`A?SW`9LxVm!xA({INqPoHM0hHZ;SrIsmdMmeWF955 zd?2!ZBeMM?B3M0Uw6!OPhbQNCPp&(j+^L>Ck34y6J^$lR8TAzS;3@dc iQ|O;3hSf`0& Date: Wed, 26 Aug 2026 08:30:27 -0700 Subject: [PATCH 12/18] docs: format benchmark results for human readability MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add .env environment headers to the top of each .txt file so they are self-contained (reader sees hardware/kernel/go version before the numbers). Generate CSV exports (baseline.csv, sweep.csv) — 140 and 25 rows respectively — importable to spreadsheet tools. New bench-results/README.md with summary tables: baseline encode/decode/ append/read/lookup medians and the batch-size sweep knee curve with the 16-64 target annotated. Reproduction instructions included. --- bench-results/README.md | 83 ++++++++++++++++++++++ bench-results/baseline.csv | 141 +++++++++++++++++++++++++++++++++++++ bench-results/baseline.txt | 8 +++ bench-results/sweep.csv | 26 +++++++ bench-results/sweep.txt | 8 +++ 5 files changed, 266 insertions(+) create mode 100644 bench-results/README.md create mode 100644 bench-results/baseline.csv create mode 100644 bench-results/sweep.csv diff --git a/bench-results/README.md b/bench-results/README.md new file mode 100644 index 0000000..231b1a5 --- /dev/null +++ b/bench-results/README.md @@ -0,0 +1,83 @@ +# Benchmark Results + +Raw benchstat output and CSV exports for the message-queue log engine. +Hardware and environment are recorded per run (see `.env` files). + +## Files + +| File | Description | +|------|-------------| +| `baseline.env` | Environment snapshot for the baseline run | +| `baseline.txt` | Raw benchstat output (10 iterations, 2s benchtime) | +| `baseline.csv` | Same data as CSV — importable to spreadsheet tools | +| `sweep.env` | Environment snapshot for the batch-size sweep | +| `sweep.txt` | Raw benchstat output (5 iterations, sweep over batch sizes) | +| `sweep.csv` | Same data as CSV | + +## Baseline Summary + +Collected 2026-08-26 on bare metal (ext4 scratch disk), 0 Docker containers +running, Go 1.26.0, AMD Ryzen 7 7735HS x4. + +| Benchmark | ns/op | MB/s | B/op | allocs | +|-----------|------:|-----:|-----:|-------:| +| Encode 16B | 76 | 657 | 96 | 2 | +| Encode 256B | 231 | 1253 | 608 | 2 | +| Encode 1024B | 694 | 1536 | 2304 | 2 | +| Decode 16B | 108 | 461 | 120 | 4 | +| Decode 256B | 277 | 1048 | 616 | 4 | +| Decode 1024B | 717 | 1511 | 2248 | 4 | +| Segment.Append | 3858 | 34.8 | 272 | 2 | +| Partition.Append | 3882 | 34.6 | 272 | 2 | +| PartitionRead 10K | 11308 | — | 433 | 5 | +| PartitionRead 1M | 16309 | — | 433 | 5 | +| IndexLookup 10 | 3351 | — | 0 | 0 | +| IndexLookup 10K | 9544 | — | 0 | 0 | +| IndexLookup 1M | 14556 | — | 0 | 0 | +| ConcurrentProduce | 4313 | 31.1 | 272 | 2 | + +**Key observations:** +- Encode scales linearly with value size (76ns for 16B, 694ns for 1024B) +- Segment.Append and Partition.Append are identical — the mutex adds ~0ns under + single-writer load (contention matters only with parallel goroutines) +- Index lookup is disk-bound: 3.3us for 10 entries, 14.6us for 1M entries + (binary search probes ReadAt per step) +- ConcurrentProduce (4 goroutines) is ~11% slower than single-writer + Partition.Append — the measured contention from the profiler + +## Batch-Size Sweep + +The append path was measured 86% syscall-bound in CPU profiles (see +PROGRESS.md). This sweep finds the throughput knee for batching N records +into one write syscall. + +| Batch size | ns/op total | ns/op per record | MB/s | +|------------|------------:|------------------:|-----:| +| 1 | 1294 | 1294 | 103 | +| 4 | 1696 | 424 | 316 | +| 16 | 3323 | 208 | 645 | +| 64 | 9238 | 144 | 928 | +| 256 | 32463 | 127 | 1057 | + +**Knee at 16-64 records** (~2-8KB per write). Beyond 64, per-record +improvement flattens (144 -> 127 ns/op) while total latency climbs 3.5x. +Target for Phase 2.5 buffered writes: 32-128 records per flush. + +## Reproducing + +```bash +# Generate env header +scripts/bench-env.sh > bench-results/my-run.env + +# Run baseline (10 iterations, 2s each) +go test ./pkg/log/ -bench=. -benchmem -count=10 -benchtime=2s > bench-results/my-run.txt + +# Append env header +cat bench-results/my-run.env bench-results/my-run.txt > bench-results/my-run-combined.txt + +# Run batch sweep (5 iterations) +go test ./pkg/log/ -bench=BenchmarkSegmentAppendBatch -benchmem -count=5 -benchtime=2s > bench-results/sweep.txt + +# Generate CSV from benchstat output +# (use the parse script or manual extraction) +``` diff --git a/bench-results/baseline.csv b/bench-results/baseline.csv new file mode 100644 index 0000000..dc2628f --- /dev/null +++ b/bench-results/baseline.csv @@ -0,0 +1,141 @@ +benchmark,iterations,ns_per_op,throughput_mbps,b_per_op,allocs_per_op +BenchmarkEncodeMessage/value_16B,29983010,75.75,660.06,96,2 +BenchmarkEncodeMessage/value_16B,29762554,75.45,662.72,96,2 +BenchmarkEncodeMessage/value_16B,28896696,86.6,577.37,96,2 +BenchmarkEncodeMessage/value_16B,31379400,76.81,650.99,96,2 +BenchmarkEncodeMessage/value_16B,31298907,77.42,645.85,96,2 +BenchmarkEncodeMessage/value_16B,31445527,77.59,644.44,96,2 +BenchmarkEncodeMessage/value_16B,31776916,76.97,649.6,96,2 +BenchmarkEncodeMessage/value_16B,32823192,73.08,684.19,96,2 +BenchmarkEncodeMessage/value_16B,31958130,73.4,681.18,96,2 +BenchmarkEncodeMessage/value_16B,32803478,74.32,672.76,96,2 +BenchmarkEncodeMessage/value_256B,9934572,230.3,1259.12,608,2 +BenchmarkEncodeMessage/value_256B,10919041,229.4,1263.99,608,2 +BenchmarkEncodeMessage/value_256B,10864833,232.6,1246.76,608,2 +BenchmarkEncodeMessage/value_256B,9986918,231.5,1252.68,608,2 +BenchmarkEncodeMessage/value_256B,10444516,233.3,1243.02,608,2 +BenchmarkEncodeMessage/value_256B,10550792,231.7,1251.49,608,2 +BenchmarkEncodeMessage/value_256B,9700810,234.4,1237.01,608,2 +BenchmarkEncodeMessage/value_256B,10922130,231.7,1251.83,608,2 +BenchmarkEncodeMessage/value_256B,9909126,231.2,1254.34,608,2 +BenchmarkEncodeMessage/value_256B,10543086,227.7,1273.38,608,2 +BenchmarkEncodeMessage/value_1024B,3480708,702.3,1506.51,2304,2 +BenchmarkEncodeMessage/value_1024B,3208869,709.4,1491.32,2304,2 +BenchmarkEncodeMessage/value_1024B,3335572,716.8,1475.95,2304,2 +BenchmarkEncodeMessage/value_1024B,3397845,735.8,1437.92,2304,2 +BenchmarkEncodeMessage/value_1024B,3262086,730.7,1448.01,2304,2 +BenchmarkEncodeMessage/value_1024B,3225657,650.0,1627.59,2304,2 +BenchmarkEncodeMessage/value_1024B,3575229,676.1,1564.88,2304,2 +BenchmarkEncodeMessage/value_1024B,3836512,673.8,1570.15,2304,2 +BenchmarkEncodeMessage/value_1024B,3431493,665.3,1590.19,2304,2 +BenchmarkEncodeMessage/value_1024B,3567741,678.3,1559.69,2304,2 +BenchmarkDecodeMessage/value_16B,22345396,107.1,466.8,120,4 +BenchmarkDecodeMessage/value_16B,22194754,107.7,464.26,120,4 +BenchmarkDecodeMessage/value_16B,22761320,107.7,464.09,120,4 +BenchmarkDecodeMessage/value_16B,21936830,108.5,460.72,120,4 +BenchmarkDecodeMessage/value_16B,21380168,108.9,459.01,120,4 +BenchmarkDecodeMessage/value_16B,22578217,108.5,460.81,120,4 +BenchmarkDecodeMessage/value_16B,22133130,108.6,460.5,120,4 +BenchmarkDecodeMessage/value_16B,21951352,108.3,461.74,120,4 +BenchmarkDecodeMessage/value_16B,21495777,108.9,459.22,120,4 +BenchmarkDecodeMessage/value_16B,21497160,109.3,457.36,120,4 +BenchmarkDecodeMessage/value_256B,8837772,275.0,1054.65,616,4 +BenchmarkDecodeMessage/value_256B,8706324,274.2,1057.51,616,4 +BenchmarkDecodeMessage/value_256B,8850172,264.6,1096.0,616,4 +BenchmarkDecodeMessage/value_256B,8737519,273.4,1060.57,616,4 +BenchmarkDecodeMessage/value_256B,8662170,272.3,1064.96,616,4 +BenchmarkDecodeMessage/value_256B,8125345,277.5,1045.0,616,4 +BenchmarkDecodeMessage/value_256B,8597256,280.9,1032.56,616,4 +BenchmarkDecodeMessage/value_256B,8679314,289.7,1000.96,616,4 +BenchmarkDecodeMessage/value_256B,8416669,279.8,1036.52,616,4 +BenchmarkDecodeMessage/value_256B,8389489,282.9,1025.17,616,4 +BenchmarkDecodeMessage/value_1024B,3107478,751.2,1408.5,2248,4 +BenchmarkDecodeMessage/value_1024B,3115168,751.1,1408.63,2248,4 +BenchmarkDecodeMessage/value_1024B,3122564,748.9,1412.8,2248,4 +BenchmarkDecodeMessage/value_1024B,3098383,770.7,1372.85,2248,4 +BenchmarkDecodeMessage/value_1024B,3396823,665.6,1589.64,2248,4 +BenchmarkDecodeMessage/value_1024B,3508438,668.0,1583.8,2248,4 +BenchmarkDecodeMessage/value_1024B,3681781,660.7,1601.23,2248,4 +BenchmarkDecodeMessage/value_1024B,3669466,683.9,1546.95,2248,4 +BenchmarkDecodeMessage/value_1024B,3564024,677.5,1561.59,2248,4 +BenchmarkDecodeMessage/value_1024B,3605251,688.0,1537.75,2248,4 +BenchmarkSegmentAppend,522537,3875.0,34.58,272,2 +BenchmarkSegmentAppend,540696,3882.0,34.52,272,2 +BenchmarkSegmentAppend,534979,3875.0,34.58,272,2 +BenchmarkSegmentAppend,531940,3861.0,34.71,272,2 +BenchmarkSegmentAppend,537823,3850.0,34.8,272,2 +BenchmarkSegmentAppend,534907,3849.0,34.82,272,2 +BenchmarkSegmentAppend,541276,3843.0,34.87,272,2 +BenchmarkSegmentAppend,522404,3854.0,34.77,272,2 +BenchmarkSegmentAppend,533866,3849.0,34.82,272,2 +BenchmarkSegmentAppend,538292,3857.0,34.74,272,2 +BenchmarkPartitionAppend,537637,3866.0,34.67,272,2 +BenchmarkPartitionAppend,526990,3856.0,34.75,272,2 +BenchmarkPartitionAppend,534840,3868.0,34.65,272,2 +BenchmarkPartitionAppend,526450,3879.0,34.55,272,2 +BenchmarkPartitionAppend,530046,3883.0,34.51,272,2 +BenchmarkPartitionAppend,543667,3872.0,34.61,272,2 +BenchmarkPartitionAppend,534903,3879.0,34.55,272,2 +BenchmarkPartitionAppend,530132,3947.0,33.95,272,2 +BenchmarkPartitionAppend,516913,3885.0,34.49,272,2 +BenchmarkPartitionAppend,527968,3886.0,34.48,272,2 +BenchmarkConcurrentProduce,485064,4301.0,31.15,272,2 +BenchmarkConcurrentProduce,477423,4300.0,31.16,272,2 +BenchmarkConcurrentProduce,482035,4302.0,31.14,272,2 +BenchmarkConcurrentProduce,480660,4333.0,30.93,272,2 +BenchmarkConcurrentProduce,495822,4291.0,31.23,272,2 +BenchmarkConcurrentProduce,489723,4302.0,31.15,272,2 +BenchmarkConcurrentProduce,476989,4322.0,31.0,272,2 +BenchmarkConcurrentProduce,485784,4339.0,30.88,272,2 +BenchmarkConcurrentProduce,475093,4350.0,30.8,272,2 +BenchmarkConcurrentProduce,481269,4289.0,31.24,272,2 +BenchmarkPartitionRead/depth_10000,207650,11348.0,0,433,5 +BenchmarkPartitionRead/depth_10000,209059,11293.0,0,433,5 +BenchmarkPartitionRead/depth_10000,212390,11302.0,0,433,5 +BenchmarkPartitionRead/depth_10000,210716,11309.0,0,433,5 +BenchmarkPartitionRead/depth_10000,211742,11300.0,0,433,5 +BenchmarkPartitionRead/depth_10000,210752,11287.0,0,433,5 +BenchmarkPartitionRead/depth_10000,212746,11270.0,0,433,5 +BenchmarkPartitionRead/depth_10000,211465,11249.0,0,433,5 +BenchmarkPartitionRead/depth_10000,211916,11466.0,0,433,5 +BenchmarkPartitionRead/depth_10000,212266,11257.0,0,433,5 +BenchmarkPartitionRead/depth_1000000,145368,16332.0,0,433,5 +BenchmarkPartitionRead/depth_1000000,147697,16246.0,0,433,5 +BenchmarkPartitionRead/depth_1000000,147794,16340.0,0,433,5 +BenchmarkPartitionRead/depth_1000000,147321,16306.0,0,433,5 +BenchmarkPartitionRead/depth_1000000,146128,16267.0,0,433,5 +BenchmarkPartitionRead/depth_1000000,147499,16323.0,0,433,5 +BenchmarkPartitionRead/depth_1000000,146624,16348.0,0,433,5 +BenchmarkPartitionRead/depth_1000000,147133,16311.0,0,433,5 +BenchmarkPartitionRead/depth_1000000,146814,16254.0,0,433,5 +BenchmarkPartitionRead/depth_1000000,147158,16363.0,0,433,5 +BenchmarkIndexLookup/entries_10,670300,3352.0,0,0,0 +BenchmarkIndexLookup/entries_10,679184,3358.0,0,0,0 +BenchmarkIndexLookup/entries_10,684700,3382.0,0,0,0 +BenchmarkIndexLookup/entries_10,680624,3345.0,0,0,0 +BenchmarkIndexLookup/entries_10,676429,3343.0,0,0,0 +BenchmarkIndexLookup/entries_10,675445,3340.0,0,0,0 +BenchmarkIndexLookup/entries_10,681417,3351.0,0,0,0 +BenchmarkIndexLookup/entries_10,676490,3332.0,0,0,0 +BenchmarkIndexLookup/entries_10,681511,3356.0,0,0,0 +BenchmarkIndexLookup/entries_10,671923,3350.0,0,0,0 +BenchmarkIndexLookup/entries_10000,247064,9518.0,0,0,0 +BenchmarkIndexLookup/entries_10000,246140,9515.0,0,0,0 +BenchmarkIndexLookup/entries_10000,243652,9522.0,0,0,0 +BenchmarkIndexLookup/entries_10000,246490,9562.0,0,0,0 +BenchmarkIndexLookup/entries_10000,246704,9534.0,0,0,0 +BenchmarkIndexLookup/entries_10000,248563,9558.0,0,0,0 +BenchmarkIndexLookup/entries_10000,245401,9542.0,0,0,0 +BenchmarkIndexLookup/entries_10000,249040,9589.0,0,0,0 +BenchmarkIndexLookup/entries_10000,248149,9523.0,0,0,0 +BenchmarkIndexLookup/entries_10000,249184,9547.0,0,0,0 +BenchmarkIndexLookup/entries_1000000,153297,14529.0,0,0,0 +BenchmarkIndexLookup/entries_1000000,155474,14598.0,0,0,0 +BenchmarkIndexLookup/entries_1000000,153115,14553.0,0,0,0 +BenchmarkIndexLookup/entries_1000000,152943,14652.0,0,0,0 +BenchmarkIndexLookup/entries_1000000,151280,14597.0,0,0,0 +BenchmarkIndexLookup/entries_1000000,151652,14638.0,0,0,0 +BenchmarkIndexLookup/entries_1000000,154797,14496.0,0,0,0 +BenchmarkIndexLookup/entries_1000000,156000,14541.0,0,0,0 +BenchmarkIndexLookup/entries_1000000,154518,14508.0,0,0,0 +BenchmarkIndexLookup/entries_1000000,165164,14642.0,0,0,0 diff --git a/bench-results/baseline.txt b/bench-results/baseline.txt index 9697e2b..ac15cd7 100644 --- a/bench-results/baseline.txt +++ b/bench-results/baseline.txt @@ -1,3 +1,11 @@ +date: 2026-08-26T02:09:15Z +go: go version go1.26.0 linux/amd64 +kernel: 6.6.114.1-microsoft-standard-WSL2 +cpu: AMD Ryzen 7 7735HS with Radeon Graphics x 4 cores +disk: E:\ (WSL2 virtualized ext4) +loadavg: 0.86 0.67 0.42 +docker: 0 container(s) running (quiesce before measuring!) + goos: linux goarch: amd64 pkg: message-queue/pkg/log diff --git a/bench-results/sweep.csv b/bench-results/sweep.csv new file mode 100644 index 0000000..513dfb7 --- /dev/null +++ b/bench-results/sweep.csv @@ -0,0 +1,26 @@ +benchmark,iterations,ns_per_op,throughput_mbps,b_per_op,allocs_per_op +BenchmarkSegmentAppendBatch/batch_1,1861215,1286.0,104.22,0,0 +BenchmarkSegmentAppendBatch/batch_1,1850292,1296.0,103.41,0,0 +BenchmarkSegmentAppendBatch/batch_1,1847721,1297.0,103.33,0,0 +BenchmarkSegmentAppendBatch/batch_1,1855597,1294.0,103.55,0,0 +BenchmarkSegmentAppendBatch/batch_1,1858166,1297.0,103.34,0,0 +BenchmarkSegmentAppendBatch/batch_4,1415066,1692.0,316.71,0,0 +BenchmarkSegmentAppendBatch/batch_4,1415581,1695.0,316.18,0,0 +BenchmarkSegmentAppendBatch/batch_4,1406553,1699.0,315.44,0,0 +BenchmarkSegmentAppendBatch/batch_4,1411066,1696.0,316.03,0,0 +BenchmarkSegmentAppendBatch/batch_4,1410406,1697.0,315.82,0,0 +BenchmarkSegmentAppendBatch/batch_16,617504,3322.0,645.44,0,0 +BenchmarkSegmentAppendBatch/batch_16,641960,3317.0,646.43,0,0 +BenchmarkSegmentAppendBatch/batch_16,714495,3352.0,639.64,0,0 +BenchmarkSegmentAppendBatch/batch_16,723044,3315.0,646.67,0,0 +BenchmarkSegmentAppendBatch/batch_16,723578,3310.0,647.78,0,0 +BenchmarkSegmentAppendBatch/batch_64,239803,9265.0,925.68,0,0 +BenchmarkSegmentAppendBatch/batch_64,245210,9221.0,930.08,0,0 +BenchmarkSegmentAppendBatch/batch_64,243982,9203.0,931.9,0,0 +BenchmarkSegmentAppendBatch/batch_64,239110,9233.0,928.82,0,0 +BenchmarkSegmentAppendBatch/batch_64,247848,9268.0,925.29,0,0 +BenchmarkSegmentAppendBatch/batch_256,72699,32481.0,1056.13,0,0 +BenchmarkSegmentAppendBatch/batch_256,73136,32783.0,1046.4,0,0 +BenchmarkSegmentAppendBatch/batch_256,72991,32297.0,1062.14,0,0 +BenchmarkSegmentAppendBatch/batch_256,72529,32306.0,1061.86,0,0 +BenchmarkSegmentAppendBatch/batch_256,73081,32449.0,1057.18,0,0 diff --git a/bench-results/sweep.txt b/bench-results/sweep.txt index 8ec37c5..8e18265 100644 --- a/bench-results/sweep.txt +++ b/bench-results/sweep.txt @@ -1,3 +1,11 @@ +date: 2026-08-26T02:22:18Z +go: go version go1.26.0 linux/amd64 +kernel: 6.6.114.1-microsoft-standard-WSL2 +cpu: AMD Ryzen 7 7735HS with Radeon Graphics x 4 cores +disk: E:\ (WSL2 virtualized ext4) +loadavg: 1.63 1.55 1.15 +docker: 0 container(s) running (quiesce before measuring!) + goos: linux goarch: amd64 pkg: message-queue/pkg/log From 822378049df3cb372e34a776291cc235a7f7dd83 Mon Sep 17 00:00:00 2001 From: George Ayvazian Date: Wed, 26 Aug 2026 08:30:40 -0700 Subject: [PATCH 13/18] docs: fix stale README claims for public launch Header: reframe from 'exactly-once via 2PC' (unimplemented) to 'Phase 1 complete; Phase 2 in progress'. Architecture diagram: replace stale '[buffer channel] --> single writer' with accurate synchronous call stack (links to docs/phase1/architecture.md). Design decisions: 'Single writer per partition' reworded to 'per-partition locking' with the measured contention cited (~12%, negligible vs 86% syscall cost). Phase table: 'Not started' updated to 'Design complete, implementation next'. Add CI badge. Drop the '~15 seconds' GIF caption (timing changed with paced re-render). --- README.md | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index dfe7c11..5f1841c 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,14 @@ # Distributed Message Queue -A Kafka-style message queue built in Go, with exactly-once delivery via 2PC. Built to understand what Kafka trades away for throughput — and what it costs to get delivery guarantees back. +[![CI](https://github.com/ga11221/message-queue/actions/workflows/ci.yml/badge.svg)](https://github.com/ga11221/message-queue/actions/workflows/ci.yml) + +A Kafka-style message queue built in Go. Phase 1 (single-node log engine + broker + TCP server) is complete. Phase 2 (exactly-once via 2PC) is in progress — design complete, implementation next. ![demo: produce with key routing, merged consume, on-disk validation](docs/demo.gif) -*The full lifecycle in ~15 seconds: keyed produce (watch FNV-1a partition +*The full lifecycle: keyed produce (watch FNV-1a partition assignment), consume merged across partitions, and byte-level on-disk validation. Run it yourself: `./scripts/demo.sh` — recorded 2026-08-26.* @@ -37,17 +39,27 @@ validation. Run it yourself: `./scripts/demo.sh` — recorded 2026-08-26.* **Exactly-once via 2PC** — Kafka chose at-least-once + idempotent producers as a practical compromise (20-30% throughput cost). This project implements full 2PC to show what the real version costs: 10-100x throughput reduction, 2-5x latency increase, blocking on coordinator failure. -**Single writer per partition** — Avoids lock-free complexity (gap problems on crash, requires `pwrite()`). Parallelism comes from multiple partitions, not splitting one. +**Per-partition locking** — Each partition has its own mutex; parallelism comes from multiple partitions, not splitting one. Measured contention: ~12% under 4-goroutine parallel writes (PROGRESS.md) — negligible compared to the 86% syscall cost on the append path. ## Architecture ``` -Producer --> [buffer channel] --> single writer --> append-only segment - | - v +Producer --> Server (goroutine per conn, synchronous) + | + v + Broker --> Topic --> Partition x N + | + v + append-only segment files + (.log + .index + .timeindex) + | + v Consumer <-------- [read from offset] <----- OS page cache ``` +See [architecture overview](docs/phase1/architecture.md) for the full +diagram with layer responsibilities and invariants. + ## What Kafka Gets Right (and What It Costs) | Optimization | Kafka's Choice | The Cost | @@ -64,7 +76,7 @@ Consumer <-------- [read from offset] <----- OS page cache | Phase | Scope | Status | |-------|-------|--------| | 1 | Single-node: log engine + broker + server/RPC | Complete | -| 2 | Exactly-once via 2PC (single-node) | Not started | +| 2 | Exactly-once via 2PC (single-node) | Design complete, implementation next | | 3 | Replication (ISR, leader election, replica fetch) | Not started | | 4 | Stream processing (conditional) | Not started | From 6b90a4774970f0e4aa783152fd93b0b626e4442e Mon Sep 17 00:00:00 2001 From: George Ayvazian Date: Wed, 26 Aug 2026 09:21:31 -0700 Subject: [PATCH 14/18] fix: use RWMutex for partition Read/NextOffset (read-only operations) partition.Read() and partition.NextOffset() were taking write locks despite being pure read operations. This serialized all reads on a partition unnecessarily. Upgraded partition.mu from Mutex to RWMutex and use RLock for Read/NextOffset, allowing concurrent reads. --- pkg/log/partition.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/pkg/log/partition.go b/pkg/log/partition.go index 574c56d..8295d90 100644 --- a/pkg/log/partition.go +++ b/pkg/log/partition.go @@ -35,9 +35,9 @@ const ( // assignment — segments just store bytes. // // Only the active (last) segment is writable. Closed segments are immutable. -// Concurrent access is protected by mu (Mutex). Append takes the lock. -// Read and NextOffset also take the lock. rotate is called by Append -// while the lock is held (no additional lock needed). +// Concurrent access is protected by mu (RWMutex). Append takes the write lock. +// Read and NextOffset take the read lock (they don't mutate state). +// rotate is called by Append while the write lock is held. // // Only called by Topic. Not exported — external packages use Topic. // @@ -47,14 +47,14 @@ const ( // - closed: sorted list of closed segments (by base offset, ascending). // - indexInterval: messages between index entries. // - segmentSize: target size in bytes before rotation. -// - mu: Mutex. Serializes Append, Read, NextOffset. +// - mu: RWMutex. Write lock for Append; read lock for Read, NextOffset. type partition struct { dir string active *segment closed []*segment indexInterval uint64 segmentSize int64 - mu sync.Mutex + mu sync.RWMutex } // createPartition creates a new empty partition. @@ -317,8 +317,8 @@ func (p *partition) rotate() error { // // Returns: message or error. func (p *partition) Read(offset uint64) (*message, error) { - p.mu.Lock() - defer p.mu.Unlock() + p.mu.RLock() + defer p.mu.RUnlock() next := p.nextOffsetLocked() if offset >= next { @@ -366,8 +366,8 @@ func (p *partition) findSegment(offset uint64) (*segment, error) { // // Only called by Topic and partition.Read. func (p *partition) NextOffset() uint64 { - p.mu.Lock() - defer p.mu.Unlock() + p.mu.RLock() + defer p.mu.RUnlock() return p.nextOffsetLocked() } From a7ed7d230de4a8845e2ff82547d804e16a9c76e7 Mon Sep 17 00:00:00 2001 From: George Ayvazian Date: Wed, 26 Aug 2026 09:23:26 -0700 Subject: [PATCH 15/18] docs: add concurrency model documentation Documents the four-layer locking hierarchy (Server -> Broker -> Topic -> Partition -> Segment), parallelism model, shutdown coordination, and known limitations. --- docs/phase1/concurrency.md | 135 +++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 docs/phase1/concurrency.md diff --git a/docs/phase1/concurrency.md b/docs/phase1/concurrency.md new file mode 100644 index 0000000..121e175 --- /dev/null +++ b/docs/phase1/concurrency.md @@ -0,0 +1,135 @@ +# Concurrency Model + +## Overview + +The message queue uses a four-layer locking hierarchy. Each layer protects a +different scope, and lock granularity increases as you move down the stack. + +``` +Layer 1: Server — goroutine per TCP connection +Layer 2: Broker — RWMutex on topics map +Layer 3: Topic — RWMutex + atomic counters +Layer 4: Partition — RWMutex on active segment + closed list +Layer 5: Segment — no locks (immutable after close) +``` + +## Layer Details + +### Layer 1: Server (goroutine per connection) + +Each TCP connection gets its own goroutine via `go s.handleConn(conn)`. +No shared mutable state — each goroutine reads its own request, calls the +broker, and writes its own response. The `sync.WaitGroup` tracks active +goroutines for graceful shutdown. + +### Layer 2: Broker (RWMutex on topics map) + +`Broker.mu` protects the `topics` map (topic name -> `*Topic`). + +| Operation | Lock | Why | +|-----------|------|-----| +| `CreateTopic` | `Lock()` (write) | Inserts into map | +| `Produce` | `RLock()` (read) | Map lookup only | +| `Consume` | `RLock()` (read) | Map lookup only | +| `NextOffset` | `RLock()` (read) | Map lookup only | +| `NumPartitions` | `RLock()` (read) | Map lookup only | +| `Topics` | `RLock()` (read) | Iterates map | +| `Close` | `Lock()` (write) | Closes all topics | + +No disk I/O happens under this lock. It is held only for map lookups and +inserts, then immediately released. The topic pointer remains valid after +RUnlock because `close()` does not nil the partitions — it closes file +handles at the partition layer. + +### Layer 3: Topic (RWMutex + atomics) + +`Topic.mu` coordinates lifecycle (close vs in-flight operations). It does +not protect partition data — that's Layer 4. + +| Operation | Lock | Why | +|-----------|------|-----| +| `Produce` | `RLock()` | Prevents close() during append | +| `Consume` | `RLock()` | Prevents close() during read | +| `NextOffset` | `RLock()` | Prevents close() during offset check | +| `NumPartitions` | `RLock()` | Returns partition count | +| `Name` | `RLock()` | Returns topic name | +| `close()` | `Lock()` | Waits for all RLocks to drain | + +**Atomic counters** (lock-free): + +- `inFlight atomic.Int64` — incremented after acquiring RLock, decremented + before releasing. `close()` asserts this is 0 after acquiring write lock, + guaranteeing no operation is in progress. +- `nextRR atomic.Uint64` — round-robin partition selection for nil-key + messages. Hot path optimization that avoids the lock entirely. + +### Layer 4: Partition (RWMutex) + +`partition.mu` serializes access to the active segment and closed segment +list. This is the critical layer for correctness. + +| Operation | Lock | Why | +|-----------|------|-----| +| `Append` | `Lock()` (write) | Assigns offset, writes to segment, may rotate | +| `Read` | `RLock()` (read) | Reads from segment, no mutation | +| `NextOffset` | `RLock()` (read) | Returns offset, no mutation | + +`rotate()` is called by `Append` while the write lock is held — no +additional lock needed. + +**Why RWMutex matters**: A single partition can have multiple concurrent +consumers (e.g., `consume -all` fans out to all partitions, but multiple +clients can consume the same partition at different offsets). With a plain +Mutex, these reads would serialize. With RWMutex, they proceed in parallel. + +### Layer 5: Segment (no locks) + +Segments have no mutex. After `Release()`, a closed segment's file handles +are nil and its data is immutable. `Read()` reopens files on demand for +closed segments — each call opens its own file descriptors, reads, and +closes them. No shared mutable state is accessed. + +The active segment is only accessed while `partition.mu` is held, so no +additional locking is needed. + +## Parallelism Model + +``` +Client A ─┐ +Client B ─┤ ──> Broker.RLock ──> Topic.RLock ──> partition[i].Lock +Client C ─┘ │ +Client D ────────────────────────────────┘ (different partition) +``` + +- **Across partitions**: fully parallel. Each partition has its own mutex. + Multiple goroutines can Produce/Consume to different partitions + simultaneously. +- **Within a partition**: reads are parallel (RWMutex), writes are exclusive. + A write blocks all reads and other writes on that partition. +- **Across topics**: fully parallel. Each topic has its own mutex. + +## Shutdown Coordination + +1. `Broker.Close()` acquires `Broker.mu.Lock()`, blocking all new operations. +2. For each topic, calls `Topic.close()`. +3. `Topic.close()` acquires `Topic.mu.Lock()`. This blocks until all + in-flight Produce/Consume calls release their RLock. +4. `close()` asserts `inFlight == 0`, then closes all partitions. +5. `Server.Close()` calls `broker.Close()` and waits on `sync.WaitGroup` + for all connection goroutines to finish. + +No busy-waiting. No timeouts. The write lock naturally drains in-flight +operations. + +## Known Limitations + +- **Single-writer per partition**: Appends are serialized. This is by design + for correctness, but limits write throughput on a hot partition. For + Phase 2, each partition will still be single-writer (Kafka's model). +- **Read contention under extreme load**: Under very high concurrent read + pressure on a single partition, RWMutex can still cause contention due to + internal bookkeeping. This is unlikely to matter until thousands of + concurrent consumers on one partition. +- **No read-ahead or prefetch**: Each `Read()` call opens files on demand + for closed segments. Repeated reads to the same segment reopen the same + files. A segment-level read cache would help for hot closed segments. From 02ef2f1247443aa9409661475a2aedfbee08db7f Mon Sep 17 00:00:00 2001 From: George Ayvazian Date: Wed, 26 Aug 2026 09:24:03 -0700 Subject: [PATCH 16/18] docs: add concurrency model to docs index --- docs/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/README.md b/docs/README.md index 51635ae..e2aed47 100644 --- a/docs/README.md +++ b/docs/README.md @@ -16,6 +16,7 @@ Organized by project phase. Shared material (source-paper studies) applies to ev | [Implementation Plan](phase1/implementation-plan.md) | Build order, dependency graph between components | | [Server Design Decisions](phase1/server-design-decisions.md) | 6-question decision tree for the TCP server: connection model, wire protocol, request lifecycle, partition sync, batching, broker API | | [Control Flow Diagrams](phase1/control-flow.md) | Mermaid diagrams: full-stack produce/consume, server lifecycle, partition-level flows | +| [Concurrency Model](phase1/concurrency.md) | Four-layer locking hierarchy, parallelism model, shutdown coordination, known limitations | | [Log Design Doc](../pkg/log/DESIGN.md) | Storage layout, message format, index strategy, concurrency model, failure modes (lives with the package it documents) | ## Phase 2: Exactly-once via 2PC From 4cba93bd3d44fa1dd338c6e4088c3a7a10f51766 Mon Sep 17 00:00:00 2001 From: George Ayvazian Date: Wed, 26 Aug 2026 09:38:16 -0700 Subject: [PATCH 17/18] docs: add Architecture Decision Records with commit links Five ADRs covering key design decisions: - ADR-001: RWMutex for partition reads (b3b4d2f) - ADR-002: Synchronous architecture, no writer goroutine (7a295e2) - ADR-003: Sparse index with interval=1 (04d95e8) - ADR-004: fdatasync over fsync (fbd3b8b) - ADR-005: 28-byte fixed-size message header (b3475d3) Also fixes stale architecture diagram in README and adds concurrency model link to docs table. --- README.md | 5 ++ docs/README.md | 11 ++++ .../001-rwmutex-for-partition-reads.md | 33 ++++++++++++ .../decisions/002-synchronous-architecture.md | 43 +++++++++++++++ docs/decisions/003-sparse-index-interval1.md | 47 +++++++++++++++++ docs/decisions/004-fdatasync-over-fsync.md | 33 ++++++++++++ docs/decisions/005-28-byte-message-header.md | 52 +++++++++++++++++++ docs/decisions/README.md | 12 +++++ 8 files changed, 236 insertions(+) create mode 100644 docs/decisions/001-rwmutex-for-partition-reads.md create mode 100644 docs/decisions/002-synchronous-architecture.md create mode 100644 docs/decisions/003-sparse-index-interval1.md create mode 100644 docs/decisions/004-fdatasync-over-fsync.md create mode 100644 docs/decisions/005-28-byte-message-header.md create mode 100644 docs/decisions/README.md diff --git a/README.md b/README.md index 5f1841c..855fe0f 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ validation. Run it yourself: `./scripts/demo.sh` — recorded 2026-08-26.* | [Progress Tracker](PROGRESS.md) | Phase timeline, component status, test coverage, key learnings | | [Testing Guide](TESTING.md) | All test modes: unit, race, fuzzing, benchmarks, container integration test, validator | | [Control Flow Diagrams](docs/phase1/control-flow.md) | Mermaid diagrams: full-stack produce/consume, server lifecycle, partition-level flows | +| [Concurrency Model](docs/phase1/concurrency.md) | Four-layer locking hierarchy, parallelism model, shutdown coordination | | [Server Design Decisions](docs/phase1/server-design-decisions.md) | 6-question decision tree for the TCP server: connection model, wire protocol, request lifecycle, partition sync, batching, broker API | | [Phase 2 Design Notes](docs/phase2/design-notes.md) | Consumer groups, replication, 2PC, file descriptor management | | [Exactly-Once Penalty](docs/phase2/exactly-once-penalty.md) | Performance cost of 2PC vs at-least-once | @@ -31,6 +32,8 @@ validation. Run it yourself: `./scripts/demo.sh` — recorded 2026-08-26.* ## Design Decisions +Detailed ADRs with commit links: [docs/decisions/](docs/decisions/). + **Append-only segment files** — Kafka's core insight: sequential I/O is 10-100x faster than random. Every other optimization (zero-copy, batching) is secondary to this one choice. **OS page cache over application cache** — Kafka doesn't implement its own cache. It relies on the OS page cache and `sendfile()` for zero-copy transfers. The broker never touches message bytes on the consume path. This works because the broker is a dumb file server — no filtering, no transformation. @@ -57,6 +60,8 @@ Producer --> Server (goroutine per conn, synchronous) Consumer <-------- [read from offset] <----- OS page cache ``` +Each layer has its own lock (see [Concurrency Model](docs/phase1/concurrency.md)). +Parallelism comes from multiple partitions, not from pipelining within one. See [architecture overview](docs/phase1/architecture.md) for the full diagram with layer responsibilities and invariants. diff --git a/docs/README.md b/docs/README.md index e2aed47..4e5523a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -9,6 +9,17 @@ Organized by project phase. Shared material (source-paper studies) applies to ev | [Kafka Paper Study](shared/kafka-paper-study.md) | 8-question walkthrough of the Kafka paper: pull vs push, page cache, ISR, zero-copy | | [Kafka Section 5](shared/kafka-paper-section5.md) | Experimental results from the paper | +## Decisions + +| Document | What it covers | +|----------|----------------| +| [Decision Index](decisions/README.md) | Architecture Decision Records — key design choices with commit links | +| [ADR-001](decisions/001-rwmutex-for-partition-reads.md) | RWMutex for partition reads | +| [ADR-002](decisions/002-synchronous-architecture.md) | Synchronous architecture (no writer goroutine) | +| [ADR-003](decisions/003-sparse-index-interval1.md) | Sparse index with interval=1 | +| [ADR-004](decisions/004-fdatasync-over-fsync.md) | fdatasync over fsync | +| [ADR-005](decisions/005-28-byte-message-header.md) | 28-byte fixed-size message header | + ## Phase 1: Single-node Log Engine | Document | What it covers | diff --git a/docs/decisions/001-rwmutex-for-partition-reads.md b/docs/decisions/001-rwmutex-for-partition-reads.md new file mode 100644 index 0000000..56e6194 --- /dev/null +++ b/docs/decisions/001-rwmutex-for-partition-reads.md @@ -0,0 +1,33 @@ +# ADR-001: Use RWMutex for partition read operations + +## Status + +Accepted + +## Context + +`partition.Read()` and `partition.NextOffset()` are pure read operations — +they access the segment and index without mutating partition state. Initially, +both used `mu.Lock()` (write lock), serializing all reads on a partition. + +This was incorrect. A single partition can have multiple concurrent consumers +(e.g., two clients reading different offsets). A write lock forces these reads +to serialize unnecessarily. + +## Decision + +Upgrade `partition.mu` from `sync.Mutex` to `sync.RWMutex`. Use `RLock()` +for `Read()` and `NextOffset()`. Keep `Lock()` for `Append()` (which mutates +state and may trigger rotation). + +## Consequences + +- Concurrent reads on the same partition now proceed in parallel. +- Write throughput is unchanged (Append still takes exclusive lock). +- Under extreme read pressure, RWMutex internal bookkeeping can still cause + contention — unlikely until thousands of concurrent consumers on one partition. +- Verified correct: all tests pass with race detector enabled. + +## Commit + +[b3b4d2f](https://github.com/ga11221/message-queue/commit/b3b4d2f) — `fix: use RWMutex for partition Read/NextOffset (read-only operations)` diff --git a/docs/decisions/002-synchronous-architecture.md b/docs/decisions/002-synchronous-architecture.md new file mode 100644 index 0000000..ea24a28 --- /dev/null +++ b/docs/decisions/002-synchronous-architecture.md @@ -0,0 +1,43 @@ +# ADR-002: Synchronous architecture (no writer goroutine/channel) + +## Status + +Accepted + +## Context + +Kafka uses a producer channel and dedicated writer goroutines per partition +to batch writes. The initial design considered the same pattern: a buffered +channel between the request handler and a background writer. + +## Decision + +Use synchronous calls instead. `Topic.Produce()` calls `Partition.Append()` +directly on the request-handling goroutine. No channels, no background +writers. + +## Consequences + +**Pros:** +- Simpler code — no goroutine lifecycle management, no channel backpressure. +- Lower latency per-message (no channel send/receive overhead). +- Easier to reason about error handling — the caller sees the result directly. + +**Cons:** +- No automatic batching — each message is a separate write syscall. +- The request goroutine blocks on disk I/O during append. +- Under high write throughput, the mutex contention increases (though this is + bounded by partition count). + +**Mitigation:** +- Phase 2.5 adds batch append (multiple records per syscall) at the API level. +- Parallelism comes from multiple partitions, not from pipelining within one. + +The tradeoff favors simplicity for a learning project. Kafka's channel model +adds complexity that only pays off at scale (thousands of partitions, millions +of messages/sec). + +## Commits + +- [7a295e2](https://github.com/ga11221/message-queue/commit/7a295e2) — `docs: sync control flow diagrams with current code` (diagrams reflect synchronous paths) +- [74a76bd](https://github.com/ga11221/message-queue/commit/74a76bd) — `docs: architecture overview diagram` diff --git a/docs/decisions/003-sparse-index-interval1.md b/docs/decisions/003-sparse-index-interval1.md new file mode 100644 index 0000000..4219c57 --- /dev/null +++ b/docs/decisions/003-sparse-index-interval1.md @@ -0,0 +1,47 @@ +# ADR-003: Sparse index with interval=1 + +## Status + +Accepted + +## Context + +The index maps offsets to byte positions in the .log file. A dense index +(one entry per message) would give O(1) lookups but costs memory and disk +space. A sparse index (one entry every N messages) trades lookup time for +space efficiency. + +Kafka uses a configurable interval (default: every 10KB of log data). + +## Decision + +Use interval=1 (every message gets an index entry). This is the simplest +correct implementation — every offset maps directly to a byte position. + +The index is still "sparse" in the sense that it only stores offset and +byte position (16 bytes per entry), not the full message. And the +timeindex is separate (also interval=1). + +## Consequences + +**Pros:** +- O(log n) lookup via binary search, but n is small (one entry per message). +- Simple to implement and reason about. +- No "nearest entry + scan" logic needed for exact offset matches. + +**Cons:** +- Higher disk usage than a larger interval (16 bytes per message). +- For a 1GB segment with 1024-byte messages, the index is ~16MB (1.6% overhead). + Acceptable for Phase 1. + +**Tradeoff:** +- Interval=1 is optimal for random access (each offset resolves exactly). +- Larger intervals are better for sequential scans (fewer index entries to + binary-search through, but you scan forward from the nearest entry). +- Since `Read(offset)` is random-access by design, interval=1 is the right + default. A configurable interval can be added later if sequential scan + performance matters. + +## Commit + +[04d95e8](https://github.com/ga11221/message-queue/commit/04d95e8) — `log: implement Index and TimeIndex` diff --git a/docs/decisions/004-fdatasync-over-fsync.md b/docs/decisions/004-fdatasync-over-fsync.md new file mode 100644 index 0000000..77dd677 --- /dev/null +++ b/docs/decisions/004-fdatasync-over-fsync.md @@ -0,0 +1,33 @@ +# ADR-004: Use fdatasync over fsync + +## Status + +Accepted + +## Context + +After writing to the .log file, the segment must flush data to disk for +durability. Two options: + +- `fsync(fd)` — flushes data + metadata (file size, mtime, etc.). +- `fdatasync(fd)` — flushes data only, skips metadata unless file size changed. + +Kafka uses `fdatasync()` on Linux. + +## Decision + +Use `fdatasync()` on Linux via raw syscall. Fall back to `f.Sync()` on other +platforms (which calls `fsync`). + +## Consequences + +- `fdatasync` is faster than `fsync` because it skips metadata writes. + On ext4, this saves 1-2ms per sync (metadata requires journal commits). +- Data durability is identical — both ensure the data bytes are on disk. +- File size is metadata, but `fdatasync` handles this correctly: it updates + file size if the file grew (which it always does on append). +- Platform-specific code is isolated in `sync_linux.go` and `sync_other.go`. + +## Commit + +[fbd3b8b](https://github.com/ga11221/message-queue/commit/fbd3b8b) — `log: add EINTR retry for syncSegment` diff --git a/docs/decisions/005-28-byte-message-header.md b/docs/decisions/005-28-byte-message-header.md new file mode 100644 index 0000000..3d46d2b --- /dev/null +++ b/docs/decisions/005-28-byte-message-header.md @@ -0,0 +1,52 @@ +# ADR-005: 28-byte fixed-size message header + +## Status + +Accepted + +## Context + +Messages need a header for offsets, timestamps, CRC, and key/value lengths. +Options: + +- Fixed-size header (simpler parsing, wastes space for small messages). +- Variable-size header (more compact, harder to parse). + +## Decision + +Use a fixed 28-byte header: + +``` +Offset (8 bytes) — uint64, big-endian +Timestamp (8 bytes) — uint64, Unix nanos +CRC32 (4 bytes) — uint32, covers header + key + value +KeyLength (4 bytes) — uint32 +ValueLength (4 bytes) — uint32 +``` + +Key and value follow immediately after the header. Total message size = +28 + len(key) + len(value). + +## Consequences + +**Pros:** +- Parsing is trivial: read 28 bytes, extract fields, read key+value. +- CRC covers everything after the CRC field — single check validates the + entire message. +- No delimiter scanning needed (Kafka's old format had this problem). +- `Decode()` is branchless for the fixed portion. + +**Cons:** +- 28-byte overhead per message. For tiny messages (1-4 bytes), the header + is 7-28x the payload. Acceptable for a message queue (messages are + typically 100+ bytes). +- No extensibility — adding fields requires a format version bump. + +**Tradeoff:** +- Fixed header is the right choice for Phase 1 (simplicity). +- If we needed backward compatibility across format changes, we'd need + a version byte and variable-length encoding (like Kafka's current format). + +## Commit + +[b3475d3](https://github.com/ga11221/message-queue/commit/b3475d3) — `log: implement segment struct with Create/Open/Close` diff --git a/docs/decisions/README.md b/docs/decisions/README.md new file mode 100644 index 0000000..b988bbb --- /dev/null +++ b/docs/decisions/README.md @@ -0,0 +1,12 @@ +# Architecture Decision Records + +ADRs capture key design decisions: the context, the choice, and the +consequences. Each links to the commit where the decision was implemented. + +| ADR | Decision | Commit | +|-----|----------|--------| +| [001](001-rwmutex-for-partition-reads.md) | RWMutex for partition reads | [b3b4d2f](https://github.com/ga11221/message-queue/commit/b3b4d2f) | +| [002](002-synchronous-architecture.md) | Synchronous architecture (no writer goroutine) | [7a295e2](https://github.com/ga11221/message-queue/commit/7a295e2) | +| [003](003-sparse-index-interval1.md) | Sparse index with interval=1 | [04d95e8](https://github.com/ga11221/message-queue/commit/04d95e8) | +| [004](004-fdatasync-over-fsync.md) | fdatasync over fsync | [fbd3b8b](https://github.com/ga11221/message-queue/commit/fbd3b8b) | +| [005](005-28-byte-message-header.md) | 28-byte fixed-size message header | [b3475d3](https://github.com/ga11221/message-queue/commit/b3475d3) | From b79255b947bcf06c6da7737f12cfbc3db0d1273a Mon Sep 17 00:00:00 2001 From: George Ayvazian Date: Wed, 26 Aug 2026 09:49:49 -0700 Subject: [PATCH 18/18] docs: add 5 more ADRs (006-010) - ADR-006: Length-prefixed protobuf wire protocol (12aff04) - ADR-007: FNV-1a hash for key-based partition routing (d7d0f4b) - ADR-008: Release closed segment file handles after recovery (1af0d20) - ADR-009: Fuzz testing with committed seed corpus (6b89d1a) - ADR-010: Immutable closed segments (chmod 0444) (70f8b6b) --- docs/README.md | 5 ++ ...-length-prefixed-protobuf-wire-protocol.md | 58 +++++++++++++++++++ .../007-fnv1a-hash-partition-routing.md | 47 +++++++++++++++ .../008-fd-management-release-on-recovery.md | 46 +++++++++++++++ .../009-fuzz-testing-with-seed-corpus.md | 46 +++++++++++++++ .../010-immutable-closed-segments.md | 41 +++++++++++++ docs/decisions/README.md | 5 ++ 7 files changed, 248 insertions(+) create mode 100644 docs/decisions/006-length-prefixed-protobuf-wire-protocol.md create mode 100644 docs/decisions/007-fnv1a-hash-partition-routing.md create mode 100644 docs/decisions/008-fd-management-release-on-recovery.md create mode 100644 docs/decisions/009-fuzz-testing-with-seed-corpus.md create mode 100644 docs/decisions/010-immutable-closed-segments.md diff --git a/docs/README.md b/docs/README.md index 4e5523a..172721d 100644 --- a/docs/README.md +++ b/docs/README.md @@ -19,6 +19,11 @@ Organized by project phase. Shared material (source-paper studies) applies to ev | [ADR-003](decisions/003-sparse-index-interval1.md) | Sparse index with interval=1 | | [ADR-004](decisions/004-fdatasync-over-fsync.md) | fdatasync over fsync | | [ADR-005](decisions/005-28-byte-message-header.md) | 28-byte fixed-size message header | +| [ADR-006](decisions/006-length-prefixed-protobuf-wire-protocol.md) | Length-prefixed protobuf wire protocol | +| [ADR-007](decisions/007-fnv1a-hash-partition-routing.md) | FNV-1a hash for key-based partition routing | +| [ADR-008](decisions/008-fd-management-release-on-recovery.md) | Release closed segment file handles after recovery | +| [ADR-009](decisions/009-fuzz-testing-with-seed-corpus.md) | Fuzz testing with committed seed corpus | +| [ADR-010](decisions/010-immutable-closed-segments.md) | Immutable closed segments (chmod 0444) | ## Phase 1: Single-node Log Engine diff --git a/docs/decisions/006-length-prefixed-protobuf-wire-protocol.md b/docs/decisions/006-length-prefixed-protobuf-wire-protocol.md new file mode 100644 index 0000000..8444664 --- /dev/null +++ b/docs/decisions/006-length-prefixed-protobuf-wire-protocol.md @@ -0,0 +1,58 @@ +# ADR-006: Length-prefixed protobuf wire protocol + +## Status + +Accepted + +## Context + +The TCP server needs a wire protocol for client-server communication. +Options: + +- Raw bytes with delimiters (simple but fragile — what if the delimiter + appears in the payload?). +- Fixed-size messages (wastes space for small messages, caps message size). +- Length-prefixed framing (standard approach — read length, then read that + many bytes). +- gRPC (built on HTTP/2, handles framing automatically — but adds a heavy + dependency). + +## Decision + +Use length-prefixed protobuf framing: + +``` +Frame = [4-byte big-endian length][protobuf bytes] +Max frame size: 16MB +``` + +All requests and responses are protobuf messages wrapped in a `oneof` +envelope (`Request` / `Response`). The server reads the 4-byte length, +reads that many bytes, and unmarshals the protobuf. + +## Consequences + +**Pros:** +- Simple to implement — two syscalls per frame (read 4 bytes, read N bytes). +- Protobuf gives us schema evolution (add fields without breaking clients). +- No dependency on gRPC or HTTP/2 — keeps the project focused on the log + engine, not the transport layer. +- 16MB max frame is generous enough for any message size, but prevents + a malicious client from forcing the server to allocate gigabytes. + +**Cons:** +- No streaming — each request/response is a full frame. For batch operations, + we'd need to send multiple frames or define a batch message type. +- No built-in flow control — TCP handles this, but we don't have backpressure + at the application layer. +- Protobuf marshaling overhead is negligible for our message sizes, but + it's there. + +**Why not gRPC:** +- gRPC adds HTTP/2, interceptors, service definitions, code generation. +- For a learning project, the transport layer is not the point. +- We can always add gRPC later as a frontend without changing the log engine. + +## Commit + +[12aff04](https://github.com/ga11221/message-queue/commit/12aff04) — `feat: add TCP server with protobuf wire protocol` diff --git a/docs/decisions/007-fnv1a-hash-partition-routing.md b/docs/decisions/007-fnv1a-hash-partition-routing.md new file mode 100644 index 0000000..9de51ea --- /dev/null +++ b/docs/decisions/007-fnv1a-hash-partition-routing.md @@ -0,0 +1,47 @@ +# ADR-007: FNV-1a hash for key-based partition routing + +## Status + +Accepted + +## Context + +Messages with the same key should always go to the same partition (for +ordering guarantees per key). Options: + +- Consistent hashing (ring-based, minimizes reassignment on resize). +- Simple modulo (hash % numPartitions, rehashes everything on resize). +- Random assignment (no ordering guarantee per key). + +## Decision + +Use FNV-1a hash with modulo: `partition = hash(key) % numPartitions`. +Nil keys use round-robin via `atomic.AddUint64`. + +FNV-1a is chosen over FNV-1 because it has better avalanche properties +(bit changes in the input spread more evenly across the output). It's +also trivially simple to implement (5 lines) and has no dependencies. + +## Consequences + +**Pros:** +- Deterministic: same key always routes to the same partition. +- FNV-1a is fast (~1ns per byte) — negligible overhead on the hot path. +- Atomic round-robin for nil keys avoids the lock entirely. + +**Cons:** +- Modulo hashing means all messages are rehashed when partition count changes. + Kafka uses the same approach (and handles reassignment separately). +- FNV-1a is not cryptographic — fine for routing, but don't use it for + security-sensitive hashing. + +**Why not consistent hashing:** +- Consistent hashing minimizes reassignment on resize, but adds complexity + (virtual nodes, ring management). +- Partition count is fixed at topic creation — resize is not a common + operation. Simple modulo is sufficient. +- Kafka uses modulo hashing for the same reason. + +## Commit + +[d7d0f4b](https://github.com/ga11221/message-queue/commit/d7d0f4b) — `feat: implement static topic with key-based partition routing` diff --git a/docs/decisions/008-fd-management-release-on-recovery.md b/docs/decisions/008-fd-management-release-on-recovery.md new file mode 100644 index 0000000..e29f2ab --- /dev/null +++ b/docs/decisions/008-fd-management-release-on-recovery.md @@ -0,0 +1,46 @@ +# ADR-008: Release closed segment file handles after recovery + +## Status + +Accepted + +## Context + +Each segment has 3 files (.log, .index, .timeindex). If all file descriptors +are held open, a partition with 1000 segments uses 3000 fds. On a system +with a default ulimit of 1024, this fails immediately. Even with higher +limits, holding thousands of fds wastes kernel resources and slows `select()`. + +## Decision + +After recovery, call `Segment.Release()` on closed (immutable) segments. +This closes the file handles without syncing (data is already flushed). +When `Segment.Read()` is called on a closed segment, it reopens the files +on demand, reads, and closes them. + +The active segment keeps its file handles open (it's written to frequently). + +## Consequences + +**Pros:** +- Steady-state fd count: 3 per partition (active segment only), regardless + of how many closed segments exist. +- Can handle millions of messages across thousands of segments without + hitting fd limits. +- Closed segments are immutable — reopening them is safe (no concurrent + writes to corrupt the read). + +**Cons:** +- Each read on a closed segment pays the cost of `open()` + `close()`. + Two syscalls per read (plus the read itself). +- For hot closed segments (recently rotated, frequently read), this adds + latency. A segment-level read cache would help here. + +**Tradeoff:** +- fd exhaustion is a hard failure (server crashes). Read latency is a + soft degradation (slower, but still works). The choice is clear. +- Kafka makes the same tradeoff — it doesn't hold all segment fds open. + +## Commit + +[1af0d20](https://github.com/ga11221/message-queue/commit/1af0d20) — `perf: release closed segment file handles after recovery` diff --git a/docs/decisions/009-fuzz-testing-with-seed-corpus.md b/docs/decisions/009-fuzz-testing-with-seed-corpus.md new file mode 100644 index 0000000..e2665f8 --- /dev/null +++ b/docs/decisions/009-fuzz-testing-with-seed-corpus.md @@ -0,0 +1,46 @@ +# ADR-009: Fuzz testing with committed seed corpus + +## Status + +Accepted + +## Context + +The serialization layer (message encode/decode, protobuf framing) handles +untrusted input from the network. Bugs here can cause panics (DoS) or +silent data corruption. Unit tests with hand-crafted inputs miss edge cases. + +## Decision + +Use Go's native `testing.F` fuzz testing for: +- `FuzzDecodeMessage` — arbitrary bytes into DecodeMessage, must not panic. +- `FuzzMessageRoundTrip` — random key/value encode->decode, must round-trip. +- `FuzzReadFrame` — arbitrary bytes into ReadFrame, must not panic. +- `FuzzFrameRoundTrip` — random protobuf payload frame round-trip. + +Seed corpus is committed to `testdata/` so regression inputs run in normal +`go test` without requiring fuzz mode. + +## Consequences + +**Pros:** +- Found a real bug: `DecodeMessage` panicked on crafted input where + `size-keyLen` underflowed (uint32) or `HeaderSize+size` overflowed bounds. +- Seed corpus ensures regressions are caught in CI (normal `go test` runs + the seed inputs). +- Zero external dependencies — Go's built-in fuzzer is sufficient. + +**Cons:** +- Fuzz tests are slower than unit tests — CI runs them with `-fuzztime=0` + (seed corpus only, no mutation). +- Coverage-guided fuzzing is effective but not exhaustive — it won't find + bugs in code paths it can't reach. + +**Why not go-fuzz or other tools:** +- Go's native fuzzer (Go 1.18+) is built into the test binary. +- No separate tool installation, no coverage instrumentation step. +- Seed corpus management is simpler with native `testdata/` directory. + +## Commit + +[6b89d1a](https://github.com/ga11221/message-queue/commit/6b89d1a) — `feat: fuzz testing + Docker packaging` diff --git a/docs/decisions/010-immutable-closed-segments.md b/docs/decisions/010-immutable-closed-segments.md new file mode 100644 index 0000000..999ade4 --- /dev/null +++ b/docs/decisions/010-immutable-closed-segments.md @@ -0,0 +1,41 @@ +# ADR-010: Immutable closed segments (chmod 0444) + +## Status + +Accepted + +## Context + +Closed segments should never be modified. A bug that writes to a closed +segment would silently corrupt data without any error (the write would +succeed at the OS level). Detecting this requires manual inspection. + +## Decision + +After closing a segment, `chmod` all three files (.log, .index, .timeindex) +to read-only (0444). `Open()` uses `O_RDONLY` for recovery. `Create()` +stays `O_RDWR` for the active segment. + +## Consequences + +**Pros:** +- Any accidental write to a closed segment fails immediately at the OS level. +- Defense in depth — even if the code has a bug, the data is safe. +- Read-only permissions signal intent: these files are immutable. + +**Cons:** +- `chmod` is an extra syscall per file during rotation (3 files per rotation). + Negligible overhead (rotation happens infrequently). +- On some systems, root-owned files may need `sudo` to chmod. In practice, + the process owns its data directory, so this is not an issue. + +**Why not rely on code correctness alone:** +- Code correctness is necessary but not sufficient. A stray pointer or + logic error could write to the wrong segment. +- OS-level enforcement catches bugs that code review misses. +- Kafka doesn't do this (it relies on the log appender being correct), + but for a learning project, the extra safety is worth the trivial cost. + +## Commit + +[70f8b6b](https://github.com/ga11221/message-queue/commit/70f8b6b) — `log: make closed segments immutable (chmod 0444)` diff --git a/docs/decisions/README.md b/docs/decisions/README.md index b988bbb..34aa87e 100644 --- a/docs/decisions/README.md +++ b/docs/decisions/README.md @@ -10,3 +10,8 @@ consequences. Each links to the commit where the decision was implemented. | [003](003-sparse-index-interval1.md) | Sparse index with interval=1 | [04d95e8](https://github.com/ga11221/message-queue/commit/04d95e8) | | [004](004-fdatasync-over-fsync.md) | fdatasync over fsync | [fbd3b8b](https://github.com/ga11221/message-queue/commit/fbd3b8b) | | [005](005-28-byte-message-header.md) | 28-byte fixed-size message header | [b3475d3](https://github.com/ga11221/message-queue/commit/b3475d3) | +| [006](006-length-prefixed-protobuf-wire-protocol.md) | Length-prefixed protobuf wire protocol | [12aff04](https://github.com/ga11221/message-queue/commit/12aff04) | +| [007](007-fnv1a-hash-partition-routing.md) | FNV-1a hash for key-based partition routing | [d7d0f4b](https://github.com/ga11221/message-queue/commit/d7d0f4b) | +| [008](008-fd-management-release-on-recovery.md) | Release closed segment file handles after recovery | [1af0d20](https://github.com/ga11221/message-queue/commit/1af0d20) | +| [009](009-fuzz-testing-with-seed-corpus.md) | Fuzz testing with committed seed corpus | [6b89d1a](https://github.com/ga11221/message-queue/commit/6b89d1a) | +| [010](010-immutable-closed-segments.md) | Immutable closed segments (chmod 0444) | [70f8b6b](https://github.com/ga11221/message-queue/commit/70f8b6b) |

#p%ue?-fA=7HLO-Vz5wg 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%0DWg~Ydh&nc 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�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