From ec17d089256217efe36e4f64a74d2cc67b4a835b Mon Sep 17 00:00:00 2001 From: Matee Ullah Malik Date: Fri, 24 Oct 2025 17:07:37 +0500 Subject: [PATCH 1/2] Accept all req params in top sn query --- go.sum | 2 +- pkg/lumera/modules/action_msg/helpers.go | 2 +- pkg/lumera/modules/supernode/impl.go | 14 ++++++-------- pkg/lumera/modules/supernode/interface.go | 2 +- pkg/lumera/modules/supernode/supernode_mock.go | 8 ++++---- pkg/testutil/lumera.go | 2 +- pkg/utils/hasher_test.go | 1 - sdk/adapters/lumera/adapter.go | 5 ++++- supernode/adaptors/lumera.go | 4 +++- 9 files changed, 21 insertions(+), 19 deletions(-) diff --git a/go.sum b/go.sum index a767ff1c..51e25901 100644 --- a/go.sum +++ b/go.sum @@ -76,7 +76,7 @@ github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.50 github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.50.0 h1:ig/FpDD2JofP/NExKQUbn7uOSZzJAQqogfqluZK4ed4= github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.50.0/go.mod h1:otE2jQekW/PqXk1Awf5lmfokJx4uwuqcj1ab5SpGeW0= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/LumeraProtocol/lumera v1.8.0 h1:0t5/6qOSs9wKti7utPAWo9Jq8wk2X+L/eEaH8flk/Hc= +github.com/LumeraProtocol/lumera v1.8.0 h1:uE7mrK2/F6naY6Y09+D1DP9n1/EVkE3IS8w0dzCMESY= github.com/LumeraProtocol/lumera v1.8.0/go.mod h1:38uAZxxleZyXaWKbqOQKwjw7CSX92lTxdF+B7c4SRPw= github.com/LumeraProtocol/rq-go v0.2.1 h1:8B3UzRChLsGMmvZ+UVbJsJj6JZzL9P9iYxbdUwGsQI4= github.com/LumeraProtocol/rq-go v0.2.1/go.mod h1:APnKCZRh1Es2Vtrd2w4kCLgAyaL5Bqrkz/BURoRJ+O8= diff --git a/pkg/lumera/modules/action_msg/helpers.go b/pkg/lumera/modules/action_msg/helpers.go index 2ecc4a04..a1fb7e71 100644 --- a/pkg/lumera/modules/action_msg/helpers.go +++ b/pkg/lumera/modules/action_msg/helpers.go @@ -1,10 +1,10 @@ package action_msg import ( + "encoding/json" "fmt" "strconv" "time" - "encoding/json" actiontypes "github.com/LumeraProtocol/lumera/x/action/v1/types" "github.com/LumeraProtocol/supernode/v2/pkg/lumera/util" diff --git a/pkg/lumera/modules/supernode/impl.go b/pkg/lumera/modules/supernode/impl.go index c4a90776..93e2d7e0 100644 --- a/pkg/lumera/modules/supernode/impl.go +++ b/pkg/lumera/modules/supernode/impl.go @@ -26,14 +26,12 @@ func newModule(conn *grpc.ClientConn) (Module, error) { }, nil } -// GetTopSuperNodesForBlock gets the top supernodes for a specific block height -func (m *module) GetTopSuperNodesForBlock(ctx context.Context, blockHeight uint64) (*types.QueryGetTopSuperNodesForBlockResponse, error) { - resp, err := m.client.GetTopSuperNodesForBlock(ctx, &types.QueryGetTopSuperNodesForBlockRequest{ - BlockHeight: int32(blockHeight), - // Commeting the req params is intentional, it matches chain behaviour, at the moment in top 10 verification. - // State: types.SuperNodeStateActive.String(), - // Limit: 10, - }) +// GetTopSuperNodesForBlock gets the top supernodes for a specific request +func (m *module) GetTopSuperNodesForBlock(ctx context.Context, req *types.QueryGetTopSuperNodesForBlockRequest) (*types.QueryGetTopSuperNodesForBlockResponse, error) { + if req == nil { + return nil, fmt.Errorf("request cannot be nil") + } + resp, err := m.client.GetTopSuperNodesForBlock(ctx, req) if err != nil { return nil, fmt.Errorf("failed to get top supernodes: %w", err) } diff --git a/pkg/lumera/modules/supernode/interface.go b/pkg/lumera/modules/supernode/interface.go index 0b3ed7d8..2dc70a29 100644 --- a/pkg/lumera/modules/supernode/interface.go +++ b/pkg/lumera/modules/supernode/interface.go @@ -19,7 +19,7 @@ type SuperNodeInfo struct { // Module defines the interface for interacting with the supernode module type Module interface { - GetTopSuperNodesForBlock(ctx context.Context, blockHeight uint64) (*types.QueryGetTopSuperNodesForBlockResponse, error) + GetTopSuperNodesForBlock(ctx context.Context, req *types.QueryGetTopSuperNodesForBlockRequest) (*types.QueryGetTopSuperNodesForBlockResponse, error) GetSuperNode(ctx context.Context, address string) (*types.QueryGetSuperNodeResponse, error) GetSupernodeBySupernodeAddress(ctx context.Context, address string) (*types.SuperNode, error) GetSupernodeWithLatestAddress(ctx context.Context, address string) (*SuperNodeInfo, error) diff --git a/pkg/lumera/modules/supernode/supernode_mock.go b/pkg/lumera/modules/supernode/supernode_mock.go index a4247cba..9a0899de 100644 --- a/pkg/lumera/modules/supernode/supernode_mock.go +++ b/pkg/lumera/modules/supernode/supernode_mock.go @@ -102,16 +102,16 @@ func (mr *MockModuleMockRecorder) GetSupernodeWithLatestAddress(ctx, address any } // GetTopSuperNodesForBlock mocks base method. -func (m *MockModule) GetTopSuperNodesForBlock(ctx context.Context, blockHeight uint64) (*types.QueryGetTopSuperNodesForBlockResponse, error) { +func (m *MockModule) GetTopSuperNodesForBlock(ctx context.Context, req *types.QueryGetTopSuperNodesForBlockRequest) (*types.QueryGetTopSuperNodesForBlockResponse, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetTopSuperNodesForBlock", ctx, blockHeight) + ret := m.ctrl.Call(m, "GetTopSuperNodesForBlock", ctx, req) ret0, _ := ret[0].(*types.QueryGetTopSuperNodesForBlockResponse) ret1, _ := ret[1].(error) return ret0, ret1 } // GetTopSuperNodesForBlock indicates an expected call of GetTopSuperNodesForBlock. -func (mr *MockModuleMockRecorder) GetTopSuperNodesForBlock(ctx, blockHeight any) *gomock.Call { +func (mr *MockModuleMockRecorder) GetTopSuperNodesForBlock(ctx, req any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTopSuperNodesForBlock", reflect.TypeOf((*MockModule)(nil).GetTopSuperNodesForBlock), ctx, blockHeight) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTopSuperNodesForBlock", reflect.TypeOf((*MockModule)(nil).GetTopSuperNodesForBlock), ctx, req) } diff --git a/pkg/testutil/lumera.go b/pkg/testutil/lumera.go index a4d09814..20596b85 100644 --- a/pkg/testutil/lumera.go +++ b/pkg/testutil/lumera.go @@ -165,7 +165,7 @@ type MockSupernodeModule struct { addresses []string } -func (m *MockSupernodeModule) GetTopSuperNodesForBlock(ctx context.Context, blockHeight uint64) (*supernodeTypes.QueryGetTopSuperNodesForBlockResponse, error) { +func (m *MockSupernodeModule) GetTopSuperNodesForBlock(ctx context.Context, req *supernodeTypes.QueryGetTopSuperNodesForBlockRequest) (*supernodeTypes.QueryGetTopSuperNodesForBlockResponse, error) { return &supernodeTypes.QueryGetTopSuperNodesForBlockResponse{}, nil } diff --git a/pkg/utils/hasher_test.go b/pkg/utils/hasher_test.go index 5a5de251..e6f8448c 100644 --- a/pkg/utils/hasher_test.go +++ b/pkg/utils/hasher_test.go @@ -249,4 +249,3 @@ func TestHashReaderBLAKE3ReadError(t *testing.T) { t.Fatalf("expected read error to propagate, got %v", err) } } - diff --git a/sdk/adapters/lumera/adapter.go b/sdk/adapters/lumera/adapter.go index 3e21627c..0317e16f 100644 --- a/sdk/adapters/lumera/adapter.go +++ b/sdk/adapters/lumera/adapter.go @@ -287,7 +287,10 @@ func (a *Adapter) GetSupernodes(ctx context.Context, height int64) ([]Supernode, } blockHeight = uint64(height) - resp, err := a.client.SuperNode().GetTopSuperNodesForBlock(ctx, blockHeight) + resp, err := a.client.SuperNode().GetTopSuperNodesForBlock(ctx, &sntypes.QueryGetTopSuperNodesForBlockRequest{ + BlockHeight: int32(blockHeight), + //TODO : Update after hotfix on chain + }) if err != nil { a.logger.Error(ctx, "Failed to get supernodes", "height", height, "error", err) return nil, fmt.Errorf("failed to get supernodes: %w", err) diff --git a/supernode/adaptors/lumera.go b/supernode/adaptors/lumera.go index 958e7701..bf92f95b 100644 --- a/supernode/adaptors/lumera.go +++ b/supernode/adaptors/lumera.go @@ -27,7 +27,9 @@ func (l *lumeraImpl) GetAction(ctx context.Context, actionID string) (*actiontyp } func (l *lumeraImpl) GetTopSupernodes(ctx context.Context, blockHeight uint64) (*sntypes.QueryGetTopSuperNodesForBlockResponse, error) { - return l.c.SuperNode().GetTopSuperNodesForBlock(ctx, blockHeight) + return l.c.SuperNode().GetTopSuperNodesForBlock(ctx, &sntypes.QueryGetTopSuperNodesForBlockRequest{ + BlockHeight: int32(blockHeight), + }) } func (l *lumeraImpl) Verify(ctx context.Context, address string, msg []byte, sig []byte) error { From cce02f73e50181cfc7beae86ddcb276a5b53147c Mon Sep 17 00:00:00 2001 From: Matee Ullah Malik Date: Fri, 24 Oct 2025 18:13:44 +0500 Subject: [PATCH 2/2] fix: github CI error after retaggin lumera v1.8.0 --- .github/actions/setup-env/action.yml | 18 +++++++++++++++++- .github/workflows/build&release.yml | 4 ++++ .github/workflows/tests.yml | 18 +++++++++++++++--- 3 files changed, 36 insertions(+), 4 deletions(-) diff --git a/.github/actions/setup-env/action.yml b/.github/actions/setup-env/action.yml index 1b44339d..8ed19f6c 100644 --- a/.github/actions/setup-env/action.yml +++ b/.github/actions/setup-env/action.yml @@ -1,7 +1,11 @@ name: Setup Environment description: Sets up Go (dynamically from go.mod) and installs system dependencies -inputs: {} +inputs: + bust_lumera_retag: + description: "One-time: remove lumera v1.8.0 sums after retag" + required: false + default: 'false' outputs: go-version: description: "Go version parsed from go.mod" @@ -29,6 +33,18 @@ runs: sudo apt-get update sudo apt-get install -y libwebp-dev make + - name: One-time reset retagged lumera checksums + if: ${{ inputs.bust_lumera_retag == 'true' }} + shell: bash + run: | + echo "Busting go.sum entries for github.com/LumeraProtocol/lumera v1.8.0 (one-time)" + # Remove stale checksums in all local modules + find . -name 'go.sum' -maxdepth 3 -print0 | xargs -0 -I{} sed -i \ + '/github.com\/LumeraProtocol\/lumera v1.8.0/d' {} + # Clear module/build caches to avoid cached zips + go clean -modcache || true + rm -rf "$(go env GOCACHE)" || true + - name: Set Go Private Modules shell: bash run: | diff --git a/.github/workflows/build&release.yml b/.github/workflows/build&release.yml index b6f286cc..0416c958 100644 --- a/.github/workflows/build&release.yml +++ b/.github/workflows/build&release.yml @@ -27,6 +27,8 @@ jobs: - name: Setup Go and dependencies uses: ./.github/actions/setup-env + with: + bust_lumera_retag: 'true' - name: Build binaries run: | @@ -72,6 +74,8 @@ jobs: - name: Setup Go and dependencies uses: ./.github/actions/setup-env + with: + bust_lumera_retag: 'true' - name: Prepare Release Variables id: vars diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 35081f81..c8b03728 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -16,7 +16,9 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - name: Setup Go and system deps - uses: ./.github/actions/setup-env + uses: ./.github/actions/setup-env + with: + bust_lumera_retag: 'true' - name: Go mod tidy run: go mod tidy @@ -32,7 +34,12 @@ jobs: uses: actions/checkout@v4 - name: Setup Go and system deps - uses: ./.github/actions/setup-env + uses: ./.github/actions/setup-env + with: + bust_lumera_retag: 'true' + + - name: Go mod tidy + run: go mod tidy - name: Run integration tests run: go test -v ./tests/integration/... @@ -46,7 +53,12 @@ jobs: uses: actions/checkout@v4 - name: Setup Go and system deps - uses: ./.github/actions/setup-env + uses: ./.github/actions/setup-env + with: + bust_lumera_retag: 'true' + + - name: Go mod tidy + run: go mod tidy - name: Install Lumera