I’m experiencing a problem with a server function that appears to be executed repeatedly at approximately 60-second intervals, even though the client invokes it only once.
This application previously completed the same reporting and email-generation workflow successfully. The database has grown somewhat since our previous testing, but the overall workload is similar.
My application generates PDF reports, stores them in a staging table, combines certain PDFs, and uploads the resulting files to FilePost, an external file-sharing service.
The client invokes a Five server function named BuildEmailAttachmentsServer using:
five.executeFunction(
'BuildEmailAttachmentsServer',
parms,
null,
'',
'',
function(serverResult) {
// Process server response
}
);
The server function performs the PDF processing and uploads synchronously, returning the results after all uploads are complete.
What I’m observing
The process makes it successfully up to the BuildEmailAttachmentsServer step, and that is where it always terminates with a memory error and a blank message.
I added diagnostic logging immediately before the client’s five.executeFunction() call and at the beginning of the server function.
On October 21, 2026, the logs showed:
| Time (Pacific) | Event |
|---|---|
| 2:25:45 PM | Client initiates BuildEmailAttachmentsServer |
| 2:25:46 PM | First server execution starts |
| 2:26:46 PM | Second server execution starts |
| 2:27:47 PM | Third server execution starts |
There is only one client CALL log entry, but three server START entries.
All three server executions use the same BatchKey:
bd3b2e5c-4c36-4d65-9375-55101e3a9567
They also use the same EmailType (BOARD).
The server executions overlap
This is the most concerning part.
The original server execution continues processing and uploading PDFs even after the second and third executions have started.
For example:
-
2:25:46 — First execution starts.
-
2:26:31 — First execution uploads GroupRoster Part 1.
-
2:26:46 — Second execution starts.
-
2:27:03 — First execution uploads GroupRoster Part 2.
-
2:27:30 — Second execution uploads its own GroupRoster Part 1.
-
2:27:47 — Third execution starts.
-
2:28:27 — First execution uploads GroupRoster Part 5.
Each execution starts processing the same reports from the beginning.
The resulting files have different FilePost IDs, confirming that these are actual duplicate uploads rather than duplicated log messages.
Eventually, the process fails with what appears to be a memory-related error. I suspect the overlapping executions are contributing significantly to the memory consumption.
Questions (bold ones seem to be more important)
1. Does Five automatically retry a five.executeFunction() request when a server function has not returned after approximately 60 seconds?
- Is there a documented 60-second timeout or execution limit for server functions?
3. If a request times out, why does the original server execution continue running while another execution starts?
- Is there a way to disable automatic retries or configure the timeout?
5. Is this expected behavior, or could it indicate an issue in Five’s request-handling infrastructure?
- What is Five’s recommended approach for preventing duplicate execution of long-running server functions that perform external operations?
Additional information
I’ve reviewed the client-side call chain and found no explicit retry logic. Diagnostic logging shows only one client invocation for the affected batch.
This workflow previously completed successfully, including processing all selected groups and uploading the combined PDFs to FilePost.
I can provide the complete timestamped logs and the relevant client and server functions if that would help your investigation.
I’d appreciate your assistance in determining why the repeated executions are happening. I can supply the inspector logs if necessary. They definitely contain only one client call to the server function, but 3 different invocations of the server function.