Name
sn_app_insights.SlowPatternToScriptsMappingCreator
Description
No description available
Script
var SlowPatternToScriptsMappingCreator = Class.create();
SlowPatternToScriptsMappingCreator.prototype = {
initialize: function() {
},
createMappingsIfNeeded: function (sysPatternTable) {
var cutOffTimeInMins = gs.getProperty('glide.app_insights.slow_pattern.mapping_generation_cutoff_mins', 0);
var lastCreated = this._mappingLastCreated(sysPatternTable);
var cutOff = new GlideDateTime();
cutOff.add(-1 * cutOffTimeInMins * 60 * 1000);
//skip mapping creation if we already checked for new slow patterns in the last x minutes, where x is set by the above property
if (lastCreated && lastCreated.after(cutOff) && cutOffTimeInMins > 0)
return;
var slowPatternGr = new GlideRecord(sysPatternTable);
/**
* - lastCreated is before cutOff
* - cutOff not defined(value <= 0 mean not defined)
* x if the there's no lastCreated, that means this is the first time ever querying
*/
if (lastCreated)
slowPatternGr.addQuery('sys_created_on', '>=', lastCreated);
slowPatternGr.query();
var mappingGr;
while (slowPatternGr.next()) {
var scriptsInStack = new sn_app_insights.StackTraceParser()
.getScriptsInStack(slowPatternGr.getValue('stack_trace'));
for (var scriptId in scriptsInStack) {
mappingGr = new GlideRecord("sn_app_insights_slow_patterns_to_scripts_mapping");
mappingGr.script_source = scriptId;
mappingGr.script_source_table = scriptsInStack[scriptId].table;
mappingGr.slow_pattern = slowPatternGr.sys_id;
mappingGr.slow_pattern_type = slowPatternGr.sys_class_name;
mappingGr.calling_order = scriptsInStack[scriptId].calling_order;
mappingGr.insert();
}
}
},
_mappingLastCreated: function(sysPatternTable) {
var slowPatternAggGr = new GlideAggregate("sn_app_insights_slow_patterns_to_scripts_mapping");
slowPatternAggGr.setGroup(false);
slowPatternAggGr.addAggregate('MAX', 'sys_created_on');
if (sysPatternTable === 'sys_script_pattern' || sysPatternTable === 'sys_query_pattern')
slowPatternAggGr.addQuery("slow_pattern_type", sysPatternTable);
slowPatternAggGr.query();
if (slowPatternAggGr.next() && !gs.nil(slowPatternAggGr.getAggregate('MAX', 'sys_created_on')))
return new GlideDateTime(slowPatternAggGr.getAggregate('MAX', 'sys_created_on'));
},
create: function() {
this.createMappingsIfNeeded("sys_query_pattern");
this.createMappingsIfNeeded("sys_script_pattern");
},
type: 'SlowPatternToScriptsMappingCreator'
};
Sys ID
cd86ed7a530030102e10ddeeff7b1258