From 1455b209a42020ce40071fe4d252be35556e7f30 Mon Sep 17 00:00:00 2001 From: david-streamlio <35466513+david-streamlio@users.noreply.github.com> Date: Tue, 25 Aug 2026 10:12:24 -0700 Subject: [PATCH 1/2] [improve][doc] Note that --timeout-ms also sets the negative ack redelivery delay FunctionConfigUtils.convert sets sourceSpec.negativeAckRedeliveryDelayMs from functionConfig.getTimeoutMs(), so a function's --timeout-ms silently drives two settings: the unacknowledged-message timeout and the redelivery delay applied to negatively acknowledged messages. Nothing says so. The timeoutMs row documents only the message timeout, and negativeAckRedeliveryDelayMs is not a function-level option at all -- there is no FunctionConfig field and no flag in CmdFunctions, so the sink equivalent (--negative-ack-redelivery-delay-ms, documented in io-cli.md) has no counterpart here. A user tuning --timeout-ms has no way to learn that redelivery timing moves with it. The three runtimes also differ, which the row now records: Java applies both, Python applies the message timeout only (#26411), and Go applies the redelivery delay only -- its ConsumerOptions sets NackRedeliveryDelay and no ack timeout. --- docs/functions-cli.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/functions-cli.md b/docs/functions-cli.md index 7617ad092572..ffd751d4360e 100644 --- a/docs/functions-cli.md +++ b/docs/functions-cli.md @@ -55,7 +55,7 @@ You can configure a function by using a predefined YAML file. The following tabl | resources | [Resources](#resources) | N/A | N/A | | fqfn | String | `--fqfn` | The Fully Qualified Function Name (FQFN) of a function. | | windowConfig | [WindowConfig](#windowconfig) | N/A | N/A | -| timeoutMs | Long | `--timeout-ms` | The message timeout (in milliseconds). | +| timeoutMs | Long | `--timeout-ms` | The message timeout (in milliseconds).
**Note:** This value also sets the redelivery delay applied to negatively acknowledged messages. A function has no way to configure the two independently; the sink equivalent, `--negative-ack-redelivery-delay-ms`, has no counterpart for functions. Java functions apply both. Python functions apply the message timeout only ([#26411](https://github.com/apache/pulsar/issues/26411)), and Go functions apply the redelivery delay only. | | jar | String | `--jar` | The absolute path of the JAR file for a function (written in Java). It also supports URL paths that workers can download the package from, including HTTP, HTTPS, file (file protocol assuming that file already exists on worker host), and function (package URL from packages management service). | | py | String | `--py` | The absolute path of the main Python/Python wheel file for a function (written in Python). It also supports URL paths that workers can download the package from, including HTTP, HTTPS, file (file protocol assuming that file already exists on worker host), and function (package URL from packages management service). | | go | String | `--go` | The absolute path of the main Go executable binary for the function (written in Go). It also supports URL paths that workers can download the package from, including HTTP, HTTPS, file (file protocol assuming that file already exists on worker host), and function (package URL from packages management service). | From ff57c5fc3ba6ad1e5653d66281f7546aa0598947 Mon Sep 17 00:00:00 2001 From: david-streamlio <35466513+david-streamlio@users.noreply.github.com> Date: Tue, 25 Aug 2026 10:47:02 -0700 Subject: [PATCH 2/2] [improve][doc] Apply the --timeout-ms note to the supported versioned docs The contribution guide asks that a documentation change applying to a supported version update versioned_docs alongside docs/. The coupling this note describes is present in every supported release: 5.0.x, 4.2.x, and 4.0.x. The runtime line differs from docs/ and is not a straight copy. #26415 gave the Go runtime the negative-ack redelivery delay on master only, and it is in none of these releases; the Go runtime has never applied an ack timeout either, its ConsumerOptions carrying neither field. So Go applies *neither* setting in the released versions, where master will soon apply one. --- versioned_docs/version-4.0.x/functions-cli.md | 2 +- versioned_docs/version-4.2.x/functions-cli.md | 2 +- versioned_docs/version-5.0.x/functions-cli.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/versioned_docs/version-4.0.x/functions-cli.md b/versioned_docs/version-4.0.x/functions-cli.md index 62c1ac4b7802..5da20968b8bd 100644 --- a/versioned_docs/version-4.0.x/functions-cli.md +++ b/versioned_docs/version-4.0.x/functions-cli.md @@ -55,7 +55,7 @@ You can configure a function by using a predefined YAML file. The following tabl | resources | [Resources](#resources) | N/A | N/A | | fqfn | String | `--fqfn` | The Fully Qualified Function Name (FQFN) of a function. | | windowConfig | [WindowConfig](#windowconfig) | N/A | N/A | -| timeoutMs | Long | `--timeout-ms` | The message timeout (in milliseconds). | +| timeoutMs | Long | `--timeout-ms` | The message timeout (in milliseconds).
**Note:** This value also sets the redelivery delay applied to negatively acknowledged messages. A function has no way to configure the two independently; the sink equivalent, `--negative-ack-redelivery-delay-ms`, has no counterpart for functions. Java functions apply both. Python functions apply the message timeout only ([#26411](https://github.com/apache/pulsar/issues/26411)), and Go functions apply neither. | | jar | String | `--jar` | The absolute path of the JAR file for a function (written in Java). It also supports URL paths that workers can download the package from, including HTTP, HTTPS, file (file protocol assuming that file already exists on worker host), and function (package URL from packages management service). | | py | String | `--py` | The absolute path of the main Python/Python wheel file for a function (written in Python). It also supports URL paths that workers can download the package from, including HTTP, HTTPS, file (file protocol assuming that file already exists on worker host), and function (package URL from packages management service). | | go | String | `--go` | The absolute path of the main Go executable binary for the function (written in Go). It also supports URL paths that workers can download the package from, including HTTP, HTTPS, file (file protocol assuming that file already exists on worker host), and function (package URL from packages management service). | diff --git a/versioned_docs/version-4.2.x/functions-cli.md b/versioned_docs/version-4.2.x/functions-cli.md index 7617ad092572..36091590f02b 100644 --- a/versioned_docs/version-4.2.x/functions-cli.md +++ b/versioned_docs/version-4.2.x/functions-cli.md @@ -55,7 +55,7 @@ You can configure a function by using a predefined YAML file. The following tabl | resources | [Resources](#resources) | N/A | N/A | | fqfn | String | `--fqfn` | The Fully Qualified Function Name (FQFN) of a function. | | windowConfig | [WindowConfig](#windowconfig) | N/A | N/A | -| timeoutMs | Long | `--timeout-ms` | The message timeout (in milliseconds). | +| timeoutMs | Long | `--timeout-ms` | The message timeout (in milliseconds).
**Note:** This value also sets the redelivery delay applied to negatively acknowledged messages. A function has no way to configure the two independently; the sink equivalent, `--negative-ack-redelivery-delay-ms`, has no counterpart for functions. Java functions apply both. Python functions apply the message timeout only ([#26411](https://github.com/apache/pulsar/issues/26411)), and Go functions apply neither. | | jar | String | `--jar` | The absolute path of the JAR file for a function (written in Java). It also supports URL paths that workers can download the package from, including HTTP, HTTPS, file (file protocol assuming that file already exists on worker host), and function (package URL from packages management service). | | py | String | `--py` | The absolute path of the main Python/Python wheel file for a function (written in Python). It also supports URL paths that workers can download the package from, including HTTP, HTTPS, file (file protocol assuming that file already exists on worker host), and function (package URL from packages management service). | | go | String | `--go` | The absolute path of the main Go executable binary for the function (written in Go). It also supports URL paths that workers can download the package from, including HTTP, HTTPS, file (file protocol assuming that file already exists on worker host), and function (package URL from packages management service). | diff --git a/versioned_docs/version-5.0.x/functions-cli.md b/versioned_docs/version-5.0.x/functions-cli.md index 7617ad092572..36091590f02b 100644 --- a/versioned_docs/version-5.0.x/functions-cli.md +++ b/versioned_docs/version-5.0.x/functions-cli.md @@ -55,7 +55,7 @@ You can configure a function by using a predefined YAML file. The following tabl | resources | [Resources](#resources) | N/A | N/A | | fqfn | String | `--fqfn` | The Fully Qualified Function Name (FQFN) of a function. | | windowConfig | [WindowConfig](#windowconfig) | N/A | N/A | -| timeoutMs | Long | `--timeout-ms` | The message timeout (in milliseconds). | +| timeoutMs | Long | `--timeout-ms` | The message timeout (in milliseconds).
**Note:** This value also sets the redelivery delay applied to negatively acknowledged messages. A function has no way to configure the two independently; the sink equivalent, `--negative-ack-redelivery-delay-ms`, has no counterpart for functions. Java functions apply both. Python functions apply the message timeout only ([#26411](https://github.com/apache/pulsar/issues/26411)), and Go functions apply neither. | | jar | String | `--jar` | The absolute path of the JAR file for a function (written in Java). It also supports URL paths that workers can download the package from, including HTTP, HTTPS, file (file protocol assuming that file already exists on worker host), and function (package URL from packages management service). | | py | String | `--py` | The absolute path of the main Python/Python wheel file for a function (written in Python). It also supports URL paths that workers can download the package from, including HTTP, HTTPS, file (file protocol assuming that file already exists on worker host), and function (package URL from packages management service). | | go | String | `--go` | The absolute path of the main Go executable binary for the function (written in Go). It also supports URL paths that workers can download the package from, including HTTP, HTTPS, file (file protocol assuming that file already exists on worker host), and function (package URL from packages management service). |