From 8377a20b0c9926c550d1119c410cf8d9f0ea313f Mon Sep 17 00:00:00 2001 From: MEPalma <64580864+MEPalma@users.noreply.github.com> Date: Tue, 11 Mar 2025 21:19:50 +0100 Subject: [PATCH] lazy loading of JSONata JVM bridge in jsonata bridge utils file --- .../services/stepfunctions/asl/jsonata/jsonata.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/localstack-core/localstack/services/stepfunctions/asl/jsonata/jsonata.py b/localstack-core/localstack/services/stepfunctions/asl/jsonata/jsonata.py index 448ac27946957..1fa837f68815e 100644 --- a/localstack-core/localstack/services/stepfunctions/asl/jsonata/jsonata.py +++ b/localstack-core/localstack/services/stepfunctions/asl/jsonata/jsonata.py @@ -86,11 +86,16 @@ def eval_jsonata(self, jsonata_expression: JSONataExpression) -> Any: raise JSONataException("UNKNOWN", str(ex)) -# Final reference to the java evaluation function. -_eval_jsonata: Final[Callable[[JSONataExpression], Any]] = _JSONataJVMBridge.get().eval_jsonata +# Lazy initialization of the `eval_jsonata` function pointer. +# This ensures the JVM is only started when JSONata functionality is needed. +_eval_jsonata: Optional[Callable[[JSONataExpression], Any]] = None def eval_jsonata_expression(jsonata_expression: JSONataExpression) -> Any: + global _eval_jsonata + if _eval_jsonata is None: + # Initialize _eval_jsonata only when invoked for the first time using the Singleton pattern. + _eval_jsonata = _JSONataJVMBridge.get().eval_jsonata return _eval_jsonata(jsonata_expression)