This is an automated email from the ASF dual-hosted git repository. hanahmily pushed a commit to branch sidx/interface in repository https://gitbox.apache.org/repos/asf/skywalking-banyandb.git
commit fb39bf2acd6e6da66fd336479d609fbfeeebc9e0 Author: Gao Hongtao <hanahm...@gmail.com> AuthorDate: Tue Aug 19 10:08:19 2025 +0700 Refactor error handling and context usage in SIDX examples --- banyand/internal/sidx/interfaces.go | 3 ++- banyand/internal/sidx/interfaces_examples.go | 18 +++++++++--------- banyand/internal/sidx/interfaces_examples_test.go | 4 ++-- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/banyand/internal/sidx/interfaces.go b/banyand/internal/sidx/interfaces.go index 59831ab7..cd68c3db 100644 --- a/banyand/internal/sidx/interfaces.go +++ b/banyand/internal/sidx/interfaces.go @@ -498,9 +498,10 @@ func (qr *QueryRequest) CopyFrom(other *QueryRequest) { // }, // } +//nolint:godot // Interface Design Principles. // -// 1. **Single Responsibility**: Each interface has a focused, well-defined purpose +// 1. **Single Responsibility**: Each interface has a focused, well-defined purpose. // 2. **Minimal Surface Area**: Interfaces expose only essential methods // 3. **Composability**: Interfaces can be combined to create larger systems // 4. **Testability**: Small interfaces are easy to mock and test diff --git a/banyand/internal/sidx/interfaces_examples.go b/banyand/internal/sidx/interfaces_examples.go index fbeaebec..d14ba4f6 100644 --- a/banyand/internal/sidx/interfaces_examples.go +++ b/banyand/internal/sidx/interfaces_examples.go @@ -184,14 +184,14 @@ func (e *InterfaceUsageExamples) FlushAndMergeExample(ctx context.Context) error stats.MemoryUsageBytes, stats.DiskUsageBytes, stats.PartCount) // Trigger flush to persist memory parts - if err := e.sidx.Flush(); err != nil { - return fmt.Errorf("flush operation failed: %w", err) + if flushErr := e.sidx.Flush(); flushErr != nil { + return fmt.Errorf("flush operation failed: %w", flushErr) } log.Println("Flush completed successfully") // Trigger merge to compact parts - if err := e.sidx.Merge(); err != nil { - return fmt.Errorf("merge operation failed: %w", err) + if mergeErr := e.sidx.Merge(); mergeErr != nil { + return fmt.Errorf("merge operation failed: %w", mergeErr) } log.Println("Merge completed successfully") @@ -384,7 +384,7 @@ func int64ToBytes(val int64) []byte { // In production, this would be replaced with the actual SIDX implementation. type mockSIDX struct{} -func (m *mockSIDX) Write(ctx context.Context, reqs []WriteRequest) error { +func (m *mockSIDX) Write(_ context.Context, reqs []WriteRequest) error { if len(reqs) == 0 { return fmt.Errorf("empty write request") } @@ -396,7 +396,7 @@ func (m *mockSIDX) Write(ctx context.Context, reqs []WriteRequest) error { return nil } -func (m *mockSIDX) Query(ctx context.Context, req QueryRequest) (QueryResult, error) { +func (m *mockSIDX) Query(_ context.Context, req QueryRequest) (QueryResult, error) { if req.Name == "" { return nil, fmt.Errorf("query name cannot be empty") } @@ -406,7 +406,7 @@ func (m *mockSIDX) Query(ctx context.Context, req QueryRequest) (QueryResult, er return &mockQueryResult{}, nil } -func (m *mockSIDX) Stats(ctx context.Context) (Stats, error) { +func (m *mockSIDX) Stats(_ context.Context) (Stats, error) { return Stats{ MemoryUsageBytes: 1024 * 1024 * 100, // 100MB DiskUsageBytes: 1024 * 1024 * 500, // 500MB @@ -471,9 +471,9 @@ func (m *mockQueryResult) Release() { // The following section provides contract specifications for each interface // to guide testing and implementation verification. -// SIDXContract defines the behavioral contract for SIDX implementations. +// Contract defines the behavioral contract for SIDX implementations. // All SIDX implementations must satisfy these contracts. -type SIDXContract struct { +type Contract struct { // Write Contract: // - MUST accept batch writes with pre-sorted elements // - MUST validate WriteRequest fields (non-zero SeriesID, valid tags) diff --git a/banyand/internal/sidx/interfaces_examples_test.go b/banyand/internal/sidx/interfaces_examples_test.go index 4dd2ef81..cf5144da 100644 --- a/banyand/internal/sidx/interfaces_examples_test.go +++ b/banyand/internal/sidx/interfaces_examples_test.go @@ -48,7 +48,7 @@ func TestInterfaceUsageExamples(t *testing.T) { assert.NoError(t, err) }) - t.Run("ErrorHandlingExample", func(t *testing.T) { + t.Run("ErrorHandlingExample", func(_ *testing.T) { // This example doesn't return errors, just demonstrates error handling examples.ErrorHandlingExample(ctx) }) @@ -162,7 +162,7 @@ func TestMockQueryResult(t *testing.T) { assert.Nil(t, response) }) - t.Run("Release doesn't panic", func(t *testing.T) { + t.Run("Release doesn't panic", func(_ *testing.T) { // Should not panic result.Release() })