Skip to content

[Python] Channelz.GetSocket Exception serializing message when socket id not found #42340

@sergiitk

Description

@sergiitk

What version of gRPC and what language are you using?

v1.80.x

What operating system (Linux, Windows,...) and version?

any

What runtime / compiler are you using (e.g. python version or version of gcc)

any

What did you do?

docker run --interactive --tty --rm -p 127.0.0.1:8080:8080 --name xdssrv --network my-net us-docker.pkg.dev/grpc-testing/psm-interop/python-server:v1.80.x --port=8080
[INFO  tini (1)] Spawned child process '/xds_interop_server' with pid '7'
/xds_interop_server.runfiles/com_google_protobuf/python/google/protobuf/__init__.py:14: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
  __import__('pkg_resources').declare_namespace(__name__)
W0508 19:27:49.566791       7 log.cc:110] Log level DEBUG is not suitable for production. Prefer WARNING or ERROR. However if you see this message in a debug environment or test environment it is safe to ignore this message.
E0508 19:27:49.567468       7 trace.cc:86] Unknown tracer: xds_cluster_resolver_lb
I0508 19:27:49.567583       7 trace.cc:91] gRPC Tracers: xds_client, xds_resolver, xds_cluster_manager_lb, cds_lb, priority_lb, xds_cluster_impl_lb, weighted_target_lb
2026-05-08 19:27:49,580: INFO     Test server listening on port 8080
2026-05-08 19:27:49,580: INFO     Maintenance server listening on port 8080

# serves the grpcurl request for non-existing socket:

2026-05-08 19:28:18,835: ERROR    Exception serializing message!
Traceback (most recent call last):
  File "/xds_interop_server.runfiles/com_github_grpc_grpc/src/python/grpcio/grpc/_common.py", line 87, in _transform
    return transformer(message)
           ^^^^^^^^^^^^^^^^^^^^
  File "/xds_interop_server.runfiles/com_google_protobuf/python/google/protobuf/internal/python_message.py", line 1140, in SerializeToString
    if not self.IsInitialized():
           ^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'IsInitialized'

Client:

$ grpcurl --plaintext 127.0.0.1:8080 grpc.channelz.v1.Channelz.GetServers | grep socket_id
          "socket_id": "4",
          "socket_id": "5",

# requesting non-existing socket

$ grpcurl -d '{"socket_id": 10}' --plaintext 127.0.0.1:8080 grpc.channelz.v1.Channelz.GetSocket
ERROR:
  Code: NotFound
  Message: Failed to get the socket, please ensure your socket_id==10 is valid

What did you expect to see?

The server should not log serialization error.

What did you see instead?

2026-05-08 19:28:18,835: ERROR    Exception serializing message!
Traceback (most recent call last):
  File "/xds_interop_server.runfiles/com_github_grpc_grpc/src/python/grpcio/grpc/_common.py", line 87, in _transform
    return transformer(message)
           ^^^^^^^^^^^^^^^^^^^^
  File "/xds_interop_server.runfiles/com_google_protobuf/python/google/protobuf/internal/python_message.py", line 1140, in SerializeToString
    if not self.IsInitialized():
           ^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'IsInitialized'

Anything else we should know about your project / environment?

I used xds test server as an example, but I'm pretty sure normal channelz is affected too.

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions