summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShinya Maeda <gitlab.shinyamaeda@gmail.com>2017-05-17 18:18:16 +0900
committerShinya Maeda <gitlab.shinyamaeda@gmail.com>2017-05-24 20:10:14 +0900
commitdddfa28eec6a55f8548e848d41b4fa3749a7d4d7 (patch)
tree4e5289c066917d2fda5c1071a38ac84f808e2d5f
parent318b46407239f35cd11d35b21271fa743d435dad (diff)
downloadgitlab-ce-dddfa28eec6a55f8548e848d41b4fa3749a7d4d7.tar.gz
Refer reverse_line from read_last_lines
-rw-r--r--lib/gitlab/ci/trace/stream.rb29
1 files changed, 7 insertions, 22 deletions
diff --git a/lib/gitlab/ci/trace/stream.rb b/lib/gitlab/ci/trace/stream.rb
index 3b4728951c4..3d32fae6525 100644
--- a/lib/gitlab/ci/trace/stream.rb
+++ b/lib/gitlab/ci/trace/stream.rb
@@ -91,29 +91,14 @@ module Gitlab
private
- def read_last_lines(last_lines)
- chunks = []
- pos = lines = 0
- max = stream.size
-
- # We want an extra line to make sure fist line has full contents
- while lines <= last_lines && pos < max
- pos += BUFFER_SIZE
-
- buf =
- if pos <= max
- stream.seek(-pos, IO::SEEK_END)
- stream.read(BUFFER_SIZE)
- else # Reached the head, read only left
- stream.seek(0)
- stream.read(BUFFER_SIZE - (pos - max))
- end
-
- lines += buf.count("\n")
- chunks.unshift(buf)
+ def read_last_lines(limit)
+ result = ''
+ reverse_line do |line|
+ result = line + result
+ limit -= 1
+ return result if limit <= 0
end
-
- chunks.join.lines.last(last_lines).join
+ result
end
def reverse_line