Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/22/13 15:29:15 (11 years ago)
Author:
fschoepp
Message:

#1888:
HL:

  • Web projects requires different users to interact with hive. The singleton HiveServiceLocator.Instance doesn't allow different users at the same time, resulting in serialization during access of HiveClient methods.

The following changes have been introduced in favor of a parallel use of the HL libs:

  • HiveClient, TaskDownloader and ConcurrentTaskDownloader may now use a different IHiveServiceLocator than HiveServiceLocator.Instance (all methods have appropriate overloads now).
  • The default instance is still HiveServiceLocator.Instance.

Automated Scaling of Instances:

  • Added Scaler project to solution which represents a WorkerRole that scales the slave instances based on the global cpu utilization of all slaves.
  • Scaler is based on WASABi, rules can be adjusted in rulesstore.xml. Basic rule is: if < 45% global cpu utilization => remove an instance; if > 65% cpu => add an instance. Minimum boundary is 1 and maximum boundary is 8 slave instances.
  • Adjusted Slave project to automatically register itself to a SlaveGroup during WebRole startup (can be adjusted in service configuration).

Web-Frontend:

  • Added basic error messages to the dialogs when an ajax call fails.
  • Removed Styling.js from scripts.
Location:
branches/OaaS/HeuristicLab.Services.Optimization.Web
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • branches/OaaS/HeuristicLab.Services.Optimization.Web/Content/experiment.controller.js

    r9335 r9508  
    3636            loadingDialog.render();
    3737            // send experiment to server
    38             experimentModel.save({}, { success: function () {
    39                 loadingDialog.setLoading(false);
    40                 loadingDialog.text('Experiment successfully saved!');
    41                 loadingDialog.render();
    42                 if (availableExperiments)
    43                     availableExperiments.fetch({ cache: false, success: function (itm) {
    44                         selectableGroup.render();
    45                     }
    46                     });
    47             }
     38            experimentModel.save({}, {
     39                success: function () {
     40                    loadingDialog.setLoading(false);
     41                    loadingDialog.text('Experiment successfully saved!');
     42                    loadingDialog.render();
     43                    if (availableExperiments)
     44                        availableExperiments.fetch({ cache: false, success: function (itm) {
     45                            selectableGroup.render();
     46                        }
     47                        });
     48                },
     49                error: function (model, response, options) {
     50                    loadingDialog.setLoading(false);
     51                    loadingDialog.text('Failed to save Experiment - Please log off an and on and try again!');
     52                    loadingDialog.render();
     53                }
    4854            });
    4955            //loadingDialog.close();
  • branches/OaaS/HeuristicLab.Services.Optimization.Web/Content/experiment.view.js

    r9350 r9508  
    816816        },
    817817        render: function () {
     818            if (this.model.models.length == 0)
     819                return;
     820
    818821            var self = this;
    819822            var ele = $(_.template($('#runcollection_template').html(), {}));
     
    10391042                } else {
    10401043                    var valueProvider = _.find(this.model.models[i].get('results'), function (itm) { return itm.Name == self.bubbleSelect.val(); });
    1041                     if (!valueProvider) 
     1044                    if (!valueProvider)
    10421045                        valueProvider = _.find(this.model.models[i].get('params'), function (itm) { return itm.Name == self.bubbleSelect.val(); });
    10431046
    1044                     if (!valueProvider) {                       
     1047                    if (!valueProvider) {
    10451048                        size = this.options.bubbleSize;
    10461049                    } else {
  • branches/OaaS/HeuristicLab.Services.Optimization.Web/Content/job.controller.js

    r9395 r9508  
    22    my.JobVisualExtensionListener = function (model, element) {
    33        var extension = new OAAS_MODEL.VisualExtension({ id: model.get('algorithmName') });
    4         extension.fetch({ cache: true, success: function () {
    5             //eval extension.js -> execute addVisualExtension(model, element):
    6             var js = extension.get('ScenarioJs');
    7             if (js != null) {
    8                 (function (model, element) {
    9                     addExtension = undefined;
    10                     eval(js);
    11                     if (addExtension)
    12                         addExtension(model, element);
    13                 } (model, element));
     4        extension.fetch({ cache: true,
     5            success: function () {
     6                //eval extension.js -> execute addVisualExtension(model, element):
     7                var js = extension.get('ScenarioJs');
     8                if (js != null) {
     9                    (function (model, element) {
     10                        addExtension = undefined;
     11                        eval(js);
     12                        if (addExtension)
     13                            addExtension(model, element);
     14                    } (model, element));
     15                }
     16            },
     17            error: function (model, response, options) {
     18               
    1419            }
    15         }
    1620        });
    1721    },
     
    3539                var lv = new OAAS_VIEW.LoadingView({ el: $('#jobDetails'), model: 'Loading results of job...' });
    3640                lv.render();
    37                 runList.fetch({ cache: false, success: function () {
    38                     $('#jobDetails').empty();
    39                     var div = $('<div/>').appendTo($('#jobDetails'));
    40                     var rv = new OAAS_VIEW.ResultView({ model: runList, el: div });
    41                     listener.listenTo(rv, 'renderVisualExtension', my.JobVisualExtensionListener);
    42                     rv.render();
    43                     var av = new OAAS_VIEW.AccordionView({ el: div });
    44                     av.render();
    45                 }
     41                runList.fetch({ cache: false,
     42                    success: function () {
     43                        $('#jobDetails').empty();
     44                        var div = $('<div/>').appendTo($('#jobDetails'));
     45                        if (runList.models && runList.models.length == 0) {
     46                            $('<p/>').text('No job results available!').appendTo(div);
     47                            return;
     48                        }
     49                        // else draw the result view
     50                        var rv = new OAAS_VIEW.ResultView({ model: runList, el: div });
     51                        listener.listenTo(rv, 'renderVisualExtension', my.JobVisualExtensionListener);
     52                        rv.render();
     53                        var av = new OAAS_VIEW.AccordionView({ el: div });
     54                        av.render();
     55                    },
     56                    error: function (model, response, options) {
     57                        $('#jobDetails').empty();
     58                        var lv = new OAAS_VIEW.LoadingView({ el: $('#jobDetails'), model: 'Error during retrieval!' });
     59                        lv.render();
     60                    }
    4661                });
    4762            });
  • branches/OaaS/HeuristicLab.Services.Optimization.Web/HeuristicLab.Services.Optimization.Web.csproj

    r9370 r9508  
    120120    <Content Include="Content\experiment.view.js" />
    121121    <Content Include="Content\ExperimentSupport.js" />
    122     <Compile Include="Binders\AlgorithmJsonAttribute.cs" />
     122    <Compile Include="Binders\ExperimentJsonAttribute.cs" />
    123123    <Compile Include="Controllers\AccountController.cs" />
    124124    <Compile Include="Controllers\AdminController.cs" />
  • branches/OaaS/HeuristicLab.Services.Optimization.Web/Views/Shared/_Layout.cshtml

    r9335 r9508  
    1313    <script src="@Url.Content("~/Scripts/jquery-ui-1.9.2.min.js")" type="text/javascript"></script>
    1414    <script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
    15     <script src="@Url.Content("~/Content/Styling.js")" type="text/javascript"></script>
    1615
    1716    <!--[if lt IE 9]><script language="javascript" type="text/javascript" src="/Content/jqplot/src/excanvas.js"></script><![endif]-->
Note: See TracChangeset for help on using the changeset viewer.