Commit Graph
12037 Commits
Author SHA1 Message Date
chrislu 71769da3b4 Phase 3: Fix ApiVersions matrix accuracy and version validation
ApiVersions Matrix Accuracy completed:

## Critical Fixes
- **OffsetFetch API**: Updated advertised from v0-v2 to v0-v5 (MAJOR fix)
  - Implementation already supported v3+ throttle_time_ms and v5+ leader_epoch
  - Clients can now use advanced OffsetFetch features
- **CreateTopics API**: Updated advertised from v0-v4 to v0-v5 (minor fix)
  - Implementation already routed v5 requests to v2+ handler
  - Better client compatibility for v5 CreateTopics requests

## Implementation
- **handleApiVersions()**: Corrected advertised max versions
- **validateAPIVersion()**: Updated validation ranges to match advertisements
- **Consistency**: Eliminated mismatch between advertised vs implemented versions

## Testing & Verification
- **Comprehensive test suite**: 6 new tests in api_versions_test.go
- **Version validation tests**: OffsetFetch v3-v5 and CreateTopics v5 now accepted
- **End-to-end verification**: E2E tests still pass, no regressions
- **API audit documentation**: Complete version matrix in API_VERSION_MATRIX.md

## Impact
- **Client compatibility**: Higher-version clients can now connect properly
- **Feature utilization**: Advanced features like leader epoch, throttle time accessible
- **Protocol compliance**: Advertised versions now match actual implementation
- **Future-proofing**: Clear process for managing API version accuracy

Ready for Phase 4: Consumer group protocol metadata parsing
2025-09-13 13:50:10 -07:00
chrislu bd8f57f2bb Update implementation phases: Phase 1 & 2 completed
- Phase 1 : SeaweedMQ record retrieval implemented
- Phase 2 : CreateTopics v0-v5 compliance implemented
- Ready to start Phase 3: ApiVersions matrix accuracy
2025-09-13 13:19:30 -07:00
chrislu 5d0c45c9dc Phase 2: Implement CreateTopics protocol compliance for v0/v1
CreateTopics Protocol Compliance completed:

## Implementation
- Implement handleCreateTopicsV0V1() with proper v0/v1 request parsing
- Support regular array/string format (not compact) for v0/v1
- Parse topic name, partitions, replication factor, assignments, configs
- Handle timeout_ms and validate_only fields correctly
- Maintain existing v2+ compact format support
- Wire to SeaweedMQ handler for actual topic creation

## Key Features
- Full v0-v5 CreateTopics API version support
- Proper error handling (TOPIC_ALREADY_EXISTS, INVALID_PARTITIONS, etc.)
- Partition count validation and enforcement
- Compatible with existing SeaweedMQ topic management

## Tests
- Comprehensive unit tests for v0/v1/v2+ parsing
- Error condition testing (duplicate topics, invalid partitions)
- Multi-topic creation support
- Integration tests across all API versions
- Performance benchmarks for CreateTopics operations

## Verification
- All protocol tests pass (v0-v5 CreateTopics)
- E2E Sarama tests continue to work
- Real topics created with specified partition counts
- Proper error responses for edge cases

Ready for Phase 3: ApiVersions matrix accuracy
2025-09-13 13:18:54 -07:00
chrislu c9f3935e7b Phase 1: Implement SeaweedMQ record retrieval in GetStoredRecords
Core SeaweedMQ Integration completed:

## Implementation
- Implement SeaweedMQHandler.GetStoredRecords() to retrieve actual records from SeaweedMQ
- Add SeaweedSMQRecord wrapper implementing offset.SMQRecord interface
- Wire Fetch API to use real SMQ records instead of synthetic batches
- Support both agent and broker client connections for record retrieval

## Key Features
- Proper Kafka offset mapping from SeaweedMQ records
- Respects maxRecords limit and batch size constraints
- Graceful error handling for missing topics/partitions
- High water mark boundary checking

## Tests
- Unit tests for SMQRecord interface compliance
- Edge case testing (empty topics, offset boundaries, limits)
- Integration with existing end-to-end Kafka tests
- Benchmark tests for record accessor performance

## Verification
- All integration tests pass
- E2E Sarama test shows 'Found X SMQ records' debug output
- GetStoredRecords now returns real data instead of TODO placeholder

Ready for Phase 2: CreateTopics protocol compliance
2025-09-13 13:12:32 -07:00
chrislu dec63c22e4 Add Kafka gateway implementation phases roadmap
- Document 7 phases of implementation from high to low priority
- Phase 1: Core SeaweedMQ integration for real message retrieval
- Phase 2: CreateTopics protocol compliance
- Phase 3: ApiVersions matrix accuracy
- Phase 4: Consumer group protocol metadata parsing
- Phase 5: Multi-batch Fetch support
- Phase 6: Flexible versions support
- Phase 7: Error handling and edge cases

Ready to start Phase 1 implementation.
2025-09-13 13:09:44 -07:00
chrislu c0b15ed489 refactoring 2025-09-13 13:03:51 -07:00
chrislu 964d1d06e4 fix TestSaramaProduceConsume 2025-09-13 11:06:29 -07:00
chrislu 42aea1dc68 align package decoding 2025-09-13 10:23:14 -07:00
chrislu ba48ea9c4c fix samara 2025-09-13 09:58:53 -07:00
chrislu 445d7343d7 fix v7 samara 2025-09-13 09:06:02 -07:00
chrislu 4f0dd2e527 fix kafka tests 2025-09-13 08:55:18 -07:00
chrislu 6eafc87413 fix remaining tests 2025-09-13 08:47:46 -07:00
chrislu ba1599b1e9 fix tests 2025-09-13 08:31:16 -07:00
chrislu 8743c5453a clean up connections 2025-09-13 08:17:20 -07:00
chrislu 9ea6ef0bf8 fix tests 2025-09-13 08:06:36 -07:00
chrislu ccd48feefb fix test errors 2025-09-13 00:17:54 -07:00
chrislu cce9d8a365 Remove s3tests patches - upstream repo now fixed
- Remove _create_objects patches since upstream s3-tests resolved NameError
- SeaweedFS strong consistency should eliminate 404 errors
- Let tests run naturally to detect real issues
2025-09-12 23:52:01 -07:00
chrislu c67e3255d9 Revert "Update s3tests.yml"
This reverts commit 117bcaa4b1.
2025-09-12 23:51:07 -07:00
chrislu e6f7e7efb5 fix in-memory variables 2025-09-12 23:50:07 -07:00
chrislu 78382b380e Merge branch 'master' into feature/mq-kafka-gateway-m1 2025-09-12 23:14:14 -07:00
chrislu 56aa5278af single mode 2025-09-12 23:13:41 -07:00
chrislu 3fa024479e remove TestMode 2025-09-12 23:04:41 -07:00
chrislu ba73939ca2 fixes 2025-09-12 23:02:10 -07:00
chrislu 16e014f360 start tests 2025-09-12 22:45:06 -07:00
chrislu 30b21abab9 fix kafka tests 2025-09-12 22:44:56 -07:00
chrislu c951fc03c1 Update smq_mapping_test.go 2025-09-12 22:44:36 -07:00
chrislu a342ede4cd Update go.sum 2025-09-12 22:11:04 -07:00
chrislu 117bcaa4b1 Update s3tests.yml 2025-09-12 22:10:08 -07:00
chrislu a424bfa3ce docker compose 2025-09-12 22:08:00 -07:00
chrislu e21c89d062 fix tests 2025-09-12 22:04:18 -07:00
chrislu dbac0c45d8 Update broker_offset_manager.go
Fixed GetHighWaterMark() to use correct partition managers
Fixed GetPartitionOffsetInfo() with proper struct fields
Fixed GetOffsetMetrics() with correct types and system
2025-09-12 22:04:05 -07:00
chrislu 7d9029f647 Update s3tests.yml 2025-09-12 22:00:16 -07:00
chrislu 76ddaa8b84 Update go.mod 2025-09-12 21:43:20 -07:00
chrislu fd235505f5 fmt 2025-09-12 21:34:18 -07:00
chrislu e41c31c88e Fix all critical test errors
- Fix gateway tests: Replace AgentAddress with Masters in Options struct
- Fix consumer test: Correct GenerateMemberID test to expect deterministic behavior
- Fix schema tests: Remove incorrect error assertions for mock broker scenarios
- All core offset management and protocol tests now pass
- Gateway, consumer, protocol, and offset packages compile and test successfully
2025-09-12 21:33:46 -07:00
chrislu 8de1ce5497 Fix compilation errors in integration modules
- Fix NewPersistentLedger calls (returns 1 value, not 2)
- Fix GetStats calls (returns 3 values, not 4)
- Remove error handling for NewPersistentLedger since it doesn't return errors
- All Kafka integration modules now compile successfully
2025-09-12 21:30:14 -07:00
chrislu cd2264ffc7 Update persistence.go 2025-09-12 21:23:04 -07:00
chrislu b5eb16a1a1 Phase 4: Clean up old SMQIntegratedStorage and fix compilation
- Remove old SMQIntegratedStorage implementation from persistence.go
- Update all integration modules to use SMQOffsetStorage instead
- Add delegation methods to PersistentLedger for backward compatibility
- Fix method signatures and compilation errors
- Maintain support for legacy offset operations through SeaweedMQStorage
2025-09-12 21:03:46 -07:00
chrislu 56ba8ce219 Phase 3: Add comprehensive integration tests
- Add end-to-end flow tests for Kafka OffsetCommit to SMQ storage
- Test multiple consumer groups with independent offset tracking
- Validate SMQ file path and format compatibility
- Test error handling and edge cases (negative, zero, max offsets)
- Verify offset encoding/decoding matches SMQ broker format
- Ensure consumer group isolation and proper key generation
2025-09-12 21:00:30 -07:00
chrislu ac436eac94 Phase 2: Wire OffsetCommit/OffsetFetch to SMQ storage
- Update Kafka protocol handler to use SMQOffsetStorage for consumer offsets
- Modify OffsetCommit to save consumer offsets using SMQ's filer format
- Modify OffsetFetch to read consumer offsets from SMQ's filer location
- Add proper ConsumerOffsetKey creation with consumer group and instance ID
- Maintain backward compatibility with in-memory storage fallback
- Include comprehensive test coverage for offset handler integration
2025-09-12 20:58:43 -07:00
chrislu c7b483442d Phase 1: Implement SMQ-compatible offset storage
- Add SMQOffsetStorage that uses same filer locations and format as SMQ brokers
- Store offsets in <topic-dir>/<partition-dir>/<consumerGroup>.offset files
- Use 8-byte big-endian format matching SMQ broker implementation
- Include comprehensive test coverage for core functionality
- Maintain backward compatibility through legacy method support
2025-09-12 20:54:10 -07:00
chrislu e71c6d1e48 ringsize 2025-09-12 18:51:51 -07:00
chrislu 6eb1da41d4 fix issues 2025-09-12 18:44:29 -07:00
chrislu bd7b07e90c use broker client 2025-09-12 18:35:07 -07:00
chrislu 969ca60b6f change to connect to mq brokers instead of agents 2025-09-12 18:30:35 -07:00
chrislu b7514c4ab0 SeaweedMQ is Now the Only Mode 2025-09-12 18:17:50 -07:00
chrislu 09568a6f4f real data from SeaweedMQ instead of stub/placeholder data 2025-09-12 18:12:33 -07:00
chrislu 5c17bba00b ring size MaxPartitionCount 2025-09-12 17:59:56 -07:00
chrislu d9d099744d use customer request values 2025-09-12 17:56:48 -07:00
chrislu cd6a55533a fmt 2025-09-12 17:56:34 -07:00