{"record":{"id":"ecb72e161b9ff458","repo":"microsoft/semantic-kernel","slug":"get-failed-due-to-e","errorCode":null,"errorMessage":"Get failed due to: {e}","messagePattern":"Get failed due to: (.+?)","errorType":"exception","errorClass":"ServiceResponseException","httpStatus":null,"severity":"error","filePath":"python/semantic_kernel/connectors/memory_stores/milvus/milvus_memory_store.py","lineNumber":343,"sourceCode":"            e: _description_\n\n        Returns:\n            List[MemoryRecord]: _description_\n        \"\"\"\n        # Check if the collection exists\n        if not utility.has_collection(collection_name):\n            logger.debug(f\"Collection {collection_name} does not exist, cannot get.\")\n            raise ServiceResourceNotFoundError(f\"Collection {collection_name} does not exist, cannot get.\")\n\n        try:\n            self.collections[collection_name].load()\n            gets = self.collections[collection_name].query(\n                expr=f\"{SEARCH_FIELD_ID} in {keys}\",\n                output_fields=OUTPUT_FIELDS_W_EMBEDDING if with_embeddings else OUTPUT_FIELDS_WO_EMBEDDING,\n            )\n        except Exception as e:\n            logger.debug(f\"Get failed due to: {e}\")\n            raise ServiceResponseException(f\"Get failed due to: {e}\") from e\n        return [milvus_dict_to_memoryrecord(get) for get in gets]\n\n    async def remove(self, collection_name: str, key: str) -> None:\n        \"\"\"Remove the specified record based on key.\n\n        Args:\n            collection_name (str): Collection to remove from.\n            key (str): The key to remove.\n        \"\"\"\n        await self.remove_batch(collection_name=collection_name, keys=[key])\n\n    async def remove_batch(self, collection_name: str, keys: list[str]) -> None:\n        \"\"\"Remove multiple records based on keys.\n\n        Args:\n            collection_name (str): Collection to remove from\n            keys (List[str]): The list of keys.\n","sourceCodeStart":325,"sourceCodeEnd":361,"githubUrl":"https://github.com/microsoft/semantic-kernel/blob/c028a0c7dc4f0814cdcbaba9d998f187a41197bf/python/semantic_kernel/connectors/memory_stores/milvus/milvus_memory_store.py#L325-L361","documentation":"Raised as a ServiceResponseException in MilvusMemoryStore.get_batch when self.collections[collection_name].load() or .query() throws any Exception. The load() step pulls collection data into memory and query() executes the filter expression; failures in either are wrapped with the original error chained.","triggerScenarios":"Milvus .load() fails due to insufficient memory or the collection not being ready. .query() fails due to a malformed filter expression (the f-string builds expr=f'{SEARCH_FIELD_ID} in {keys}'), missing fields, or connection issues.","commonSituations":"Querying immediately after insert before the data is flushed/indexed. Malformed keys list producing an invalid Milvus expression. Memory pressure causing load() to fail. Network interruption during query.","solutions":["Inspect the interpolated {e} to distinguish load failures from query/expression failures.","Ensure keys are valid strings forming a correct Milvus 'in' expression.","Add a short wait or retry after recent inserts so data is flushed and loaded.","Check Milvus server memory and query-node health."],"exampleFix":"// before\nrecords = await store.get_batch('docs', keys, with_embeddings=True)  # ServiceResponseException\n// after\ntry:\n    records = await store.get_batch('docs', keys, with_embeddings=True)\nexcept ServiceResponseException as e:\n    logging.warning('Milvus get failed, retrying: %s', e)\n    records = []  # or implement backoff retry","handlingStrategy":"try-catch","validationCode":"def valid_milvus_keys(keys: list[str]) -> bool:\n    return bool(keys) and all(isinstance(k, str) and k for k in keys)\n\nif not valid_milvus_keys(keys):\n    raise ValueError('Invalid keys for Milvus query expression')","typeGuard":null,"tryCatchPattern":"from semantic_kernel.exceptions import ServiceResponseException\n\nfor attempt in range(3):\n    try:\n        records = await store.get_batch('docs', keys, with_embeddings=True)\n        break\n    except ServiceResponseException as e:\n        if attempt == 2:\n            raise\n        await asyncio.sleep(2 ** attempt)","preventionTips":["Ensure keys form a valid Milvus 'in' expression.","Allow time for flush/load after recent inserts before querying.","Monitor Milvus query-node memory to avoid load() failures.","Implement backoff retry for transient connection errors."],"tags":["milvus","get","service-response","runtime","python"],"backgroundTag":null,"analyzedSha":"c028a0c7dc4f0814cdcbaba9d998f187a41197bf","analyzedAt":"2026-08-13T13:48:05.040Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}