X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/e13874a4bb666423c5b2ddf1ebb517a10789f4c0..1bcfe8651af341c6e7cd01a19443c7c288efa932:/apps/workbench/app/views/jobs/_show_log.html.erb diff --git a/apps/workbench/app/views/jobs/_show_log.html.erb b/apps/workbench/app/views/jobs/_show_log.html.erb index b523af81ae..18021349e2 100644 --- a/apps/workbench/app/views/jobs/_show_log.html.erb +++ b/apps/workbench/app/views/jobs/_show_log.html.erb @@ -1,11 +1,20 @@ <% if !@object.log %> -<% log_history = stderr_log_history([@object.uuid]) %> -
- <% log_history.each do |entry| %> - <%=entry%>
- <% end %> -
+ + +
+ +<%# Applying a long throttle suppresses the auto-refresh of this + partial that would normally be triggered by arv-log-event. %> +
+ >
<% else %> @@ -50,20 +59,41 @@ var makeFilter = function() { }); } -<% if @object.log %> +<% if @object.log and !@object.log.empty? %> <% logcollection = Collection.find @object.log %> <% if logcollection %> - $.ajax('<%=j url_for logcollection %>/<%=j logcollection.files[0][1] %>'). - done(function(data, status, jqxhr) { - logViewer.filter(); - addToLogViewer(logViewer, data.split("\n"), taskState); - logViewer.filter(makeFilter()); - generateJobOverview("#log-viewer-overview", logViewer, taskState); - $("#log-viewer .spinner").detach(); - }). - fail(function(jqxhr, status, error) { - $("#log-viewer .spinner").detach(); - }); + log_size = <%= logcollection.files[0][2] %> + log_maxbytes = <%= Rails.configuration.log_viewer_max_bytes %>; + logcollection_url = '<%=j url_for logcollection %>/<%=j logcollection.files[0][1] %>'; + $("#log-viewer-download-url").attr('href', logcollection_url); + $("#log-viewer-download-pane").show(); + if (log_size > log_maxbytes) { + range_header = { 'Range': 'bytes=0-' + log_maxbytes }; + } else { + range_header = null; + } + $.ajax(logcollection_url, { headers: range_header }). + done(function(data, status, jqxhr) { + logViewer.filter(); + addToLogViewer(logViewer, data.split("\n"), taskState); + logViewer.filter(makeFilter()); + content_range_hdr = jqxhr.getResponseHeader('Content-Range'); + var v = content_range_hdr && content_range_hdr.match(/bytes \d+-(\d+)\/(.+)/); + short_log = v && (v[2] == '*' || parseInt(v[1]) + 1 < v[2]); + if (jqxhr.status == 206 && short_log) { + $("#log-viewer-overview").html( + '

Showing only ' + data.length + ' bytes of this log.' + + ' Timing information is unavailable since' + + ' the full log was not retrieved.

' + ); + } else { + generateJobOverview("#log-viewer-overview", logViewer, taskState); + } + $("#log-viewer .spinner").detach(); + }). + fail(function(jqxhr, status, error) { + $("#log-viewer .spinner").detach(); + }); <% end %> <% else %> <%# Live log loading not implemented yet. %> @@ -119,6 +149,10 @@ $("#set-show-failed-only").on("click", function() { <% end %>

+ +
Log @@ -217,6 +251,7 @@ $("#set-show-failed-only").on("click", function() {
+ <% end %>