Release r202627
What's new
This release is centered around maintenance and stability improvements. It contains the following major changes:
- Improved lock functions
- More accurate status indicators in transfer assistant
- Auto-retry works for all accounts
- Improved handling of rate limits
Improved lock functions
The lock functions make sure that only one package execution at a time runs a specific part of a script. They have been reimplemented, which removes two important limitations:
- A lock no longer expires after 10 seconds. It is held until it is released with
lock_release, or until the package execution that holds it ends. Previously, a lock older than 10 seconds could lead to parallel execution, and a waitinglock_requestfailed after 10 seconds. A waiting execution now simply waits until the lock is released. - Lock names can now be up to 100 characters long, instead of 10, and there are no longer any syntax restrictions.
The longer names make it possible to lock a specific record instead of a whole part of the script. For example, to avoid that two executions create the same request in an external system, while executions for other requests continue in parallel:
const lock = lock_request(`create_request_${request.id}`);
// ... process request ...
lock_release(lock);
The deprecated refresh_lock function no longer does anything and can be removed from your packages.
More accurate status indicators in transfer assistant
The transfer assistant could mark an item as a conflict, even though it was identical in the source and target environment. This happened, for example, after manually making the same change in both environments.
Items with identical content in both environments are now always marked as identical. When this is released, the version status of existing items will also be migrated.

Auto-retry works for all accounts
Auto-retry now works for all accounts, regardless of their authentication type. Previously, auto-retry was not applied to accounts that connected to external systems via, for example basic authentication or no credentials. See Auto-retry for API calls for more information.
Improved handling of rate limits
The automator runs on multiple servers, which until now each managed their own queues of calls to external systems. These queues are now coordinated across all servers. This means that calls using the same credentials stay within the rate limits of the external system, and once a rate limit is hit, all servers wait until it has passed. For Xurrent, the overall number of calls per second is also limited, to stay under the rate limits Xurrent applies per IP address.
For our customers this change should mostly go unnoticed. The external systems the automator connects to will see fewer calls hitting their rate limiters, and fewer attempts to reach resources that are currently rate limited.
Other changes
This release contains the following smaller changes:
momentnow logs a warning in the package log when it receives a string that is not an ISO 8601 or RFC 2822 date. Such a string is either parsed with the unreliable JavaScriptDatefallback, or results in an invalid date.- Deleting an account, webhook, service, schedule or inbound email configuration now also removes the package triggers that use it.
sendMailnow throws an error when the specified outbound email configuration does not exist or is disabled. Previously, it silently used the default configuration instead. The default configuration is now only used when no configuration is specified.- When an API call is paused by a rate limit again after a retry, a new warning is now shown in the package log. Previously, only the first pause of a call was logged.
- The list of HTTP response status codes that are auto-retried has been tightened up for client errors in the 4xx range. Previously, only 400, 401, 404 and 422 were not retried. Now, none of the errors in the 4xx range are auto-retried, except 408, 425 and 429.
Timeline
The expected deployment dates for this release are:
| Environment | Date |
|---|---|
| Demo | Friday, October 9 |
| Production | Tuesday, October 13 |
The deployment to the Production environment will be conducted outside of office hours (Central European Time Zone), usually between 8 and 10pm.