Skip to content

Conversation

@nicomwong
Copy link

@nicomwong nicomwong commented Sep 21, 2025

Remove Metadata field for 3.7 release.

Closes #19706

Maybe a new issue should be created since this entirely removes the Metadata field rather than only deprecating it.

Please read https://github.com/etcd-io/etcd/blob/main/CONTRIBUTING.md#contribution-flow.

make test-unit all pass
make test-integration some failing all pass
make test-e2e all pass

Remove Metadata field for 3.7 release.

Signed-off-by: Nico Wong <nicowong8@gmail.com>
@k8s-ci-robot
Copy link

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: nicomwong
Once this PR has been reviewed and has the lgtm label, please assign spzala for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot
Copy link

Hi @nicomwong. Thanks for your PR.

I'm waiting for a etcd-io member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@nicomwong
Copy link
Author

Some integration tests are failing after these changes.

Spoiler warning
PASSES="integration" ./scripts/test.sh
Running with --race
Starting at: Sun Sep 21 15:33:15 PDT 2025

'integration' started at Sun Sep 21 15:33:15 PDT 2025
% (cd tests && 'env' 'ETCD_VERIFY=all' 'go' 'test' './integration/...' '-timeout=15m' '--race' '-p=2')
ok      go.etcd.io/etcd/tests/v3/integration    (cached)
ok      go.etcd.io/etcd/tests/v3/integration/clientv3   (cached)
ok      go.etcd.io/etcd/tests/v3/integration/clientv3/concurrency       (cached)
ok      go.etcd.io/etcd/tests/v3/integration/clientv3/connectivity      (cached)
ok      go.etcd.io/etcd/tests/v3/integration/clientv3/examples  (cached)
ok      go.etcd.io/etcd/tests/v3/integration/clientv3/experimental/recipes      (cached)
ok      go.etcd.io/etcd/tests/v3/integration/clientv3/lease     (cached)
ok      go.etcd.io/etcd/tests/v3/integration/clientv3/naming    (cached)
ok      go.etcd.io/etcd/tests/v3/integration/clientv3/snapshot  (cached)
ok      go.etcd.io/etcd/tests/v3/integration/embed      (cached)
--- FAIL: TestClusterProxyMemberList (0.88s)
  cluster.go:536: Creating listener with addr: 127.0.0.1:21002387078
  cluster.go:536: Creating listener with addr: 127.0.0.1:21003387078
  logger.go:146: 2025-09-21T15:33:17.922-0700 INFO    m0      feature gates: {map[LeaseCheckpoint:false LeaseCheckpointPersist:false]}        {"member": "m0"}
  logger.go:146: 2025-09-21T15:33:17.923-0700 INFO    m0      LISTEN GRPC     {"member": "m0", "grpcAddr": "localhost:m0", "m.Name": "m0", "workdir": "/tmp/TestClusterProxyMemberList1581358429/001"}
  logger.go:146: 2025-09-21T15:33:17.923-0700 INFO    m0      LISTEN GRPC SUCCESS     {"member": "m0", "grpcAddr": "unix://localhost:m0", "m.Name": "m0", "workdir": "/tmp/TestClusterProxyMemberList1581358429/001", "port": "m0"}
  cluster.go:216: Launching new cluster...
  logger.go:146: 2025-09-21T15:33:17.923-0700 INFO    m0      launching a member      {"member": "m0", "name": "m0", "advertise-peer-urls": ["unix://127.0.0.1:21002387078"], "listen-client-urls": ["unix://127.0.0.1:21003387078"], "grpc-url": "unix://localhost:m0"}
  logger.go:146: 2025-09-21T15:33:17.923-0700 INFO    m0.bbolt        Opening db file (/tmp/TestClusterProxyMemberList1581358429/002/etcd2535352053/member/snap/db) with mode -rw------- and with options: {Timeout: 0s, NoGrowSync: false, NoFreelistSync: true, PreLoadFreelist: false, FreelistType: , ReadOnly: false, MmapFlags: 8000, InitialMmapSize: 10737418240, PageSize: 0, NoSync: false, OpenFile: 0x0, Mlock: false, Logger: 0xc000436718}      {"member": "m0"}
  logger.go:146: 2025-09-21T15:33:17.933-0700 INFO    m0.bbolt        Opening bbolt db (/tmp/TestClusterProxyMemberList1581358429/002/etcd2535352053/member/snap/db) successfully     {"member": "m0"}
  logger.go:146: 2025-09-21T15:33:17.934-0700 INFO    m0      opened backend db       {"member": "m0", "path": "/tmp/TestClusterProxyMemberList1581358429/002/etcd2535352053/member/snap/db", "took": "10.431851ms"}
  logger.go:146: 2025-09-21T15:33:17.934-0700 INFO    m0      restore consistentIndex {"member": "m0", "index": 0}
  logger.go:146: 2025-09-21T15:33:17.934-0700 INFO    m0      bootstrapping cluster   {"member": "m0"}
  logger.go:146: 2025-09-21T15:33:17.934-0700 INFO    m0      bootstrapping storage   {"member": "m0"}
  logger.go:146: 2025-09-21T15:33:17.939-0700 INFO    m0      bootstrapping raft      {"member": "m0"}
  logger.go:146: 2025-09-21T15:33:17.939-0700 INFO    m0      starting local member   {"member": "m0", "local-member-id": "871e4ccd169ac574", "cluster-id": "e3195b1a7b5a7e48"}
  logger.go:146: 2025-09-21T15:33:17.939-0700 INFO    m0      bootstrap successfully  {"member": "m0"}
  logger.go:146: 2025-09-21T15:33:17.939-0700 INFO    m0.raft 871e4ccd169ac574 switched to configuration voters=()    {"member": "m0"}
  logger.go:146: 2025-09-21T15:33:17.939-0700 INFO    m0.raft 871e4ccd169ac574 became follower at term 0      {"member": "m0"}
  logger.go:146: 2025-09-21T15:33:17.939-0700 INFO    m0.raft newRaft 871e4ccd169ac574 [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0] {"member": "m0"}
  logger.go:146: 2025-09-21T15:33:17.940-0700 INFO    m0.raft 871e4ccd169ac574 became follower at term 1      {"member": "m0"}
  logger.go:146: 2025-09-21T15:33:17.940-0700 INFO    m0.raft 871e4ccd169ac574 switched to configuration voters=(9736303888152839540) {"member": "m0"}
  logger.go:146: 2025-09-21T15:33:17.945-0700 WARN    m0      simple token is not cryptographically signed    {"member": "m0"}
  logger.go:146: 2025-09-21T15:33:17.948-0700 INFO    m0      kvstore restored        {"member": "m0", "current-rev": 1}
  logger.go:146: 2025-09-21T15:33:17.951-0700 INFO    m0      enabled backend quota with default value        {"member": "m0", "quota-name": "v3-applier", "quota-size-bytes": 2147483648, "quota-size": "2.1 GB"}
  logger.go:146: 2025-09-21T15:33:17.951-0700 INFO    m0      starting etcd server    {"member": "m0", "local-member-id": "871e4ccd169ac574", "local-server-version": "3.7.0-alpha.0", "cluster-version": "to_be_decided"}
  logger.go:146: 2025-09-21T15:33:17.952-0700 INFO    m0      started as single-node; fast-forwarding election ticks  {"member": "m0", "local-member-id": "871e4ccd169ac574", "forward-ticks": 9, "forward-duration": "90ms", "election-ticks": 10, "election-timeout": "100ms"}
  logger.go:146: 2025-09-21T15:33:17.952-0700 INFO    grpc    [[core] [Server #1]Server created]
  logger.go:146: 2025-09-21T15:33:17.952-0700 INFO    m0      grpc service status changed     {"member": "m0", "service": "", "status": "SERVING"}
  logger.go:146: 2025-09-21T15:33:17.952-0700 INFO    m0.raft 871e4ccd169ac574 switched to configuration voters=(9736303888152839540) {"member": "m0"}
  logger.go:146: 2025-09-21T15:33:17.952-0700 INFO    m0      added member    {"member": "m0", "cluster-id": "e3195b1a7b5a7e48", "local-member-id": "871e4ccd169ac574", "added-peer-id": "871e4ccd169ac574", "added-peer-peer-urls": ["unix://127.0.0.1:21002387078"], "added-peer-is-learner": false}
  logger.go:146: 2025-09-21T15:33:17.956-0700 INFO    grpc    [[core] [Server #1 ListenSocket #2]ListenSocket created]
  logger.go:146: 2025-09-21T15:33:17.957-0700 INFO    grpc    [[core] original dial target is: "etcd-endpoints://0xc000224400/localhost:m0"]
  logger.go:146: 2025-09-21T15:33:17.957-0700 INFO    grpc    [[core] [Channel #3]Channel created]
  logger.go:146: 2025-09-21T15:33:17.957-0700 INFO    grpc    [[core] [Channel #3]parsed dial target is: resolver.Target{URL:url.URL{Scheme:"etcd-endpoints", Opaque:"", User:(*url.Userinfo)(nil), Host:"0xc000224400", Path:"/localhost:m0", RawPath:"", OmitHost:false, ForceQuery:false, RawQuery:"", Fragment:"", RawFragment:""}}]
  logger.go:146: 2025-09-21T15:33:17.957-0700 INFO    grpc    [[core] [Channel #3]Channel authority set to "localhost:m0"]
  logger.go:146: 2025-09-21T15:33:17.958-0700 INFO    grpc    [[core] [Channel #3]Resolver state updated: {
        "Addresses": null,
        "Endpoints": [
          {
            "Addresses": [
              {
                "Addr": "unix:localhost:m0",
                "ServerName": "localhost:m0",
                "Attributes": null,
                "BalancerAttributes": null,
                "Metadata": null
              }
            ],
            "Attributes": null
          }
        ],
        "ServiceConfig": {
          "Config": {
            "Config": null,
            "Methods": {}
          },
          "Err": null
        },
        "Attributes": null
      } (service config updated)]
  logger.go:146: 2025-09-21T15:33:17.958-0700 INFO    grpc    [[core] [Channel #3]Channel switches to new LB policy "round_robin"]
  logger.go:146: 2025-09-21T15:33:17.958-0700 INFO    grpc    [[roundrobin] [0xc0006e6090] Created]
  logger.go:146: 2025-09-21T15:33:17.958-0700 INFO    grpc    [[pick-first-leaf-lb] [pick-first-leaf-lb 0xc0004dcc60] Received new config {
        "shuffleAddressList": false
      }, resolver state {
        "Addresses": null,
        "Endpoints": [
          {
            "Addresses": [
              {
                "Addr": "unix:localhost:m0",
                "ServerName": "localhost:m0",
                "Attributes": null,
                "BalancerAttributes": null,
                "Metadata": null
              }
            ],
            "Attributes": null
          }
        ],
        "ServiceConfig": null,
        "Attributes": {
          "\u003c%!p(pickfirstleaf.enableHealthListenerKeyType={})\u003e": "\u003c%!p(bool=true)\u003e"
        }
      }]
  logger.go:146: 2025-09-21T15:33:17.958-0700 INFO    grpc    [[core] [Channel #3 SubChannel #4]Subchannel created]
  logger.go:146: 2025-09-21T15:33:17.958-0700 INFO    grpc    [[core] [Channel #3]Channel Connectivity change to CONNECTING]
  logger.go:146: 2025-09-21T15:33:17.958-0700 INFO    grpc    [[core] [Channel #3 SubChannel #4]Subchannel Connectivity change to CONNECTING]
  logger.go:146: 2025-09-21T15:33:17.958-0700 INFO    grpc    [[core] [Channel #3 SubChannel #4]Subchannel picks a new address "unix:localhost:m0" to connect]
  logger.go:146: 2025-09-21T15:33:17.959-0700 INFO    grpc    [[core] [Channel #3]Channel exiting idle mode]
  logger.go:146: 2025-09-21T15:33:17.959-0700 INFO    grpc    [[core] [Channel #3 SubChannel #4]Subchannel Connectivity change to READY]
  logger.go:146: 2025-09-21T15:33:17.959-0700 INFO    grpc    [[pick-first-leaf-lb] [pick-first-leaf-lb 0xc0004dcc60] SubConn 0xc00020ed70 reported connectivity state READY. Registering health listener.]
  logger.go:146: 2025-09-21T15:33:17.959-0700 INFO    grpc    [[core] [Channel #3]Channel Connectivity change to READY]
  logger.go:146: 2025-09-21T15:33:17.959-0700 INFO    m0      launched a member       {"member": "m0", "name": "m0", "advertise-peer-urls": ["unix://127.0.0.1:21002387078"], "listen-client-urls": ["unix://127.0.0.1:21003387078"], "grpc-url": "unix://localhost:m0"}
  logger.go:146: 2025-09-21T15:33:18.041-0700 INFO    m0.raft 871e4ccd169ac574 is starting a new election at term 1   {"member": "m0"}
  logger.go:146: 2025-09-21T15:33:18.041-0700 INFO    m0.raft 871e4ccd169ac574 became pre-candidate at term 1 {"member": "m0"}
  logger.go:146: 2025-09-21T15:33:18.041-0700 INFO    m0.raft 871e4ccd169ac574 received MsgPreVoteResp from 871e4ccd169ac574 at term 1        {"member": "m0"}
  logger.go:146: 2025-09-21T15:33:18.041-0700 INFO    m0.raft 871e4ccd169ac574 has received 1 MsgPreVoteResp votes and 0 vote rejections      {"member": "m0"}
  logger.go:146: 2025-09-21T15:33:18.041-0700 INFO    m0.raft 871e4ccd169ac574 became candidate at term 2     {"member": "m0"}
  logger.go:146: 2025-09-21T15:33:18.042-0700 INFO    m0.raft 871e4ccd169ac574 received MsgVoteResp from 871e4ccd169ac574 at term 2   {"member": "m0"}
  logger.go:146: 2025-09-21T15:33:18.042-0700 INFO    m0.raft 871e4ccd169ac574 has received 1 MsgVoteResp votes and 0 vote rejections {"member": "m0"}
  logger.go:146: 2025-09-21T15:33:18.042-0700 INFO    m0.raft 871e4ccd169ac574 became leader at term 2        {"member": "m0"}
  logger.go:146: 2025-09-21T15:33:18.042-0700 INFO    m0.raft raft.node: 871e4ccd169ac574 elected leader 871e4ccd169ac574 at term 2   {"member": "m0"}
  logger.go:146: 2025-09-21T15:33:18.044-0700 INFO    m0      setting up initial cluster version using v3 API {"member": "m0", "cluster-version": "3.7"}
  logger.go:146: 2025-09-21T15:33:18.045-0700 INFO    m0      published local member to cluster through raft  {"member": "m0", "local-member-id": "871e4ccd169ac574", "local-member-attributes": "{Name:m0 ClientURLs:[unix://127.0.0.1:21003387078]}", "cluster-id": "e3195b1a7b5a7e48", "publish-timeout": "5.2s"}
  logger.go:146: 2025-09-21T15:33:18.046-0700 INFO    m0      set initial cluster version     {"member": "m0", "cluster-id": "e3195b1a7b5a7e48", "local-member-id": "871e4ccd169ac574", "cluster-version": "3.7"}
  logger.go:146: 2025-09-21T15:33:18.046-0700 INFO    m0      enabled capabilities for version        {"member": "m0", "cluster-version": "3.7"}
  cluster.go:235:  - m0 -> 871e4ccd169ac574 (unix://localhost:m0)
  logger.go:146: 2025-09-21T15:33:18.046-0700 INFO    m0      cluster version is updated      {"member": "m0", "cluster-version": "3.7"}
  logger.go:146: 2025-09-21T15:33:18.047-0700 INFO    grpc    [[core] original dial target is: "etcd-endpoints://0xc000224600/localhost:m0"]
  logger.go:146: 2025-09-21T15:33:18.046-0700 INFO    m0      cluster version differs from storage version.   {"member": "m0", "cluster-version": "3.7.0", "storage-version": "3.5.0"}
  logger.go:146: 2025-09-21T15:33:18.047-0700 INFO    grpc    [[core] [Channel #7]Channel created]
  logger.go:146: 2025-09-21T15:33:18.047-0700 INFO    m0      updated storage version {"member": "m0", "new-storage-version": "3.6.0"}
  logger.go:146: 2025-09-21T15:33:18.047-0700 INFO    m0      updated storage version {"member": "m0", "new-storage-version": "3.7.0"}
  logger.go:146: 2025-09-21T15:33:18.047-0700 INFO    grpc    [[core] [Channel #7]parsed dial target is: resolver.Target{URL:url.URL{Scheme:"etcd-endpoints", Opaque:"", User:(*url.Userinfo)(nil), Host:"0xc000224600", Path:"/localhost:m0", RawPath:"", OmitHost:false, ForceQuery:false, RawQuery:"", Fragment:"", RawFragment:""}}]
  logger.go:146: 2025-09-21T15:33:18.047-0700 INFO    grpc    [[core] [Channel #7]Channel authority set to "localhost:m0"]
  logger.go:146: 2025-09-21T15:33:18.047-0700 INFO    grpc    [[core] [Channel #7]Resolver state updated: {
        "Addresses": null,
        "Endpoints": [
          {
            "Addresses": [
              {
                "Addr": "unix:localhost:m0",
                "ServerName": "localhost:m0",
                "Attributes": null,
                "BalancerAttributes": null,
                "Metadata": null
              }
            ],
            "Attributes": null
          }
        ],
        "ServiceConfig": {
          "Config": {
            "Config": null,
            "Methods": {}
          },
          "Err": null
        },
        "Attributes": null
      } (service config updated)]
  logger.go:146: 2025-09-21T15:33:18.047-0700 INFO    grpc    [[core] [Channel #7]Channel switches to new LB policy "round_robin"]
  logger.go:146: 2025-09-21T15:33:18.048-0700 INFO    grpc    [[roundrobin] [0xc0001c1200] Created]
  logger.go:146: 2025-09-21T15:33:18.048-0700 INFO    grpc    [[pick-first-leaf-lb] [pick-first-leaf-lb 0xc0002c03f0] Received new config {
        "shuffleAddressList": false
      }, resolver state {
        "Addresses": null,
        "Endpoints": [
          {
            "Addresses": [
              {
                "Addr": "unix:localhost:m0",
                "ServerName": "localhost:m0",
                "Attributes": null,
                "BalancerAttributes": null,
                "Metadata": null
              }
            ],
            "Attributes": null
          }
        ],
        "ServiceConfig": null,
        "Attributes": {
          "\u003c%!p(pickfirstleaf.enableHealthListenerKeyType={})\u003e": "\u003c%!p(bool=true)\u003e"
        }
      }]
  logger.go:146: 2025-09-21T15:33:18.048-0700 INFO    grpc    [[core] [Channel #7 SubChannel #8]Subchannel created]
  logger.go:146: 2025-09-21T15:33:18.048-0700 INFO    grpc    [[core] [Channel #7]Channel Connectivity change to CONNECTING]
  logger.go:146: 2025-09-21T15:33:18.048-0700 INFO    grpc    [[core] [Channel #7 SubChannel #8]Subchannel Connectivity change to CONNECTING]
  logger.go:146: 2025-09-21T15:33:18.048-0700 INFO    grpc    [[core] [Channel #7 SubChannel #8]Subchannel picks a new address "unix:localhost:m0" to connect]
  logger.go:146: 2025-09-21T15:33:18.048-0700 INFO    grpc    [[core] [Channel #7]Channel exiting idle mode]
  logger.go:146: 2025-09-21T15:33:18.048-0700 INFO    grpc    [[core] [Channel #7 SubChannel #8]Subchannel Connectivity change to READY]
  logger.go:146: 2025-09-21T15:33:18.049-0700 INFO    grpc    [[pick-first-leaf-lb] [pick-first-leaf-lb 0xc0002c03f0] SubConn 0xc00028e690 reported connectivity state READY. Registering health listener.]
  logger.go:146: 2025-09-21T15:33:18.049-0700 INFO    grpc    [[core] [Channel #7]Channel Connectivity change to READY]
  logger.go:146: 2025-09-21T15:33:18.066-0700 INFO    grpc    [[core] [Server #11]Server created]
  logger.go:146: 2025-09-21T15:33:18.066-0700 DEBUG   client  retrying of unary invoker       {"target": "etcd-endpoints://0xc000224600/localhost:m0", "method": "/etcdserverpb.Lease/LeaseGrant", "attempt": 0}
  logger.go:146: 2025-09-21T15:33:18.066-0700 INFO    grpc    [[core] [Server #11 ListenSocket #12]ListenSocket created]
  logger.go:146: 2025-09-21T15:33:18.066-0700 DEBUG   client  retrying of unary invoker       {"target": "etcd-endpoints://0xc000224600/localhost:m0", "method": "/etcdserverpb.KV/Range", "attempt": 0}
  logger.go:146: 2025-09-21T15:33:18.069-0700 DEBUG   client  retrying of unary invoker       {"target": "etcd-endpoints://0xc000224600/localhost:m0", "method": "/etcdserverpb.KV/Txn", "attempt": 0}
  logger.go:146: 2025-09-21T15:33:18.071-0700 INFO    registered session with lease   {"addr": "127.0.0.1:45653", "lease-ttl": 7}
  logger.go:146: 2025-09-21T15:33:18.566-0700 INFO    grpc    [[core] original dial target is: "etcd-endpoints://0xc0003f2000/127.0.0.1:45653"]
  logger.go:146: 2025-09-21T15:33:18.566-0700 INFO    grpc    [[core] [Channel #13]Channel created]
  logger.go:146: 2025-09-21T15:33:18.566-0700 INFO    grpc    [[core] [Channel #13]parsed dial target is: resolver.Target{URL:url.URL{Scheme:"etcd-endpoints", Opaque:"", User:(*url.Userinfo)(nil), Host:"0xc0003f2000", Path:"/127.0.0.1:45653", RawPath:"", OmitHost:false, ForceQuery:false, RawQuery:"", Fragment:"", RawFragment:""}}]
  logger.go:146: 2025-09-21T15:33:18.566-0700 INFO    grpc    [[core] [Channel #13]Channel authority set to "127.0.0.1:45653"]
  logger.go:146: 2025-09-21T15:33:18.567-0700 INFO    grpc    [[core] [Channel #13]Resolver state updated: {
        "Addresses": null,
        "Endpoints": [
          {
            "Addresses": [
              {
                "Addr": "127.0.0.1:45653",
                "ServerName": "127.0.0.1:45653",
                "Attributes": null,
                "BalancerAttributes": null,
                "Metadata": null
              }
            ],
            "Attributes": null
          }
        ],
        "ServiceConfig": {
          "Config": {
            "Config": null,
            "Methods": {}
          },
          "Err": null
        },
        "Attributes": null
      } (service config updated)]
  logger.go:146: 2025-09-21T15:33:18.567-0700 INFO    grpc    [[core] [Channel #13]Channel switches to new LB policy "round_robin"]
  logger.go:146: 2025-09-21T15:33:18.567-0700 INFO    grpc    [[roundrobin] [0xc0003ee810] Created]
  logger.go:146: 2025-09-21T15:33:18.567-0700 INFO    grpc    [[pick-first-leaf-lb] [pick-first-leaf-lb 0xc000759b90] Received new config {
        "shuffleAddressList": false
      }, resolver state {
        "Addresses": null,
        "Endpoints": [
          {
            "Addresses": [
              {
                "Addr": "127.0.0.1:45653",
                "ServerName": "127.0.0.1:45653",
                "Attributes": null,
                "BalancerAttributes": null,
                "Metadata": null
              }
            ],
            "Attributes": null
          }
        ],
        "ServiceConfig": null,
        "Attributes": {
          "\u003c%!p(pickfirstleaf.enableHealthListenerKeyType={})\u003e": "\u003c%!p(bool=true)\u003e"
        }
      }]
  logger.go:146: 2025-09-21T15:33:18.567-0700 INFO    grpc    [[core] [Channel #13 SubChannel #14]Subchannel created]
  logger.go:146: 2025-09-21T15:33:18.567-0700 INFO    grpc    [[core] [Channel #13]Channel Connectivity change to CONNECTING]
  logger.go:146: 2025-09-21T15:33:18.567-0700 INFO    grpc    [[core] [Channel #13 SubChannel #14]Subchannel Connectivity change to CONNECTING]
  logger.go:146: 2025-09-21T15:33:18.567-0700 INFO    grpc    [[core] [Channel #13 SubChannel #14]Subchannel picks a new address "127.0.0.1:45653" to connect]
  logger.go:146: 2025-09-21T15:33:18.567-0700 INFO    grpc    [[core] [Channel #13]Channel exiting idle mode]
  logger.go:146: 2025-09-21T15:33:18.568-0700 INFO    grpc    [[core] [Channel #13 SubChannel #14]Subchannel Connectivity change to READY]
  logger.go:146: 2025-09-21T15:33:18.568-0700 INFO    grpc    [[pick-first-leaf-lb] [pick-first-leaf-lb 0xc000759b90] SubConn 0xc0004418b0 reported connectivity state READY. Registering health listener.]
  logger.go:146: 2025-09-21T15:33:18.568-0700 INFO    grpc    [[core] [Channel #13]Channel Connectivity change to READY]
  logger.go:146: 2025-09-21T15:33:18.768-0700 DEBUG   client  retrying of unary invoker       {"target": "etcd-endpoints://0xc0003f2000/127.0.0.1:45653", "method": "/etcdserverpb.Cluster/MemberList", "attempt": 0}
  logger.go:146: 2025-09-21T15:33:18.769-0700 WARN    client  retrying of unary invoker failed        {"target": "etcd-endpoints://0xc0003f2000/127.0.0.1:45653", "method": "/etcdserverpb.Cluster/MemberList", "attempt": 0, "error": "rpc error: code = Unknown desc = unexpected end of JSON input"}
  cluster_test.go:62:
              Error Trace:    /home/nicow/etcd/tests/integration/proxy/grpcproxy/cluster_test.go:62
              Error:          Received unexpected error:
                              rpc error: code = Unknown desc = unexpected end of JSON input
              Test:           TestClusterProxyMemberList
              Messages:       err rpc error: code = Unknown desc = unexpected end of JSON input, want nil
  logger.go:146: 2025-09-21T15:33:18.770-0700 INFO    grpc    [[core] [Channel #13]Channel Connectivity change to SHUTDOWN]
  logger.go:146: 2025-09-21T15:33:18.770-0700 INFO    grpc    [[core] [Channel #13]Closing the name resolver]
  logger.go:146: 2025-09-21T15:33:18.770-0700 INFO    grpc    [[core] [Channel #13]ccBalancerWrapper: closing]
  logger.go:146: 2025-09-21T15:33:18.770-0700 INFO    grpc    [[core] [Channel #13 SubChannel #14]Subchannel Connectivity change to SHUTDOWN]
  logger.go:146: 2025-09-21T15:33:18.770-0700 INFO    grpc    [[core] [Channel #13 SubChannel #14]Subchannel deleted]
  logger.go:146: 2025-09-21T15:33:18.770-0700 INFO    grpc    [[transport] [client-transport 0xc0001fd688] Closing: rpc error: code = Canceled desc = grpc: the client connection is closing]
  logger.go:146: 2025-09-21T15:33:18.770-0700 INFO    grpc    [[transport] [client-transport 0xc0001fd688] loopyWriter exiting with error: rpc error: code = Canceled desc = grpc: the client connection is closing]
  logger.go:146: 2025-09-21T15:33:18.771-0700 INFO    grpc    [[core] [Channel #13]Channel deleted]
  logger.go:146: 2025-09-21T15:33:18.771-0700 INFO    grpc    [[transport] [server-transport 0xc00089a000] Closing: EOF]
  logger.go:146: 2025-09-21T15:33:18.771-0700 INFO    grpc    [[core] [Server #11 ListenSocket #12]ListenSocket deleted]
  logger.go:146: 2025-09-21T15:33:18.771-0700 INFO    grpc    [[transport] [server-transport 0xc00089a000] loopyWriter exiting with error: transport closed by client]
  logger.go:146: 2025-09-21T15:33:18.771-0700 INFO    watching endpoints interrupted  {"error": "context canceled"}
  logger.go:146: 2025-09-21T15:33:18.771-0700 DEBUG   client  retrying of unary invoker       {"target": "etcd-endpoints://0xc000224600/localhost:m0", "method": "/etcdserverpb.Lease/LeaseRevoke", "attempt": 0}
  logger.go:146: 2025-09-21T15:33:18.772-0700 WARN    client  retrying of unary invoker failed        {"target": "etcd-endpoints://0xc000224600/localhost:m0", "method": "/etcdserverpb.Lease/LeaseRevoke", "attempt": 0, "error": "rpc error: code = Canceled desc = context canceled"}
  logger.go:146: 2025-09-21T15:33:18.772-0700 INFO    grpc    [[core] [Channel #7]Channel Connectivity change to SHUTDOWN]
  logger.go:146: 2025-09-21T15:33:18.772-0700 INFO    grpc    [[core] [Channel #7]Closing the name resolver]
  logger.go:146: 2025-09-21T15:33:18.772-0700 INFO    grpc    [[core] [Channel #7]ccBalancerWrapper: closing]
  logger.go:146: 2025-09-21T15:33:18.772-0700 INFO    grpc    [[core] [Channel #7 SubChannel #8]Subchannel Connectivity change to SHUTDOWN]
  logger.go:146: 2025-09-21T15:33:18.772-0700 INFO    grpc    [[core] [Channel #7 SubChannel #8]Subchannel deleted]
  logger.go:146: 2025-09-21T15:33:18.772-0700 INFO    grpc    [[transport] [client-transport 0xc0006fa248] Closing: rpc error: code = Canceled desc = grpc: the client connection is closing]
  logger.go:146: 2025-09-21T15:33:18.772-0700 INFO    grpc    [[transport] [client-transport 0xc0006fa248] loopyWriter exiting with error: rpc error: code = Canceled desc = grpc: the client connection is closing]
  logger.go:146: 2025-09-21T15:33:18.773-0700 INFO    grpc    [[transport] [server-transport 0xc00047c1a0] Closing: EOF]
  logger.go:146: 2025-09-21T15:33:18.773-0700 INFO    grpc    [[core] [Channel #7]Channel deleted]
  logger.go:146: 2025-09-21T15:33:18.773-0700 INFO    grpc    [[transport] [server-transport 0xc00047c1a0] loopyWriter exiting with error: transport closed by client]
  cluster.go:1414: ========= Cluster termination started =====================
  logger.go:146: 2025-09-21T15:33:18.773-0700 INFO    grpc    [[core] [Channel #3]Channel Connectivity change to SHFAIL: (code:1):
% (cd tests && 'env' 'ETCD_VERIFY=all' 'go' 'test' './integration/...' '-timeout=15m' '--race' '-p=2')
UTDOWN]
  logger.go:146: 2025-09-21T15:33:18.773-0700 INFO    grpc    [[core] [Channel #3]Closing the name resolver]
  logger.go:146: 2025-09-21T15:33:18.773-0700 INFO    grpc    [[core] [Channel #3]ccBalancerWrapper: closing]
  logger.go:146: 2025-09-21T15:33:18.773-0700 INFO    grpc    [[core] [Channel #3 SubChannel #4]Subchannel Connectivity change to SHUTDOWN]
  logger.go:146: 2025-09-21T15:33:18.773-0700 INFO    grpc    [[core] [Channel #3 SubChannel #4]Subchannel deleted]
  logger.go:146: 2025-09-21T15:33:18.773-0700 INFO    grpc    [[transport] [client-transport 0xc0006fa008] Closing: rpc error: code = Canceled desc = grpc: the client connection is closing]
  logger.go:146: 2025-09-21T15:33:18.773-0700 INFO    grpc    [[transport] [client-transport 0xc0006fa008] loopyWriter exiting with error: rpc error: code = Canceled desc = grpc: the client connection is closing]
  logger.go:146: 2025-09-21T15:33:18.774-0700 INFO    grpc    [[transport] [server-transport 0xc00063e000] Closing: EOF]
  logger.go:146: 2025-09-21T15:33:18.774-0700 INFO    grpc    [[transport] [server-transport 0xc00063e000] loopyWriter exiting with error: transport closed by client]
  logger.go:146: 2025-09-21T15:33:18.774-0700 INFO    grpc    [[core] [Channel #3]Channel deleted]
  logger.go:146: 2025-09-21T15:33:18.774-0700 INFO    m0      terminating a member    {"member": "m0", "name": "m0", "advertise-peer-urls": ["unix://127.0.0.1:21002387078"], "listen-client-urls": ["unix://127.0.0.1:21003387078"], "grpc-url": "unix://localhost:m0"}
  logger.go:146: 2025-09-21T15:33:18.774-0700 INFO    grpc    [[core] [Server #1 ListenSocket #2]ListenSocket deleted]
  logger.go:146: 2025-09-21T15:33:18.774-0700 INFO    m0      server has stopped; stopping cluster version's monitor  {"member": "m0"}
  logger.go:146: 2025-09-21T15:33:18.774-0700 INFO    m0      server has stopped; stopping storage version's monitor  {"member": "m0"}
  logger.go:146: 2025-09-21T15:33:18.785-0700 INFO    m0      verification of persisted state {"member": "m0", "data-dir": "/tmp/TestClusterProxyMemberList1581358429/002/etcd2535352053"}
  logger.go:146: 2025-09-21T15:33:18.785-0700 INFO    m0.bbolt        Opening db file (/tmp/TestClusterProxyMemberList1581358429/002/etcd2535352053/member/snap/db) with mode -rw------- and with options: {Timeout: 0s, NoGrowSync: false, NoFreelistSync: true, PreLoadFreelist: false, FreelistType: , ReadOnly: false, MmapFlags: 8000, InitialMmapSize: 10737418240, PageSize: 0, NoSync: false, OpenFile: 0x0, Mlock: false, Logger: 0xc00068a1e8}      {"member": "m0"}
  logger.go:146: 2025-09-21T15:33:18.792-0700 INFO    m0.bbolt        Opening bbolt db (/tmp/TestClusterProxyMemberList1581358429/002/etcd2535352053/member/snap/db) successfully     {"member": "m0"}
  logger.go:146: 2025-09-21T15:33:18.793-0700 INFO    m0      verification: consistentIndex OK        {"member": "m0", "backend-consistent-index": 6, "hardstate-commit": 6}
  logger.go:146: 2025-09-21T15:33:18.795-0700 INFO    m0      verification of persisted state successful      {"member": "m0", "data-dir": "/tmp/TestClusterProxyMemberList1581358429/002/etcd2535352053"}
  logger.go:146: 2025-09-21T15:33:18.796-0700 INFO    m0      terminated a member     {"member": "m0", "name": "m0", "advertise-peer-urls": ["unix://127.0.0.1:21002387078"], "listen-client-urls": ["unix://127.0.0.1:21003387078"], "grpc-url": "unix://localhost:m0"}
  cluster.go:1431: ========= Cluster termination succeeded ===================
FAIL
FAIL    go.etcd.io/etcd/tests/v3/integration/proxy/grpcproxy    1.082s
ok      go.etcd.io/etcd/tests/v3/integration/snapshot   (cached)
ok      go.etcd.io/etcd/tests/v3/integration/v2store    (cached)
FAIL
FAIL: 'integration' FAILED at Sun Sep 21 15:33:18 PDT 2025
make: *** [Makefile:55: test-integration] Error 255

To resolve errors after removing Metadata field from Endpoint struct which was causing integration tests to fail.

Signed-off-by: Nico Wong <nicowong8@gmail.com>
@nicomwong
Copy link
Author

All tests are passing after most recent commit (fb13bb7)

@nicomwong nicomwong marked this pull request as ready for review October 4, 2025 21:21
return nil, err
}
mbs = append(mbs, &pb.Member{Name: m.Name, ClientURLs: []string{upt.Addr}})
mbs = append(mbs, &pb.Member{Name: "", ClientURLs: []string{upt.Addr}})
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it be possible to keep a name? Otherwise, how do we know which member this is?

@ivanvc
Copy link
Member

ivanvc commented Oct 9, 2025

Reviewed in our bi-weekly triage meeting. Enable running tests.

/ok-to-test

@codecov
Copy link

codecov bot commented Oct 9, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 69.13%. Comparing base (fdf28cb) to head (fb13bb7).
⚠️ Report is 90 commits behind head on main.

Additional details and impacted files
Files with missing lines Coverage Δ
client/v3/naming/endpoints/endpoints.go 100.00% <ø> (ø)
client/v3/naming/endpoints/endpoints_impl.go 71.42% <100.00%> (-0.27%) ⬇️
client/v3/naming/resolver/resolver.go 80.00% <100.00%> (-0.36%) ⬇️
server/proxy/grpcproxy/cluster.go 72.36% <100.00%> (+3.23%) ⬆️
server/proxy/grpcproxy/register.go 70.27% <100.00%> (-18.62%) ⬇️

... and 33 files with indirect coverage changes

@@            Coverage Diff             @@
##             main   #20695      +/-   ##
==========================================
- Coverage   69.20%   69.13%   -0.08%     
==========================================
  Files         420      422       +2     
  Lines       34794    34806      +12     
==========================================
- Hits        24080    24062      -18     
- Misses       9323     9341      +18     
- Partials     1391     1403      +12     

Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update fdf28cb...fb13bb7. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@k8s-ci-robot
Copy link

@nicomwong: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
pull-etcd-coverage-report fb13bb7 link true /test pull-etcd-coverage-report
pull-etcd-e2e-amd64 fb13bb7 link true /test pull-etcd-e2e-amd64

Full PR test history. Your PR dashboard. Please help us cut down on flakes by linking to an open issue when you hit one in your PR.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Development

Successfully merging this pull request may close these issues.

Deprecate usage of gresolver.Address.Metadata

3 participants