Commit 46bfd85d authored by Yorick Peterse's avatar Yorick Peterse

Merge branch 'master' of gitlab.com:gitlab-org/gitlab-ce into ce_upstream

parents d92f4de1 9cbdc2d8
...@@ -7,6 +7,7 @@ v 8.4.0 (unreleased) ...@@ -7,6 +7,7 @@ v 8.4.0 (unreleased)
- Improved performance of finding issues for an entire group (Yorick Peterse) - Improved performance of finding issues for an entire group (Yorick Peterse)
- Added custom application performance measuring system powered by InfluxDB (Yorick Peterse) - Added custom application performance measuring system powered by InfluxDB (Yorick Peterse)
- Bump fog to 1.36.0 (Stan Hu) - Bump fog to 1.36.0 (Stan Hu)
- Add user's last used IP addresses to admin page (Stan Hu)
- Add housekeeping function to project settings page - Add housekeeping function to project settings page
- The default GitLab logo now acts as a loading indicator - The default GitLab logo now acts as a loading indicator
- Fix caching issue where build status was not updating in project dashboard (Stan Hu) - Fix caching issue where build status was not updating in project dashboard (Stan Hu)
......
...@@ -67,7 +67,7 @@ module NotesHelper ...@@ -67,7 +67,7 @@ module NotesHelper
line_type: line_type line_type: line_type
} }
button_tag class: 'btn reply-btn js-discussion-reply-button', button_tag class: 'btn btn-nr reply-btn js-discussion-reply-button',
data: data, title: 'Add a reply' do data: data, title: 'Add a reply' do
link_text = icon('comment') link_text = icon('comment')
link_text << ' Reply' link_text << ' Reply'
......
...@@ -70,6 +70,14 @@ ...@@ -70,6 +70,14 @@
%strong.cred %strong.cred
No No
%li
%span.light Current sign-in IP:
%strong
- if @user.current_sign_in_ip
= @user.current_sign_in_ip
- else
never
%li %li
%span.light Current sign-in at: %span.light Current sign-in at:
%strong %strong
...@@ -78,6 +86,14 @@ ...@@ -78,6 +86,14 @@
- else - else
never never
%li
%span.light Last sign-in IP:
%strong
- if @user.last_sign_in_ip
= @user.last_sign_in_ip
- else
never
%li %li
%span.light Last sign-in at: %span.light Last sign-in at:
%strong %strong
......
...@@ -6,5 +6,5 @@ ...@@ -6,5 +6,5 @@
= render 'projects/notes/hints' = render 'projects/notes/hints'
.note-form-actions .note-form-actions
= f.submit 'Save Comment', class: 'btn btn-primary btn-save btn-grouped js-comment-button' = f.submit 'Save Comment', class: 'btn btn-nr btn-save btn-grouped js-comment-button'
= link_to 'Cancel', '#', class: 'btn btn-cancel note-edit-cancel' = link_to 'Cancel', '#', class: 'btn btn-nr btn-cancel note-edit-cancel'
...@@ -15,4 +15,4 @@ ...@@ -15,4 +15,4 @@
.note-form-actions.clearfix .note-form-actions.clearfix
= f.submit 'Add Comment', class: "btn btn-nr btn-create comment-btn btn-grouped js-comment-button" = f.submit 'Add Comment', class: "btn btn-nr btn-create comment-btn btn-grouped js-comment-button"
= yield(:note_actions) = yield(:note_actions)
%a.btn.btn-cancel.js-close-discussion-note-form Cancel %a.btn.btn-nr.btn-cancel.js-close-discussion-note-form Cancel
...@@ -351,7 +351,7 @@ GitLab Shell is an SSH access and repository management software developed speci ...@@ -351,7 +351,7 @@ GitLab Shell is an SSH access and repository management software developed speci
cd /home/git cd /home/git
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-workhorse.git sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-workhorse.git
cd gitlab-workhorse cd gitlab-workhorse
sudo -u git -H git checkout 0.5.3 sudo -u git -H git checkout 0.5.4
sudo -u git -H make sudo -u git -H make
### Initialize Database and Activate Advanced Features ### Initialize Database and Activate Advanced Features
......
...@@ -78,7 +78,7 @@ which should already be on your system from GitLab 8.1. ...@@ -78,7 +78,7 @@ which should already be on your system from GitLab 8.1.
```bash ```bash
cd /home/git/gitlab-workhorse cd /home/git/gitlab-workhorse
sudo -u git -H git fetch --all sudo -u git -H git fetch --all
sudo -u git -H git checkout 0.5.3 sudo -u git -H git checkout 0.5.4
sudo -u git -H make sudo -u git -H make
``` ```
......
...@@ -48,6 +48,7 @@ sudo -u git -H git checkout v`cat /home/git/gitlab/GITLAB_SHELL_VERSION` -b v`ca ...@@ -48,6 +48,7 @@ sudo -u git -H git checkout v`cat /home/git/gitlab/GITLAB_SHELL_VERSION` -b v`ca
cd /home/git/gitlab-workhorse cd /home/git/gitlab-workhorse
sudo -u git -H git fetch sudo -u git -H git fetch
sudo -u git -H git checkout `cat /home/git/gitlab/GITLAB_WORKHORSE_VERSION` -b `cat /home/git/gitlab/GITLAB_WORKHORSE_VERSION` sudo -u git -H git checkout `cat /home/git/gitlab/GITLAB_WORKHORSE_VERSION` -b `cat /home/git/gitlab/GITLAB_WORKHORSE_VERSION`
sudo -u git -H make
``` ```
### 5. Install libs, migrations, etc. ### 5. Install libs, migrations, etc.
......
...@@ -36,20 +36,6 @@ module Gitlab ...@@ -36,20 +36,6 @@ module Gitlab
@pool @pool
end end
# Returns a relative path and line number based on the last application call
# frame.
def self.last_relative_application_frame
frame = caller_locations.find do |l|
l.path.start_with?(RAILS_ROOT) && !l.path.start_with?(METRICS_ROOT)
end
if frame
return frame.path.sub(PATH_REGEX, ''), frame.lineno
else
return nil, nil
end
end
def self.submit_metrics(metrics) def self.submit_metrics(metrics)
prepared = prepare_metrics(metrics) prepared = prepare_metrics(metrics)
......
...@@ -33,16 +33,8 @@ module Gitlab ...@@ -33,16 +33,8 @@ module Gitlab
def tags_for(event) def tags_for(event)
path = relative_path(event.payload[:identifier]) path = relative_path(event.payload[:identifier])
tags = { view: path }
file, line = Metrics.last_relative_application_frame { view: path }
if file and line
tags[:file] = file
tags[:line] = line
end
tags
end end
def current_transaction def current_transaction
......
...@@ -23,20 +23,29 @@ module Gitlab ...@@ -23,20 +23,29 @@ module Gitlab
@values = Hash.new(0) @values = Hash.new(0)
@tags = {} @tags = {}
@action = action @action = action
@memory_before = 0
@memory_after = 0
end end
def duration def duration
@finished_at ? (@finished_at - @started_at) * 1000.0 : 0.0 @finished_at ? (@finished_at - @started_at) * 1000.0 : 0.0
end end
def allocated_memory
@memory_after - @memory_before
end
def run def run
Thread.current[THREAD_KEY] = self Thread.current[THREAD_KEY] = self
@started_at = Time.now @memory_before = System.memory_usage
@started_at = Time.now
yield yield
ensure ensure
@finished_at = Time.now @memory_after = System.memory_usage
@finished_at = Time.now
Thread.current[THREAD_KEY] = nil Thread.current[THREAD_KEY] = nil
end end
...@@ -65,7 +74,7 @@ module Gitlab ...@@ -65,7 +74,7 @@ module Gitlab
end end
def track_self def track_self
values = { duration: duration } values = { duration: duration, allocated_memory: allocated_memory }
@values.each do |name, value| @values.each do |name, value|
values[name] = value values[name] = value
......
...@@ -14,19 +14,12 @@ describe Gitlab::Metrics::Subscribers::ActionView do ...@@ -14,19 +14,12 @@ describe Gitlab::Metrics::Subscribers::ActionView do
before do before do
allow(subscriber).to receive(:current_transaction).and_return(transaction) allow(subscriber).to receive(:current_transaction).and_return(transaction)
allow(Gitlab::Metrics).to receive(:last_relative_application_frame).
and_return(['app/views/x.html.haml', 4])
end end
describe '#render_template' do describe '#render_template' do
it 'tracks rendering of a template' do it 'tracks rendering of a template' do
values = { duration: 2.1 } values = { duration: 2.1 }
tags = { tags = { view: 'app/views/x.html.haml' }
view: 'app/views/x.html.haml',
file: 'app/views/x.html.haml',
line: 4
}
expect(transaction).to receive(:increment). expect(transaction).to receive(:increment).
with(:view_duration, 2.1) with(:view_duration, 2.1)
......
...@@ -11,6 +11,14 @@ describe Gitlab::Metrics::Transaction do ...@@ -11,6 +11,14 @@ describe Gitlab::Metrics::Transaction do
end end
end end
describe '#allocated_memory' do
it 'returns the allocated memory in bytes' do
transaction.run { 'a' * 32 }
expect(transaction.allocated_memory).to be_a_kind_of(Numeric)
end
end
describe '#run' do describe '#run' do
it 'yields the supplied block' do it 'yields the supplied block' do
expect { |b| transaction.run(&b) }.to yield_control expect { |b| transaction.run(&b) }.to yield_control
...@@ -43,8 +51,10 @@ describe Gitlab::Metrics::Transaction do ...@@ -43,8 +51,10 @@ describe Gitlab::Metrics::Transaction do
transaction.increment(:time, 1) transaction.increment(:time, 1)
transaction.increment(:time, 2) transaction.increment(:time, 2)
values = { duration: 0.0, time: 3, allocated_memory: a_kind_of(Numeric) }
expect(transaction).to receive(:add_metric). expect(transaction).to receive(:add_metric).
with('transactions', { duration: 0.0, time: 3 }, {}) with('transactions', values, {})
transaction.track_self transaction.track_self
end end
...@@ -54,8 +64,14 @@ describe Gitlab::Metrics::Transaction do ...@@ -54,8 +64,14 @@ describe Gitlab::Metrics::Transaction do
it 'sets a value' do it 'sets a value' do
transaction.set(:number, 10) transaction.set(:number, 10)
values = {
duration: 0.0,
number: 10,
allocated_memory: a_kind_of(Numeric)
}
expect(transaction).to receive(:add_metric). expect(transaction).to receive(:add_metric).
with('transactions', { duration: 0.0, number: 10 }, {}) with('transactions', values, {})
transaction.track_self transaction.track_self
end end
...@@ -80,8 +96,13 @@ describe Gitlab::Metrics::Transaction do ...@@ -80,8 +96,13 @@ describe Gitlab::Metrics::Transaction do
describe '#track_self' do describe '#track_self' do
it 'adds a metric for the transaction itself' do it 'adds a metric for the transaction itself' do
values = {
duration: transaction.duration,
allocated_memory: a_kind_of(Numeric)
}
expect(transaction).to receive(:add_metric). expect(transaction).to receive(:add_metric).
with('transactions', { duration: transaction.duration }, {}) with('transactions', values, {})
transaction.track_self transaction.track_self
end end
...@@ -104,7 +125,7 @@ describe Gitlab::Metrics::Transaction do ...@@ -104,7 +125,7 @@ describe Gitlab::Metrics::Transaction do
hash = { hash = {
series: 'rails_transactions', series: 'rails_transactions',
tags: { action: 'Foo#bar' }, tags: { action: 'Foo#bar' },
values: { duration: 0.0 }, values: { duration: 0.0, allocated_memory: a_kind_of(Numeric) },
timestamp: an_instance_of(Fixnum) timestamp: an_instance_of(Fixnum)
} }
......
...@@ -13,15 +13,6 @@ describe Gitlab::Metrics do ...@@ -13,15 +13,6 @@ describe Gitlab::Metrics do
end end
end end
describe '.last_relative_application_frame' do
it 'returns an Array containing a file path and line number' do
file, line = described_class.last_relative_application_frame
expect(line).to eq(__LINE__ - 2)
expect(file).to eq('spec/lib/gitlab/metrics_spec.rb')
end
end
describe '#submit_metrics' do describe '#submit_metrics' do
it 'prepares and writes the metrics to InfluxDB' do it 'prepares and writes the metrics to InfluxDB' do
connection = double(:connection) connection = double(:connection)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment