{"record":{"id":"3f38864be719c7a3","repo":"langchain-ai/langgraph","slug":"json-encryptor-already-registered","errorCode":null,"errorMessage":"JSON encryptor already registered","messagePattern":"JSON encryptor already registered","errorType":"exception","errorClass":"DuplicateHandlerError","httpStatus":null,"severity":"error","filePath":"libs/sdk-py/langgraph_sdk/encryption/__init__.py","lineNumber":131,"sourceCode":"            ```python\n            @encryption.encrypt.json\n            async def encrypt_json(ctx: EncryptionContext, data: dict) -> dict:\n                # Encrypt the data\n                return encrypt_data(data)\n            ```\n\n        Args:\n            fn: The encryption handler function\n\n        Returns:\n            The registered handler function\n\n        Raises:\n            DuplicateHandlerError: If JSON encryptor already registered\n            TypeError: If handler has invalid signature\n        \"\"\"\n        if self._parent._json_encryptor is not None:\n            raise DuplicateHandlerError(\"JSON encryptor already registered\")\n        _validate_handler(fn, \"JSON encryptor\")\n        self._parent._json_encryptor = fn\n        return fn\n\n\nclass _DecryptDecorators:\n    \"\"\"Decorators for decryption handlers.\n\n    Provides @encryption.decrypt.blob and @encryption.decrypt.json decorators for\n    registering decryption functions.\n    \"\"\"\n\n    def __init__(self, parent: Encryption):\n        self._parent = parent\n\n    def blob(self, fn: _BlobDecryptorT) -> _BlobDecryptorT:\n        \"\"\"Register a blob decryption handler.\n","sourceCodeStart":113,"sourceCodeEnd":149,"githubUrl":"https://github.com/langchain-ai/langgraph/blob/38031739e551638e373fb553453256c23feeb41f/libs/sdk-py/langgraph_sdk/encryption/__init__.py#L113-L149","documentation":"Error \"JSON encryptor already registered\" thrown in langchain-ai/langgraph.","triggerScenarios":"Thrown at libs/sdk-py/langgraph_sdk/encryption/__init__.py:131 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"38031739e551638e373fb553453256c23feeb41f","analyzedAt":"2026-08-26T18:02:49.312Z","schemaVersion":2},"datasetVersion":"2026-08-26T21:11:00.512Z"}