Skip to content

MLserver 1.7.0 does not constrain protobuf<5.27.2 correctly #2130

Description

@mcompen
Traceback (most recent call last):                                                                                                                                                                 
  File "/opt/app/.venv/bin/mlserver", line 5, in <module>                                                                                                                                          
    from mlserver.cli import main                                                                                                                                                                  
  File "/opt/app/.venv/lib/python3.10/site-packages/mlserver/__init__.py", line 2, in <module>                                                                                                     
    from .server import MLServer                                                                                                                                                                   
  File "/opt/app/.venv/lib/python3.10/site-packages/mlserver/server.py", line 17, in <module>                                                                                                      
    from .grpc import GRPCServer                                                                                                                                                                   
  File "/opt/app/.venv/lib/python3.10/site-packages/mlserver/grpc/__init__.py", line 1, in <module>                                                                                                
    from .server import GRPCServer                                                                                                                                                                 
  File "/opt/app/.venv/lib/python3.10/site-packages/mlserver/grpc/server.py", line 9, in <module>                                                                                                  
    from .servicers import InferenceServicer                                                                                                                                                       
  File "/opt/app/.venv/lib/python3.10/site-packages/mlserver/grpc/servicers.py", line 3, in <module>                                                                                               
    from . import dataplane_pb2 as pb                                                                                                                                                              
  File "/opt/app/.venv/lib/python3.10/site-packages/mlserver/grpc/dataplane_pb2.py", line 9, in <module>                                                                                           
    from google.protobuf import runtime_version as _runtime_version                                                                                                                                
ImportError: cannot import name 'runtime_version' from 'google.protobuf' (/opt/app/.venv/lib/python3.10/site-packages/google/protobuf/__init__.py) 

My venv contains protobuf 4.25.7. This is compatible with the current constraints of MLserver, as there aren't any. However, the import introduced in this PR is only compatible with protobuf>5.27. Let me know if I missed anything. I confirmed this issue disappears when installing protobuf 5.27.2 instead (overruling dependency conflicts). With protobuf 5.27.0, the error is slightly different

Details ``` File "/Users/manu.compen/Library/Caches/pypoetry/virtualenvs/test-repo-4LTXvItg-py3.10/lib/python3.10/site-packages/mlserver/grpc/servicers.py", line 3, in from . import dataplane_pb2 as pb File "/Users/manu.compen/Library/Caches/pypoetry/virtualenvs/test-repo-4LTXvItg-py3.10/lib/python3.10/site-packages/mlserver/grpc/dataplane_pb2.py", line 13, in _runtime_version.ValidateProtobufRuntimeVersion( File "/Users/manu.compen/Library/Caches/pypoetry/virtualenvs/test-repo-4LTXvItg-py3.10/lib/python3.10/site-packages/google/protobuf/runtime_version.py", line 86, in ValidateProtobufRuntimeVersion raise VersionError( google.protobuf.runtime_version.VersionError: Detected incompatible Protobuf Gencode/Runtime versions when loading dataplane.proto: gencode 5.27.2 runtime 5.27.0. Runtime version cannot be older than the linked gencode version. See Protobuf version guarantees at https://protobuf.dev/support/cross-version-runtime-guarantee. ```

Protobuf<5.0 is still required by packages such as kfp. Any chance a patch could be released?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions