In some situations, an automation will go into a locked state and will not come out of the locked state for an excessive amount of time. This article aims to assist customers with providing customers some of the common causes, as well as steps to gather needed information to provide to support for further troubleshooting.
This can be caused due to a number of reasons, and it isn't possible to always determine the cause without additional investigation.
Below are links to articles for some known causes with their solutions
Version(s) Affected |
Description |
3.0.x.x | Syncing fails and automation getting locked when Workflow Transitions are enabled for Status field |
3.2.0.1 | Locks when processing comments with URLs and large amounts of text |
If the above articles do not pertain to your situation or do not resolve your issue, it will be necessary to gather additional details for the support team to investigate.
There are three key pieces of information that will need to be gathered while the automation is locked
Support may request the above steps be done each time your automation is locked.
After this has been gathered, you may unlock the automation, and then there will be an additional set of thread dumps to gather for a baseline of the properly running automation in your environment
While the automation is locked, we need 3 separate thread dumps against the core service separated by approximately 5 minutes. There are a number of ways to get thread dumps, however we have a method outlined in the following KB article:
https://knowledge.broadcom.com/external/article?articleId=280280
Access your database server and open a SQL console scoped to your ConnectALL database
Run the following SQL query, replacing <Automation Name> with the automation that is locked
SELECT application_link_id,application_lock_status, source_app_lock_status,dest_app_lock_status, processing_count, active_poll_id
FROM application_link
WHERE application_link_name='<Automation Name>';
Sample Output+---------------------+------------------+
| application_link_id | processing_count |
+---------------------+------------------+
| 10 | 270 |
+---------------------+------------------+
Take the application_link_id value and use it in the following query:
MySQLSELECT poll_details_id, FROM_UNIXTIME(polled_time/1000), FROM_UNIXTIME(completed_time/1000) FROM poll_details
WHERE application_link_id=<active_poll_id>
ORDER BY completed_time DESC;
Microsoft SQLSELECT poll_details_id, DATEADD(S, polled_time, '1970-01-01'), DATEADD(S, completed_time, '1970-01-01')
FROM poll_details
WHERE application_link_id=<active_poll_id
>
ORDER BY completed_time DESC;
PostgreSQLSELECT poll_details_id, to_char(to_timestamp(polled_time/1000),'YYYY-MM-DD HH24:MI:SS') as polled_time,
to_char(to_timestamp(completed_time/1000),'YYYY-MM-DD HH24:MI:SS') as completed_time
FROM poll_details WHERE application_link_id=<
active_poll_id
>
ORDER BY completed_time DESC;
Sample Output+--------------------------------------+---------------------------------+------------------------------------+
| poll_details_id | FROM_UNIXTIME(polled_time/1000) | FROM_UNIXTIME(completed_time/1000) |
+--------------------------------------+---------------------------------+------------------------------------+
| aaaaaaaa-0000-0000-aaaa-000000000000 | 2024-04-26 15:16:03.8810 | 2024-04-26 15:16:10.9540 |
| bbbbbbbb-1111-1111-bbbb-111111111111 | 2024-04-25 20:39:21.8160 | 2024-04-25 20:39:26.6520 |
| cccccccc-2222-2222-cccc-222222222222 | 2024-04-25 20:36:07.7180 | 2024-04-25 20:36:11.1290 |
+--------------------------------------+---------------------------------+------------------------------------+
Take the top poll_details_id and use it in the following query:
SELECT COUNT(*)
FROM record_transaction_details
WHERE poll_id='<poll_details_id>';
Sample Output
+----------+
| COUNT(*) |
+----------+
| 2 |
+----------+
Finally run the following query, using the poll_details_id from above:
MySQLSELECT record_transaction_id, record_id, record_status, FROM_UNIXTIME(created_on/1000)
FROM record_transaction_details
WHERE poll_id='<poll_details_id>'
ORDER BY created_on ASC;
Microsoft SQLSELECT record_transaction_id, record_id, record_status, DATEADD(S, created_on, '1970-01-01')
FROM record_transaction_details
WHERE poll_id='<poll_details_id>'
ORDER BY created_on ASC;
PostgreSQLSELECT record_transaction_id, record_id, record_status, to_char(to_timestamp(created_on/1000),'YYYY-MM-DD HH24:MI:SS') as created_on
FROM record_transaction_details
WHERE poll_id='<poll_details_id>'
ORDER BY created_on ASC;
Sample Output
+--------------------------------------+-----------+---------------+--------------------------------+
| record_transaction_id | record_id | record_status | FROM_UNIXTIME(created_on/1000) |
+--------------------------------------+-----------+---------------+--------------------------------+
| a0a0a0a0-a0a0-a0a0-a0a0-a0a0a0a0a0a0 | <ID> | PASSED | 2024-04-26 15:16:04.6010 |
| b1b1b1b1-b1b1-b1b1-b1b1-b1b1b1b1b1b1 | <ID> | PASSED | 2024-04-26 15:16:04.7940 |
+--------------------------------------+-----------+---------------+--------------------------------+
Take all of the output from the above queries and supply it to support
At this point, you may unlock the automation by clicking on the lock icon for the automation on your Dashboard page
If the automation does not unlock, it may be necessary to restart your Core service.
Once your automation is back to processing normally, please gather three additional thread dumps as performed above and provide this to support. This will be a baseline for a properly working automation so that we can compare with a locked state and only needs to be done once.