diff --git a/client/galaxy/scripts/components/HistoryView.vue b/client/galaxy/scripts/components/HistoryView.vue
index 77079b2f5ef..999632663fd 100644
--- a/client/galaxy/scripts/components/HistoryView.vue
+++ b/client/galaxy/scripts/components/HistoryView.vue
@@ -6,7 +6,7 @@
-
+
diff --git a/client/galaxy/scripts/mvc/history/history-contents.js b/client/galaxy/scripts/mvc/history/history-contents.js
index 538ea914e06..65052d2c667 100644
--- a/client/galaxy/scripts/mvc/history/history-contents.js
+++ b/client/galaxy/scripts/mvc/history/history-contents.js
@@ -35,9 +35,6 @@ var HistoryContents = _super.extend(BASE_MVC.LoggableMixin).extend({
/** @type {String} order used here and when fetching from server */
order: "hid",
- /** root api url */
- urlRoot: `${Galaxy.root}api/histories`,
-
/** complete api url */
url: function() {
return `${this.urlRoot}/${this.historyId}/contents`;
@@ -50,6 +47,7 @@ var HistoryContents = _super.extend(BASE_MVC.LoggableMixin).extend({
});
options = options || {};
+ this.urlRoot = `${Galaxy.root}api/histories`;
_super.prototype.initialize.call(this, models, options);
this.history = options.history || null;
diff --git a/client/galaxy/scripts/mvc/tours.js b/client/galaxy/scripts/mvc/tours.js
index 5eb8fedafec..591bdf7dad1 100644
--- a/client/galaxy/scripts/mvc/tours.js
+++ b/client/galaxy/scripts/mvc/tours.js
@@ -47,7 +47,7 @@ const TOURPAGE_TEMPLATE = `
- <%- tour.attributes.description || "No description given." %>
<% _.each(tour.attributes.tags, function(tag) { %>
-
+
<%- tag.charAt(0).toUpperCase() + tag.slice(1) %>
<% }); %>
diff --git a/client/galaxy/style/scss/base.scss b/client/galaxy/style/scss/base.scss
index e30091aba23..deb7b84cc03 100644
--- a/client/galaxy/style/scss/base.scss
+++ b/client/galaxy/style/scss/base.scss
@@ -1127,18 +1127,14 @@ div.odd_row {
// Tool panel stuff
// Extra label colors
-.label-beta {
+.badge-beta {
@extend .badge-warning;
}
-.label-new {
+.badge-new {
@extend .badge-info;
}
-.sm-label-pad {
- margin-right: 2px;
-}
-
span.toolParameterExpandableCollapsable {
font-weight: bold;
cursor: pointer;
@@ -1289,6 +1285,19 @@ a.action-button {
vertical-align: middle;
}
+.btn-xs {
+ // The 'new' bootstrap 4 btn-sm is about the same size as the old btn-xs,
+ // should serve as a replacement for anything expecting this.
+ @extend .btn-sm;
+}
+
+.btn-default {
+ // A hopefully temporary alias (as with above) to provide backwards
+ // compatibility for external stuff using .btn-default, which is now
+ // .btn-secondary.
+ @extend .btn-secondary;
+}
+
//.action-button > * {
// vertical-align: middle;
//}
diff --git a/lib/galaxy/jobs/handler.py b/lib/galaxy/jobs/handler.py
index 905e8503755..114af0d5aab 100644
--- a/lib/galaxy/jobs/handler.py
+++ b/lib/galaxy/jobs/handler.py
@@ -214,6 +214,9 @@ class JobHandlerQueue(Monitors):
self.__monitor_step()
except Exception:
log.exception("Exception in monitor_step")
+ # With sqlite backends we can run into locked databases occasionally
+ # To avoid that the monitor step locks again we backoff a little longer.
+ self._monitor_sleep(5)
self._monitor_sleep(1)
def __monitor_step(self):
diff --git a/lib/galaxy/jobs/runners/slurm.py b/lib/galaxy/jobs/runners/slurm.py
index c4c38163f9a..5c7856f1dfc 100644
--- a/lib/galaxy/jobs/runners/slurm.py
+++ b/lib/galaxy/jobs/runners/slurm.py
@@ -3,7 +3,10 @@ SLURM job control via the DRMAA API.
"""
import logging
import os
+import re
+import shutil
import subprocess
+import tempfile
import time
from galaxy import model
@@ -25,6 +28,7 @@ SLURM_MEMORY_LIMIT_EXCEEDED_MSG = 'slurmstepd: error: Exceeded job memory limit'
SLURM_MEMORY_LIMIT_EXCEEDED_PARTIAL_WARNINGS = [': Exceeded job memory limit at some point.',
': Exceeded step memory limit at some point.']
SLURM_MEMORY_LIMIT_SCAN_SIZE = 16 * 1024 * 1024 # 16MB
+SLURM_UNABLE_TO_ADD_TASK_TO_MEMORY_CG_MSG_RE = re.compile(r"""slurmstepd: error: task/cgroup: unable to add task\[pid=\d+\] to memory cg '\(null\)'$""")
# These messages are returned to the user
OUT_OF_MEMORY_MSG = 'This job was terminated because it used more memory than it was allocated.'
@@ -149,6 +153,14 @@ class SlurmJobRunner(DRMAAJobRunner):
self.work_queue.put((self.fail_job, ajs))
return
if drmaa_state == self.drmaa_job_states.DONE:
+ with open(ajs.error_file, 'r') as rfh:
+ first_line = rfh.readline()
+ if SLURM_UNABLE_TO_ADD_TASK_TO_MEMORY_CG_MSG_RE.match(first_line):
+ with tempfile.NamedTemporaryFile('w', delete=False) as wfh:
+ shutil.copyfileobj(rfh, wfh)
+ wf_name = wfh.name
+ shutil.move(wf_name, ajs.error_file)
+ log.debug('(%s/%s) Job completed, removing SLURM spurious warning: "%s"', ajs.job_wrapper.get_id_tag(), ajs.job_id, first_line)
with open(ajs.error_file, 'r+') as f:
if os.path.getsize(ajs.error_file) > SLURM_MEMORY_LIMIT_SCAN_SIZE:
f.seek(-SLURM_MEMORY_LIMIT_SCAN_SIZE, os.SEEK_END)
diff --git a/scripts/grt/grt.yml.sample b/scripts/grt/grt.yml.sample
index ff67c01f9e6..8c9456f11ce 100644
--- a/scripts/grt/grt.yml.sample
+++ b/scripts/grt/grt.yml.sample
@@ -1,11 +1,13 @@
grt:
- # Go to https://telescope.galaxyproject.org to obtain an Instance ID and API key
+ # Register at https://telescope.galaxyproject.org to obtain an Instance ID and API key
instance_id:
api_key:
+
# Galaxy Project offers a public galactic-radio-telescope instance, however
# you are free to run your own if you need. We would love it if you were
# willing and able to contribute your data publicly.
- url: http://localhost:8080
+ url: https://telescope.galaxyproject.org/grt-admin/
+
# Are you willing to share your toolbox? I.e. what tools are installed.
# If your instance is public, this can help us direct users to your
# instance. If you elect to not send your entire toolbox, we will still
diff --git a/static/style/blue/base.css b/static/style/blue/base.css
index 5f8f9dc68bf..3a411b43f56 100644
--- a/static/style/blue/base.css
+++ b/static/style/blue/base.css
@@ -1736,45 +1736,47 @@ button.btn-primary {
box-shadow: 0 0 0 0.2rem rgba(37, 83, 123, 0.5); }
.btn-secondary, input[type="submit"],
-button, .action-button, .menubutton {
+button, .action-button, .btn-default, .menubutton {
color: #212529;
background-color: #dee2e6;
border-color: #dee2e6; }
.btn-secondary:hover, input[type="submit"]:hover,
- button:hover, .action-button:hover, .menubutton:hover {
+ button:hover, .action-button:hover, .btn-default:hover, .menubutton:hover {
color: #212529;
background-color: #c8cfd6;
border-color: #c1c9d0; }
.btn-secondary:focus, input[type="submit"]:focus,
- button:focus, .action-button:focus, .menubutton:focus, .btn-secondary.focus, input.focus[type="submit"],
- button.focus, .focus.action-button, .focus.menubutton {
+ button:focus, .action-button:focus, .btn-default:focus, .menubutton:focus, .btn-secondary.focus, input.focus[type="submit"],
+ button.focus, .focus.action-button, .focus.btn-default, .focus.menubutton {
box-shadow: 0 0 0 0.2rem rgba(222, 226, 230, 0.5); }
.btn-secondary.disabled, input.disabled[type="submit"],
- button.disabled, .disabled.action-button, .disabled.menubutton, .btn-secondary:disabled, input[type="submit"]:disabled,
- button:disabled, .action-button:disabled, .menubutton:disabled {
+ button.disabled, .disabled.action-button, .disabled.btn-default, .disabled.menubutton, .btn-secondary:disabled, input[type="submit"]:disabled,
+ button:disabled, .action-button:disabled, .btn-default:disabled, .menubutton:disabled {
color: #212529;
background-color: #dee2e6;
border-color: #dee2e6; }
.btn-secondary:not(:disabled):not(.disabled):active, input[type="submit"]:not(:disabled):not(.disabled):active,
- button:not(:disabled):not(.disabled):active, .action-button:not(:disabled):not(.disabled):active, .menubutton:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active, input[type="submit"]:not(:disabled):not(.disabled).active,
- button:not(:disabled):not(.disabled).active, .action-button:not(:disabled):not(.disabled).active, .menubutton:not(:disabled):not(.disabled).active,
+ button:not(:disabled):not(.disabled):active, .action-button:not(:disabled):not(.disabled):active, .btn-default:not(:disabled):not(.disabled):active, .menubutton:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active, input[type="submit"]:not(:disabled):not(.disabled).active,
+ button:not(:disabled):not(.disabled).active, .action-button:not(:disabled):not(.disabled).active, .btn-default:not(:disabled):not(.disabled).active, .menubutton:not(:disabled):not(.disabled).active,
.show > .btn-secondary.dropdown-toggle,
.show > input.dropdown-toggle[type="submit"],
.show >
button.dropdown-toggle,
.show > .dropdown-toggle.action-button,
+ .show > .dropdown-toggle.btn-default,
.show > .dropdown-toggle.menubutton {
color: #212529;
background-color: #c1c9d0;
border-color: #bac2cb; }
.btn-secondary:not(:disabled):not(.disabled):active:focus, input[type="submit"]:not(:disabled):not(.disabled):active:focus,
- button:not(:disabled):not(.disabled):active:focus, .action-button:not(:disabled):not(.disabled):active:focus, .menubutton:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus, input[type="submit"]:not(:disabled):not(.disabled).active:focus,
- button:not(:disabled):not(.disabled).active:focus, .action-button:not(:disabled):not(.disabled).active:focus, .menubutton:not(:disabled):not(.disabled).active:focus,
+ button:not(:disabled):not(.disabled):active:focus, .action-button:not(:disabled):not(.disabled):active:focus, .btn-default:not(:disabled):not(.disabled):active:focus, .menubutton:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus, input[type="submit"]:not(:disabled):not(.disabled).active:focus,
+ button:not(:disabled):not(.disabled).active:focus, .action-button:not(:disabled):not(.disabled).active:focus, .btn-default:not(:disabled):not(.disabled).active:focus, .menubutton:not(:disabled):not(.disabled).active:focus,
.show > .btn-secondary.dropdown-toggle:focus,
.show > input.dropdown-toggle[type="submit"]:focus,
.show >
button.dropdown-toggle:focus,
.show > .dropdown-toggle.action-button:focus,
+ .show > .dropdown-toggle.btn-default:focus,
.show > .dropdown-toggle.menubutton:focus {
box-shadow: 0 0 0 0.2rem rgba(222, 226, 230, 0.5); }
@@ -2125,7 +2127,7 @@ button, .btn-group-lg > .action-button, .btn-group-lg > .menubutton {
border-radius: 0.3rem; }
.btn-sm, .btn-group-sm > .btn, .btn-group-sm > input[type="submit"], .btn-group-sm >
-button, .btn-group-sm > .action-button, .btn-group-sm > .menubutton, .multi-panel-history .control-column .btn, .multi-panel-history .control-column input[type="submit"], .multi-panel-history .control-column
+button, .btn-group-sm > .action-button, .btn-group-sm > .menubutton, .btn-xs, .multi-panel-history .control-column .btn, .multi-panel-history .control-column input[type="submit"], .multi-panel-history .control-column
button, .multi-panel-history .control-column .action-button, .multi-panel-history .control-column .menubutton, .multi-panel-history .history-column .panel-controls .btn, .multi-panel-history .history-column .panel-controls input[type="submit"], .multi-panel-history .history-column .panel-controls
button, .multi-panel-history .history-column .panel-controls .action-button, .multi-panel-history .history-column .panel-controls .menubutton {
padding: 0.25rem 0.5rem;
@@ -2505,7 +2507,7 @@ button,
margin-right: 0; }
.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split, .btn-group-sm > input[type="submit"] + .dropdown-toggle-split, .btn-group-sm >
-button + .dropdown-toggle-split, .btn-group-sm > .action-button + .dropdown-toggle-split, .btn-group-sm > .menubutton + .dropdown-toggle-split, .multi-panel-history .control-column .btn + .dropdown-toggle-split, .multi-panel-history .control-column input[type="submit"] + .dropdown-toggle-split, .multi-panel-history .control-column
+button + .dropdown-toggle-split, .btn-group-sm > .action-button + .dropdown-toggle-split, .btn-group-sm > .menubutton + .dropdown-toggle-split, .btn-xs + .dropdown-toggle-split, .multi-panel-history .control-column .btn + .dropdown-toggle-split, .multi-panel-history .control-column input[type="submit"] + .dropdown-toggle-split, .multi-panel-history .control-column
button + .dropdown-toggle-split, .multi-panel-history .control-column .action-button + .dropdown-toggle-split, .multi-panel-history .control-column .menubutton + .dropdown-toggle-split, .multi-panel-history .history-column .panel-controls .btn + .dropdown-toggle-split, .multi-panel-history .history-column .panel-controls input[type="submit"] + .dropdown-toggle-split, .multi-panel-history .history-column .panel-controls
button + .dropdown-toggle-split, .multi-panel-history .history-column .panel-controls .action-button + .dropdown-toggle-split, .multi-panel-history .history-column .panel-controls .menubutton + .dropdown-toggle-split {
padding-right: 0.375rem;
@@ -3715,18 +3717,18 @@ button .badge, .action-button .badge, .menubutton .badge {
text-decoration: none;
background-color: #198e19; }
-.badge-info, .label-new {
+.badge-info, .badge-new {
color: #fff;
background-color: #1cbceb; }
- .badge-info[href]:hover, [href].label-new:hover, .badge-info[href]:focus, [href].label-new:focus {
+ .badge-info[href]:hover, [href].badge-new:hover, .badge-info[href]:focus, [href].badge-new:focus {
color: #fff;
text-decoration: none;
background-color: #119ac3; }
-.badge-warning, .label-beta {
+.badge-warning, .badge-beta {
color: #212529;
background-color: #f69713; }
- .badge-warning[href]:hover, [href].label-beta:hover, .badge-warning[href]:focus, [href].label-beta:focus {
+ .badge-warning[href]:hover, [href].badge-beta:hover, .badge-warning[href]:focus, [href].badge-beta:focus {
color: #212529;
text-decoration: none;
background-color: #ce7b08; }
@@ -9003,7 +9005,7 @@ button, .action-button, .menubutton {
white-space: normal; }
.btn-secondary, input[type="submit"],
-button, .action-button, .menubutton {
+button, .action-button, .btn-default, .menubutton {
border: 1px solid #bfbfbf; }
.dropdown-menu {
@@ -13351,9 +13353,6 @@ div.odd_row {
#footer {
display: none; }
-.sm-label-pad {
- margin-right: 2px; }
-
span.toolParameterExpandableCollapsable {
font-weight: bold;
cursor: pointer; }