Uploaded image for project: 'Bamboo Data Center'
  1. Bamboo Data Center
  2. BAM-13643

Bamboo deployment dashboard slow when displaying many deployment projects

    XMLWordPrintable

Details

    Description

      Running 66 deployment projects noticeably slows down Bamboo's dashboard. The slowness is mostly coming from line 46774 of the batch.js file:

      (function(){function i(e){return n.isArray(e)?n.reduce(e,function(e,t){return e[t]=null,e},{}):e}function s(e,t){if(!e||t==null)return t;if(typeof e=="string"||e instanceof String){if(typeof t!=""+e)throw"The typeof "+t+" is "+typeof t+" but expected it to be "+e;return t}if(n.isArray(e)||e===Array){if(!u(t))throw"Array type expected, but nonnull, non-Array value provided.";return e===Array||!e[0]?t:n.map(t,n.bind(s,null,e[0]))}if(typeof e!="function")throw"Invalid expected type "+e+". Should be falsy, String, Array, Backbone.Collection constructor, or function.";return t instanceof e?t:o(e)?new e(s([e.model],t)):new e(t)}function o(e,t){return e&&(e.__super__ instanceof(t||r.Collection)||e.__super__===(t||r.Collection).prototype||e===(t||r.Collection))}function u(e){return n.has(e,"length")&&!(e instanceof String||n.has({string:1,"function":1},typeof e)||e instanceof r.Collection)}function a(e,t){var r={};return n.each(e,function(e,n){if(!!t[n]&&!f(e,t[n])){if(!e||f(t[n],e))return;throw n+" has conflicted type descriptors."}r[n]=e}),r}function f(e,t){return!t||t===e?!0:!e||typeof e=="string"?!1:e instanceof Array?t===Array||t instanceof Array&&f(e[0],t[0]):typeof t!="function"?!1:o(t)?o(e,t):e.prototype instanceof t}function l(e){return n.isObject(e)?n.reduce(e,function(e,t,r){return t&&n.isFunction(t.toJSON)?e[r]=t.toJSON():n.isArray(t)&&(e[r]=n.map(t,function(e){return e&&n.isFunction(e.toJSON)?e.toJSON():e})),e},e):e}function c(e){return function(){var n=e.call(this);return l(n)}}function h(e){return function r(s,o){var u,a=n.extend({},s),f;return s&&s.mixins&&(f=s.mixins,delete a.mixins),u=e.call(this,a,o),this.prototype.namedEvents&&t.Mixins.applyMixin(u,{namedEvents:this.prototype.namedEvents}),this.prototype.namedAttributes&&t.Mixins.applyMixin(u,{namedAttributes:this.prototype.namedAttributes}),f&&n.each(s.mixins,function(e){t.Mixins.applyMixin(u,e)}),u.prototype.namedEvents&&t.Mixins.applyMixin(u,t.EventsMixinCreator.create(u.prototype.namedEvents)),u.prototype.namedAttributes&&(u.prototype.namedAttributes=i(u.prototype.namedAttributes),t.Mixins.applyMixin(u,t.AttributesMixinCreator.create(u.prototype.namedAttributes))),u.prototype.toJSON&&(u.prototype.toJSON=c(u.prototype.toJSON)),u.extend=r,u}}function p(e,t){var r=e.prototype,i=t.prototype,o=r.set;i.set=function(e,t,r){var i,u=this.namedAttributes;if(!u||e==null)return o.apply(this,arguments);n.isObject(e)?(i=n.clone(e),r=t):(i={},i[e]=t);for(var a in i){if(!n.has(i,a))continue;if(!n.has(u,a))throw"Attribute '"+a+"' does not exist";i[a]=s(u[a],i[a])}return o.call(this,i,r)};var u=r.get;i.get=function(e){if(this.namedAttributes&&!n.has(this.namedAttributes,e))throw"Attribute '"+e+"' does not exist";return u.apply(this,arguments)}}function d(e){var t=e.extend(),n=e.extend;return t.extend=h(n),t}function v(e){var t=d(e);return p(e,t),t}var e=this,t;typeof exports!="undefined"?t=exports:t=e.Brace={};var n=e._;!n&&typeof require!="undefined"&&(n=require("underscore"));var r=e.Backbone;!r&&typeof require!="undefined"&&(r=require("backbone")),t.Mixins={createMethodName:function(e,t){return e+t.charAt(0).toUpperCase()+t.substr(1)},applyMixin:function(e,t){n.forEach(n.keys(t),function(r){var s=e.prototype;if("initialize"===r){var o=s.initialize;s.initialize=function(){o&&o.apply(this,arguments),t.initialize.apply(this,arguments)};return}if("validate"===r){var u=s.validate;s.validate=function(){if(u){var e=u.apply(this,arguments);if(e)return e}return t.validate.apply(this,arguments)};return}if("defaults"===r){var f=s.defaults||(s.defaults={}),l=t[r];for(var c in l){if(f.hasOwnProperty(c))throw"Mixin error: class already has default '"+c+"' defined";f[c]=l[c]}return}if("namedAttributes"===r){var h=i(s.namedAttributes)||{},p=i(t[r]);s.namedAttributes=n.extend(h,a(p,h));return}if("namedEvents"===r){if(!n.isArray(t[r]))throw"Expects events member on mixin to be an array";s.namedEvents||(s.namedEvents=[]),s.namedEvents=n.uniq(s.namedEvents.concat(t[r]));return}if(s.hasOwnProperty(r))throw"Mixin error: class already has property '"+r+"' defined";s[r]=t[r]},this)}},t.AttributesMixinCreator={create:function(e){var r={};return e||(e={}),n.has(e,"id")||(e.id=null),n.each(e,function(e,n){var i=t.Mixins.createMethodName("set",n);r[i]=function(e,t){return this.set(n,e,t)};var s=t.Mixins.createMethodName("get",n);r[s]=function(){return this.get(n)}}),r},ensureType:s},t.EventsMixinCreator={create:function(e){var r={},i=function(e){var i=t.Mixins.createMethodName("on",e);r[i]=function(){return this.on.apply(this,[e].concat(n.toArray(arguments)))};var s=t.Mixins.createMethodName("trigger",e);r[s]=function(){return this.trigger.apply(this,[e].concat(n.toArray(arguments)))}};return n.each(e,n.bind(i,this)),r}},t.Model=v(r.Model),t.Collection=d(r.Collection),t.View=d(r.View),t.Router=d(r.Router)})();
      

      Attachments

        Issue Links

          Activity

            People

              don.willis@atlassian.com Don Willis
              akhachatryan ArmenA
              Votes:
              7 Vote for this issue
              Watchers:
              17 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: