osmosis-labs / cosmos-sdk

:chains: A Framework for Building High Value Public Blockchains :sparkles:
https://cosmos.network/
Apache License 2.0
14 stars 31 forks source link

Using old sorting function signature #555

Open raserhin opened 4 months ago

raserhin commented 4 months ago

Summary of Bug

In line https://github.com/osmosis-labs/cosmos-sdk/blob/10406e3b6d6ed3632d66847a08e8480c4e81015a/runtime/services/reflection.go#L60 I could find the use of SortFunc

This slices sorting was introduced from the experimental package (the one you are using) to the std library, on doing so they decided to change the actual signature of the function from func(a, b E) bool to func(a, b E) int, you can check the PR

Now this break the SDK for my build process using Go version 1.21 (also tried 1.20)

Maybe I may be doing something wrong but I see this as possible point of failure in the future

Version

v0.47.5

Steps to Reproduce

I created a small snippet, to try to query a pool:

package osmosis_client

import (
    "context"
    "fmt"

    "github.com/cosmos/cosmos-sdk/codec"
    poolmanager "github.com/osmosis-labs/osmosis/v23/x/poolmanager/client/queryproto"
    "google.golang.org/grpc"
)

func QueryPool() error {
    // Create a connection to the gRPC server.
    grpcConn, err := grpc.Dial(
        "grpc.osmosis.zone:9090",
        grpc.WithInsecure(),
        grpc.WithDefaultCallOptions(grpc.ForceCodec(codec.NewProtoCodec(nil).GRPCCodec())),
    )
    if err != nil {
        return err
    }
    defer grpcConn.Close()

    querier := poolmanager.NewQueryClient(grpcConn)
    resp, err := querier.Pool(context.Background(), &poolmanager.PoolRequest{PoolId: 1})
    if err != nil {
        fmt.Errorf("Error retrieving pool: %s", err)
    }
    fmt.Println(resp)
    return nil
}

This break giving the following error:

# github.com/cosmos/cosmos-sdk/runtime/services
../../go/pkg/mod/github.com/osmosis-labs/cosmos-sdk@v0.47.5-v23-osmo-2-iavl-v1/runtime/services/reflection.go:60:28: type func(x *descriptorpb.FileDescriptorProto, y *descriptorpb.FileDescriptorProto) bool of func(x, y *descriptorpb.FileDescriptorProto) bool {…} does not match inferred type func(a *descriptorpb.FileDescriptorProto, b *descriptorpb.FileDescriptorProto) int for func(a E, b E) int

my go.mod after go mod tidy

 module github.com/raserhin/test

go 1.20

require (
    github.com/cosmos/cosmos-sdk v0.50.4
    google.golang.org/grpc v1.62.0
)

require (
    cosmossdk.io/api v0.3.1 // indirect
    cosmossdk.io/core v0.10.0 // indirect
    cosmossdk.io/depinject v1.0.0-alpha.4 // indirect
    cosmossdk.io/errors v1.0.1 // indirect
    cosmossdk.io/log v1.3.1 // indirect
    cosmossdk.io/math v1.3.0 // indirect
    cosmossdk.io/tools/rosetta v0.2.1 // indirect
    filippo.io/edwards25519 v1.0.0 // indirect
    github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect
    github.com/99designs/keyring v1.2.1 // indirect
    github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect
    github.com/CosmWasm/wasmvm v1.5.2 // indirect
    github.com/DataDog/zstd v1.5.5 // indirect
    github.com/antihax/optional v1.0.0 // indirect
    github.com/armon/go-metrics v0.4.1 // indirect
    github.com/beorn7/perks v1.0.1 // indirect
    github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect
    github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect
    github.com/cenkalti/backoff/v4 v4.2.1 // indirect
    github.com/cespare/xxhash v1.1.0 // indirect
    github.com/cespare/xxhash/v2 v2.2.0 // indirect
    github.com/chzyer/readline v1.5.1 // indirect
    github.com/cockroachdb/errors v1.11.1 // indirect
    github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect
    github.com/cockroachdb/pebble v1.1.0 // indirect
    github.com/cockroachdb/redact v1.1.5 // indirect
    github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect
    github.com/coinbase/rosetta-sdk-go/types v1.0.0 // indirect
    github.com/cometbft/cometbft v0.38.0 // indirect
    github.com/cometbft/cometbft-db v0.10.0 // indirect
    github.com/confio/ics23/go v0.9.1 // indirect
    github.com/cosmos/btcutil v1.0.5 // indirect
    github.com/cosmos/cosmos-db v1.0.0 // indirect
    github.com/cosmos/cosmos-proto v1.0.0-beta.4 // indirect
    github.com/cosmos/go-bip39 v1.0.0 // indirect
    github.com/cosmos/gogogateway v1.2.0 // indirect
    github.com/cosmos/gogoproto v1.4.11 // indirect
    github.com/cosmos/iavl v1.0.2-0.20240221171955-e019f7411ec7 // indirect
    github.com/cosmos/ibc-go/v7 v7.3.2 // indirect
    github.com/cosmos/ics23/go v0.10.0 // indirect
    github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect
    github.com/cosmos/rosetta-sdk-go v0.10.0 // indirect
    github.com/creachadair/taskgroup v0.4.2 // indirect
    github.com/danieljoos/wincred v1.1.2 // indirect
    github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
    github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect
    github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect
    github.com/dgraph-io/badger/v2 v2.2007.4 // indirect
    github.com/dgraph-io/ristretto v0.1.1 // indirect
    github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect
    github.com/dustin/go-humanize v1.0.1 // indirect
    github.com/dvsekhvalnov/jose2go v1.6.0 // indirect
    github.com/emicklei/dot v1.6.1 // indirect
    github.com/felixge/httpsnoop v1.0.2 // indirect
    github.com/fsnotify/fsnotify v1.7.0 // indirect
    github.com/getsentry/sentry-go v0.27.0 // indirect
    github.com/go-kit/kit v0.12.0 // indirect
    github.com/go-kit/log v0.2.1 // indirect
    github.com/go-logfmt/logfmt v0.6.0 // indirect
    github.com/go-playground/locales v0.14.1 // indirect
    github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect
    github.com/gogo/googleapis v1.4.1 // indirect
    github.com/gogo/protobuf v1.3.3 // indirect
    github.com/golang/glog v1.2.0 // indirect
    github.com/golang/mock v1.6.0 // indirect
    github.com/golang/protobuf v1.5.3 // indirect
    github.com/golang/snappy v0.0.4 // indirect
    github.com/google/btree v1.1.2 // indirect
    github.com/google/go-cmp v0.6.0 // indirect
    github.com/google/orderedcode v0.0.1 // indirect
    github.com/gorilla/handlers v1.5.1 // indirect
    github.com/gorilla/mux v1.8.1 // indirect
    github.com/gorilla/websocket v1.5.0 // indirect
    github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect
    github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect
    github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect
    github.com/gtank/merlin v0.1.1 // indirect
    github.com/gtank/ristretto255 v0.1.2 // indirect
    github.com/hashicorp/go-immutable-radix v1.3.1 // indirect
    github.com/hashicorp/golang-lru v1.0.2 // indirect
    github.com/hashicorp/hcl v1.0.0 // indirect
    github.com/hdevalence/ed25519consensus v0.1.0 // indirect
    github.com/huandu/skiplist v1.2.0 // indirect
    github.com/improbable-eng/grpc-web v0.15.0 // indirect
    github.com/inconshreveable/mousetrap v1.1.0 // indirect
    github.com/jmhodges/levigo v1.0.0 // indirect
    github.com/klauspost/compress v1.17.6 // indirect
    github.com/kr/pretty v0.3.1 // indirect
    github.com/kr/text v0.2.0 // indirect
    github.com/lib/pq v1.10.9 // indirect
    github.com/libp2p/go-buffer-pool v0.1.0 // indirect
    github.com/linxGnu/grocksdb v1.8.12 // indirect
    github.com/magiconair/properties v1.8.7 // indirect
    github.com/manifoldco/promptui v0.9.0 // indirect
    github.com/mattn/go-colorable v0.1.13 // indirect
    github.com/mattn/go-isatty v0.0.20 // indirect
    github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect
    github.com/minio/highwayhash v1.0.2 // indirect
    github.com/mitchellh/mapstructure v1.5.0 // indirect
    github.com/mtibben/percent v0.2.1 // indirect
    github.com/osmosis-labs/osmosis/osmomath v0.0.9-0.20240222171503-685566578734 // indirect
    github.com/osmosis-labs/osmosis/osmoutils v0.0.9-0.20240222004208-b602d1901059 // indirect
    github.com/osmosis-labs/osmosis/v23 v23.0.3
    github.com/pelletier/go-toml/v2 v2.1.0 // indirect
    github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc // indirect
    github.com/pkg/errors v0.9.1 // indirect
    github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
    github.com/prometheus/client_golang v1.18.0 // indirect
    github.com/prometheus/client_model v0.6.0 // indirect
    github.com/prometheus/common v0.47.0 // indirect
    github.com/prometheus/procfs v0.12.0 // indirect
    github.com/rakyll/statik v0.1.7 // indirect
    github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
    github.com/rogpeppe/go-internal v1.12.0 // indirect
    github.com/rs/cors v1.9.0 // indirect
    github.com/rs/zerolog v1.32.0 // indirect
    github.com/sagikazarmark/locafero v0.4.0 // indirect
    github.com/sagikazarmark/slog-shim v0.1.0 // indirect
    github.com/sasha-s/go-deadlock v0.3.1 // indirect
    github.com/sourcegraph/conc v0.3.0 // indirect
    github.com/spf13/afero v1.11.0 // indirect
    github.com/spf13/cast v1.6.0 // indirect
    github.com/spf13/cobra v1.8.0 // indirect
    github.com/spf13/pflag v1.0.5 // indirect
    github.com/spf13/viper v1.18.2 // indirect
    github.com/stretchr/testify v1.8.4 // indirect
    github.com/subosito/gotenv v1.6.0 // indirect
    github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect
    github.com/tendermint/go-amino v0.16.0 // indirect
    github.com/tidwall/btree v1.7.0 // indirect
    github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
    github.com/zondax/hid v0.9.2 // indirect
    github.com/zondax/ledger-go v0.14.3 // indirect
    go.etcd.io/bbolt v1.3.8 // indirect
    go.uber.org/multierr v1.11.0 // indirect
    golang.org/x/crypto v0.19.0 // indirect
    golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect
    golang.org/x/net v0.20.0 // indirect
    golang.org/x/sync v0.6.0 // indirect
    golang.org/x/sys v0.17.0 // indirect
    golang.org/x/term v0.17.0 // indirect
    golang.org/x/text v0.14.0 // indirect
    google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect
    google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 // indirect
    google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect
    google.golang.org/protobuf v1.31.0 // indirect
    gopkg.in/ini.v1 v1.67.0 // indirect
    gopkg.in/yaml.v3 v3.0.1 // indirect
    nhooyr.io/websocket v1.8.7 // indirect
    pgregory.net/rapid v1.1.0 // indirect
    sigs.k8s.io/yaml v1.4.0 // indirect
)

replace (
    github.com/CosmWasm/wasmd => github.com/osmosis-labs/wasmd v0.45.0-osmo
    github.com/cometbft/cometbft => github.com/osmosis-labs/cometbft v0.37.4-v23-osmo-2
    github.com/cosmos/cosmos-sdk => github.com/osmosis-labs/cosmos-sdk v0.47.5-v23-osmo-2-iavl-v1
    github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1
)

exclude github.com/coinbase/rosetta-sdk-go v0.7.9

exclude github.com/cosmos/cosmos-sdk v0.50.1

exclude cosmossdk.io/api v0.7.0

exclude github.com/cometbft/cometbft v0.38.5

exclude google.golang.org/protobuf v1.32.0