From 2bcfaa3f32a2cd7a5953005f6f8fcafcdabcdb39 Mon Sep 17 00:00:00 2001 From: Jackson Newhouse Date: Tue, 4 Mar 2025 17:04:51 -0800 Subject: [PATCH] feat: update plugin error handling and request response docs. --- content/shared/v3-core-plugins/_index.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/content/shared/v3-core-plugins/_index.md b/content/shared/v3-core-plugins/_index.md index bb5515c18..031311421 100644 --- a/content/shared/v3-core-plugins/_index.md +++ b/content/shared/v3-core-plugins/_index.md @@ -219,6 +219,19 @@ obj_to_log = {"hello": "world"} influxdb3_local.info("This is an info message with an object", obj_to_log) ``` +### Trigger Settings + +#### Run Asynchronously +Triggers can be optionally configured to run asynchronously. This is enabled in the CLI via the `--run-asynchronously` flag. +If this flag is set individual instances of the trigger will run simultaneously. + +#### Error Behavior +By default, errors in a plugin will simply be _logged_, writing to the server output and the system.processing_engine_logs system table. +This behavior can be changed by specifying the "Error behavior", via the `--error-behavior` flag. Apart from the default `log`, you may set + +* `--error-behavior retry` will immediately the plugin in the event of error. +* `--error-behavior disable` will turn off the plugin as soon as an error occurs. You can enable it again using the CLI. + ### Trigger arguments A plugin can receive arguments from the trigger that runs it. @@ -388,6 +401,7 @@ influxdb3 create trigger \ On Request plugins are triggered by a request to a custom HTTP API endpoint. The plugin receives the shared API, query parameters `Dict[str, str]`, request headers `Dict[str, str]`, the request body (as bytes), and any arguments passed in the trigger definition. +The response conventions for On Request plugins follows Flask conventions, as detailed [here](https://flask.palletsprojects.com/en/stable/quickstart/#about-responses). #### Example: On Request plugin @@ -411,7 +425,7 @@ def process_request(influxdb3_local, query_parameters, request_headers, request_ influxdb3_local.write(line) - return 200, {"Content-Type": "application/json"}, json.dumps({"status": "ok", "line": line_str}) + return {"status": "ok", "line": line_str} ``` #### On Request trigger configuration