{"record":{"id":"e1b8ac8fe8b7e5bd","repo":"mlflow/mlflow","slug":"invalid-parameter-value-e1b8ac","errorCode":"INVALID_PARAMETER_VALUE","errorMessage":"`item_type` must be TRACE; got proto enum value {proto}.","messagePattern":"`item_type` must be TRACE; got proto enum value (.+?)\\.","errorType":"error_code","errorClass":"MlflowException","httpStatus":null,"severity":"error","filePath":"mlflow/genai/review_queues/review_queues.py","lineNumber":27,"sourceCode":"\n@experimental(version=\"3.14.0\")\nclass ReviewItemType(StrEnum):\n    \"\"\"What kind of object a queue item points at.\n\n    v1 ships ``trace`` only; the column is kept wide enough for\n    ``session`` / ``span`` to land later without a migration.\n    \"\"\"\n\n    TRACE = \"trace\"\n\n    def to_proto(self) -> int:\n        return _rq_pb.TRACE\n\n    @classmethod\n    def from_proto(cls, proto: int) -> \"ReviewItemType\":\n        if proto == _rq_pb.TRACE:\n            return cls.TRACE\n        raise MlflowException(\n            f\"`item_type` must be TRACE; got proto enum value {proto}.\",\n            error_code=INVALID_PARAMETER_VALUE,\n        )\n\n\n@experimental(version=\"3.14.0\")\nclass ReviewQueueType(StrEnum):\n    \"\"\"The flavor of a review queue.\n\n    ``USER`` — ``name`` equals a user identifier and the queue has exactly\n        one assigned user (that user). It is the reviewer's personal\n        worklist and inherits *all* of the experiment's label schemas as\n        its questions (no chooser, resolved live at read time), so creating\n        one is just \"assign these traces to this person\".\n    ``CUSTOM`` — an arbitrary, non-reserved ``name`` with 0..N assigned\n        users and an explicitly-attached subset of label schemas. The\n        analog of a Databricks ``LabelingSession``.\n    \"\"\"","sourceCodeStart":9,"sourceCodeEnd":45,"githubUrl":"https://github.com/mlflow/mlflow/blob/6a27f2decc0b76eb1b54af31849784addb357dbc/mlflow/genai/review_queues/review_queues.py#L9-L45","documentation":"ReviewItemType.from_proto only recognizes the TRACE proto enum value; any other integer from the review-queue protobuf enum is rejected. It indicates deserializing an item type this client version doesn't support.","triggerScenarios":"Deserializing a ReviewItem whose proto item_type enum differs from _rq_pb.TRACE, typically from a server using a newer enum value than the installed MLflow client understands.","commonSituations":"Version skew between Databricks/MLflow server and an older client SDK; hand-crafted protos in tests; corrupted or forward-incompatible stored data.","solutions":["Upgrade the mlflow package to the latest version so the newer item_type enum is recognized","Verify the proto source is a legitimate review-queue item_type value (TRACE)","If a server returns this, check server/client version compatibility for the genai review-queue API"],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":"from mlflow.genai.review_queues import review_queues_pb2 as _rq_pb\nif proto != _rq_pb.TRACE:\n    raise ValueError(f\"Unsupported item_type proto: {proto}; upgrade mlflow\")","typeGuard":"def is_supported_item_type(proto: int) -> bool:\n    from mlflow.proto.databricks.review_queues_pb2 import TRACE\n    return proto == TRACE","tryCatchPattern":"from mlflow.exceptions import MlflowException\ntry:\n    item_type = ReviewItemType.from_proto(proto)\nexcept MlflowException as e:\n    if \"item_type\" in str(e):\n        logging.warning(\"Unknown item_type %s; upgrade mlflow client\", proto)\n    else:\n        raise","preventionTips":["Pin and regularly upgrade the mlflow client to match your server","Wrap proto deserialization of server payloads with version checks","Log unexpected enum values instead of crashing pipelines"],"tags":["mlflow","genai","proto","deserialization"],"backgroundTag":"enum-value-not-supported","analyzedSha":"6a27f2decc0b76eb1b54af31849784addb357dbc","analyzedAt":"2026-08-29T20:54:51.419Z","schemaVersion":2},"datasetVersion":"2026-08-29T22:17:34.462Z"}