Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
600abf54
Commit
600abf54
authored
Feb 05, 2019
by
GitLab Bot
Browse files
Options
Browse Files
Download
Plain Diff
Automatic merge of gitlab-org/gitlab-ce master
parents
452a7db1
74abc775
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
100 additions
and
14 deletions
+100
-14
app/assets/javascripts/monitoring/components/charts/area.vue
app/assets/javascripts/monitoring/components/charts/area.vue
+42
-0
app/assets/javascripts/monitoring/components/dashboard.vue
app/assets/javascripts/monitoring/components/dashboard.vue
+1
-0
app/services/projects/update_pages_configuration_service.rb
app/services/projects/update_pages_configuration_service.rb
+27
-7
changelogs/unreleased/update-pages-config-only-when-changed.yml
...logs/unreleased/update-pages-config-only-when-changed.yml
+5
-0
spec/services/projects/update_pages_configuration_service_spec.rb
...vices/projects/update_pages_configuration_service_spec.rb
+25
-7
No files found.
app/assets/javascripts/monitoring/components/charts/area.vue
View file @
600abf54
...
...
@@ -33,6 +33,11 @@ export default {
type
:
Number
,
required
:
true
,
},
deploymentData
:
{
type
:
Array
,
required
:
false
,
default
:
()
=>
[],
},
alertData
:
{
type
:
Object
,
required
:
false
,
...
...
@@ -79,6 +84,43 @@ export default {
legend
:
{
formatter
:
this
.
xAxisLabel
,
},
series
:
this
.
scatterSeries
,
};
},
earliestDatapoint
()
{
return
Object
.
values
(
this
.
chartData
).
reduce
((
acc
,
data
)
=>
{
const
[[
timestamp
]]
=
data
.
sort
(([
a
],
[
b
])
=>
{
if
(
a
<
b
)
{
return
-
1
;
}
return
a
>
b
?
1
:
0
;
});
return
timestamp
<
acc
||
acc
===
null
?
timestamp
:
acc
;
},
null
);
},
recentDeployments
()
{
return
this
.
deploymentData
.
reduce
((
acc
,
deployment
)
=>
{
if
(
deployment
.
created_at
>=
this
.
earliestDatapoint
)
{
acc
.
push
({
id
:
deployment
.
id
,
createdAt
:
deployment
.
created_at
,
sha
:
deployment
.
sha
,
commitUrl
:
`
${
this
.
projectPath
}
/commit/
${
deployment
.
sha
}
`
,
tag
:
deployment
.
tag
,
tagUrl
:
deployment
.
tag
?
`
${
this
.
tagsPath
}
/
${
deployment
.
ref
.
name
}
`
:
null
,
ref
:
deployment
.
ref
.
name
,
showDeploymentFlag
:
false
,
});
}
return
acc
;
},
[]);
},
scatterSeries
()
{
return
{
type
:
'
scatter
'
,
data
:
this
.
recentDeployments
.
map
(
deployment
=>
[
deployment
.
createdAt
,
0
]),
};
},
xAxisLabel
()
{
...
...
app/assets/javascripts/monitoring/components/dashboard.vue
View file @
600abf54
...
...
@@ -212,6 +212,7 @@ export default {
v-for=
"(graphData, graphIndex) in groupData.metrics"
:key=
"graphIndex"
:graph-data=
"graphData"
:deployment-data=
"store.deploymentData"
:alert-data=
"getGraphAlerts(graphData.id)"
:container-width=
"elWidth"
group-id=
"monitor-area-chart"
...
...
app/services/projects/update_pages_configuration_service.rb
View file @
600abf54
...
...
@@ -2,6 +2,8 @@
module
Projects
class
UpdatePagesConfigurationService
<
BaseService
include
Gitlab
::
Utils
::
StrongMemoize
attr_reader
:project
def
initialize
(
project
)
...
...
@@ -9,15 +11,25 @@ module Projects
end
def
execute
update_file
(
pages_config_file
,
pages_config
.
to_json
)
if
file_equals?
(
pages_config_file
,
pages_config_json
)
return
success
(
reload:
false
)
end
update_file
(
pages_config_file
,
pages_config_json
)
reload_daemon
success
success
(
reload:
true
)
rescue
=>
e
error
(
e
.
message
)
end
private
def
pages_config_json
strong_memoize
(
:pages_config_json
)
do
pages_config
.
to_json
end
end
def
pages_config
{
domains:
pages_domains_config
,
...
...
@@ -67,11 +79,6 @@ module Projects
end
def
update_file
(
file
,
data
)
unless
data
FileUtils
.
remove
(
file
,
force:
true
)
return
end
temp_file
=
"
#{
file
}
.
#{
SecureRandom
.
hex
(
16
)
}
"
File
.
open
(
temp_file
,
'w'
)
do
|
f
|
f
.
write
(
data
)
...
...
@@ -81,5 +88,18 @@ module Projects
# In case if the updating fails
FileUtils
.
remove
(
temp_file
,
force:
true
)
end
def
file_equals?
(
file
,
data
)
existing_data
=
read_file
(
file
)
data
==
existing_data
.
to_s
end
def
read_file
(
file
)
File
.
open
(
file
,
'r'
)
do
|
f
|
f
.
read
end
rescue
nil
end
end
end
changelogs/unreleased/update-pages-config-only-when-changed.yml
0 → 100644
View file @
600abf54
---
title
:
Do not reload daemon if configuration file of pages does not change
merge_request
:
author
:
type
:
performance
spec/services/projects/update_pages_configuration_service_spec.rb
View file @
600abf54
...
...
@@ -2,23 +2,41 @@ require 'spec_helper'
describe
Projects
::
UpdatePagesConfigurationService
do
let
(
:project
)
{
create
(
:project
)
}
subject
{
described_class
.
new
(
project
)
}
let
(
:service
)
{
described_class
.
new
(
project
)
}
describe
"#update"
do
let
(
:file
)
{
Tempfile
.
new
(
'pages-test'
)
}
subject
{
service
.
execute
}
after
do
file
.
close
file
.
unlink
end
it
'updates the .update file'
do
# Access this reference to ensure scoping works
Projects
::
Settings
# rubocop:disable Lint/Void
expect
(
subject
).
to
receive
(
:pages_config_file
).
and_return
(
file
.
path
)
expect
(
subject
).
to
receive
(
:reload_daemon
).
and_call_original
before
do
allow
(
service
).
to
receive
(
:pages_config_file
).
and_return
(
file
.
path
)
end
context
'when configuration changes'
do
it
'updates the .update file'
do
expect
(
service
).
to
receive
(
:reload_daemon
).
and_call_original
expect
(
subject
).
to
include
(
status: :success
,
reload:
true
)
end
end
context
'when configuration does not change'
do
before
do
# we set the configuration
service
.
execute
end
it
'does not update the .update file'
do
expect
(
service
).
not_to
receive
(
:reload_daemon
)
expect
(
subject
.
execute
).
to
eq
({
status: :success
})
expect
(
subject
).
to
include
(
status: :success
,
reload:
false
)
end
end
end
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment