Script: Find stuck events (claimed by unavailable nodes)
Import
·
May 25, 2022
·
article
The following script determines and returns whether there are events stuck -- meaning they were claimed by a node which, for whatever reason, is unavailable at the moment -- thus, event won't be processed.
How to use:
- Execute as a background script / fix script
(function () {
var gaEvent = new GlideAggregate('sysevent');
gaEvent.addAggregate('COUNT', 'claimed_by');
gaEvent.addQuery('state', '!=', 'processed');
gaEvent.addQuery('state', '!=', 'error');
gaEvent.addQuery('state', '!=', 'transferred');
gaEvent.addNotNullQuery('claimed_by');
gaEvent.query();
while (gaEvent.next()) {
var node = gaEvent.getValue('claimed_by');
var count = gaEvent.getAggregate('COUNT', 'claimed_by');
var grNode = new GlideRecord('sys_cluster_state');
grNode.addQuery('status', 'online');
grNode.addQuery('system_id', node);
grNode.query();
grNode.hasNext() ?
gs.log('No stuck events found') :
gs.log('Unavailable node: ' + node + ' is claiming ' + count + ' events', 'stuck_event');
}
})();
Disclaimer: Please, always test the script in non-productive environments before running in a productive instance. Script was reviewed at the creation time but may break/get unexpected results due to instance versioning and SN API upgrades.
View original source
https://www.servicenow.com/community/now-platform-articles/script-find-stuck-events-claimed-by-unavailable-nodes/ta-p/2314682