From 97f6b2e7ad9962c99e566238bde40cdba0ffc3a8 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Tue, 23 Jul 2024 17:39:35 +0200 Subject: [PATCH] fix: make result_json path stable for python executors --- backend/windmill-worker/src/python_executor.rs | 11 +++++++---- .../src/lib/components/table/AutoDataTable.svelte | 2 ++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/backend/windmill-worker/src/python_executor.rs b/backend/windmill-worker/src/python_executor.rs index dd89632957..3186bd41c5 100644 --- a/backend/windmill-worker/src/python_executor.rs +++ b/backend/windmill-worker/src/python_executor.rs @@ -286,13 +286,14 @@ pub async fn handle_python_job( create_args_and_out_file(&client, job, job_dir, db).await?; let os_main_override = if let Some(main_override) = main_name.as_ref() { - format!("import os\nos.environ[\"MAIN_OVERRIDE\"] = \"{main_override}\"\n") + format!("os.environ[\"MAIN_OVERRIDE\"] = \"{main_override}\"\n") } else { String::new() }; let main_override = main_name.unwrap_or_else(|| "main".to_string()); let wrapper_content: String = format!( r#" +import os import json {import_loader} {import_base64} @@ -318,6 +319,9 @@ def to_b_64(v: bytes): return b64.decode('ascii') replace_nan = re.compile(r'(?:\bNaN\b|\\u0000)') + +result_json = os.path.join(os.path.abspath(os.path.dirname(__file__)), "result.json") + try: res = inner_script.{main_override}(**args) typ = type(res) @@ -333,14 +337,13 @@ try: if type(v).__name__ == 'bytes': res[k] = to_b_64(v) res_json = re.sub(replace_nan, ' null ', json.dumps(res, separators=(',', ':'), default=str).replace('\n', '')) - with open("result.json", 'w') as f: + with open(result_json, 'w') as f: f.write(res_json) except BaseException as e: exc_type, exc_value, exc_traceback = sys.exc_info() tb = traceback.format_tb(exc_traceback) - with open("result.json", 'w') as f: + with open(result_json, 'w') as f: err = {{ "message": str(e), "name": e.__class__.__name__, "stack": '\n'.join(tb[1:]) }} - import os flow_node_id = os.environ.get('WM_FLOW_STEP_ID') if flow_node_id: err['step_id'] = flow_node_id diff --git a/frontend/src/lib/components/table/AutoDataTable.svelte b/frontend/src/lib/components/table/AutoDataTable.svelte index 5d48e62ee5..0dc209432f 100644 --- a/frontend/src/lib/components/table/AutoDataTable.svelte +++ b/frontend/src/lib/components/table/AutoDataTable.svelte @@ -66,6 +66,8 @@ JSON.stringify(value).toLowerCase().includes(search.toLowerCase()) ) ) + } else { + objects = [...objects] } if (activeSorting) { objects = objects.sort((a, b) => {