Built something you're proud of? Tell the story. A quick G2 review of App Engine or Build Agent helps other developers see what's possible on ServiceNow. Share your experience.

Alex240
Giga Expert

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:

  1. 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.

Version history
Last update:
‎05-25-2022 01:49 PM
Updated by: