Skip to content

Commit 1033a29

Browse files
Release OpenProject 10.6.5
2 parents 9c6252c + 0ce55cf commit 1033a29

File tree

226 files changed

+1152
-1167
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

226 files changed

+1152
-1167
lines changed

.github/workflows/docker.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
- name: Publish to registry
1818
uses: elgohr/Publish-Docker-Github-Action@master
1919
with:
20-
name: openproject/community-test
20+
name: openproject/community
2121
username: ${{ secrets.DOCKER_USERNAME }}
2222
password: ${{ secrets.DOCKER_PASSWORD }}
2323
tag_semver: true

Gemfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ gem 'sprockets', '~> 3.7.0'
167167
# also, better than thin since we can control worker concurrency.
168168
gem 'unicorn'
169169

170-
gem 'puma', '~> 4.3.1' # used for development and optionally for production
170+
gem 'puma', '~> 4.3.5' # used for development and optionally for production
171171

172172
gem 'nokogiri', '~> 1.10.8'
173173

Gemfile.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1080,7 +1080,7 @@ DEPENDENCIES
10801080
pry-rescue (~> 1.5.0)
10811081
pry-stack_explorer (~> 0.4.9.2)
10821082
puffing-billy (~> 2.3.1)
1083-
puma (~> 4.3.1)
1083+
puma (~> 4.3.5)
10841084
rack-attack (~> 6.2.2)
10851085
rack-mini-profiler
10861086
rack-protection (~> 2.0.8)

app/models/journal/aggregated_journal.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,9 @@ def containing_journal(pure_journal)
6363
# The +until_version+ parameter can be used in conjunction with the +journable+ parameter
6464
# to see the aggregated journals as if no versions were known after the specified version.
6565
def aggregated_journals(journable: nil, sql: nil, until_version: nil, includes: [])
66-
raw_journals = Journal::Scopes::AggregatedJournal.fetch(journable: journable, sql: sql, until_version: until_version)
66+
raw_journals = Journal::Scopes::AggregatedJournal
67+
.fetch(journable: journable, sql: sql, until_version: until_version)
68+
.order('version ASC')
6769

6870
aggregated_journals = map_to_aggregated_journals(raw_journals)
6971
preload_associations(journable, aggregated_journals, includes)

app/models/journal/scopes/aggregated_journal.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ def fetch(journable: nil, sql: nil, until_version: nil)
4141
# having to also use a CASE/COALESCE statement.
4242
Journal
4343
.from(select_sql(journals_preselection))
44+
.select("DISTINCT *")
4445
end
4546

4647
private

app/services/work_packages/set_schedule_service.rb

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -116,16 +116,13 @@ def reschedule_ancestor(scheduled, dependency)
116116
# ancestors limits moving it. Then it is moved to the earliest date possible. This limitation is propagated transtitively
117117
# to all following work packages.
118118
def reschedule_by_follows(scheduled, dependency)
119-
delta = if dependency.follows_moved.first
120-
date_rescheduling_delta(dependency.follows_moved.first.to)
121-
else
122-
0
123-
end
124-
119+
delta = follows_delta(dependency)
125120
min_start_date = dependency.max_date_of_followed
126121

127122
if delta.zero? && min_start_date
128123
reschedule_to_date(scheduled, min_start_date)
124+
elsif !scheduled.start_date
125+
schedule_on_missing_dates(scheduled, min_start_date)
129126
elsif !delta.zero?
130127
reschedule_by_delta(scheduled, delta, min_start_date)
131128
end
@@ -149,9 +146,24 @@ def reschedule_to_date(scheduled, date)
149146
end
150147

151148
def reschedule_by_delta(scheduled, delta, min_start_date)
152-
required_delta = [min_start_date - scheduled.start_date, [delta, 0].min].max
149+
required_delta = [min_start_date - (scheduled.start_date || min_start_date), [delta, 0].min].max
153150

154151
scheduled.start_date += required_delta
155152
scheduled.due_date += required_delta if scheduled.due_date
156153
end
154+
155+
# If the start_date of scheduled is nil at this point something
156+
# went wrong before. So we fix it now by setting the date.
157+
def schedule_on_missing_dates(scheduled, min_start_date)
158+
scheduled.start_date = min_start_date
159+
scheduled.due_date = scheduled.start_date + 1 if scheduled.due_date && scheduled.due_date < scheduled.start_date
160+
end
161+
162+
def follows_delta(dependency)
163+
if dependency.follows_moved.first
164+
date_rescheduling_delta(dependency.follows_moved.first.to)
165+
else
166+
0
167+
end
168+
end
157169
end

app/views/activities/index.html.erb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,8 @@ See docs/COPYRIGHT.rdoc for more details.
8484
<% end %>
8585

8686
<% content_for :header_tags do %>
87-
<%= auto_discovery_link_tag(:atom, params.merge(format: 'atom', from: nil, key: User.current.rss_key)) %>
87+
<%= auto_discovery_link_tag(:atom,
88+
{ format: 'atom', from: nil, key: User.current.rss_key }) %>
8889
<% end %>
8990

9091
<% content_for :sidebar do %>

app/views/groups/_memberships.html.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ See docs/COPYRIGHT.rdoc for more details.
6767
<% @group.memberships.each do |membership| %>
6868
<% next if membership.new_record? %>
6969
<tr id="member-<%= membership.id %>" class="class">
70-
<td class="project"><%=h membership.project %></td>
70+
<td class="project"><%= link_to membership.project.name, project_members_path(membership.project) %></td>
7171
<td class="roles">
7272
<span id="member-<%= membership.id %>-roles"><%=h membership.roles.sort.collect(&:to_s).join(', ') %></span>
7373
<%= labelled_tabular_form_for(:membership,

config/initializers/health_checks.rb

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,53 @@ def check
1919
end
2020
end
2121

22+
class PumaCheck < OkComputer::Check
23+
attr_reader :threshold
24+
25+
def initialize(backlog_threshold)
26+
@threshold = backlog_threshold.to_i
27+
end
28+
29+
def check
30+
stats = self.stats
31+
32+
return mark_message "N/A as Puma is not used." if stats.nil?
33+
34+
if stats[:running] > 0
35+
mark_message "Puma is running"
36+
else
37+
mark_failure
38+
mark_message "Puma is not running"
39+
end
40+
41+
if stats[:backlog] < threshold
42+
mark_message "Backlog ok"
43+
else
44+
mark_failure
45+
mark_message "Backlog congested"
46+
end
47+
end
48+
49+
def stats
50+
return nil unless applicable?
51+
server = Puma::Server.current
52+
return nil if server.nil?
53+
54+
{
55+
backlog: server.backlog || 0,
56+
running: server.running || 0,
57+
pool_capacity: server.pool_capacity || 0,
58+
max_threads: server.max_threads || 0
59+
}
60+
end
61+
62+
def applicable?
63+
return @applicable unless @applicable.nil?
64+
65+
@applicable = Object.const_defined?("Puma::Server") && !Puma::Server.current.nil?
66+
end
67+
end
68+
2269
# Register delayed_job backed up test
2370
dj_max = OpenProject::Configuration.health_checks_jobs_queue_count_threshold
2471
OkComputer::Registry.register "delayed_jobs_backed_up",
@@ -28,8 +75,11 @@ def check
2875
OkComputer::Registry.register "delayed_jobs_never_ran",
2976
DelayedJobNeverRanCheck.new(dj_never_ran_max)
3077

78+
backlog_threshold = OpenProject::Configuration.health_checks_backlog_threshold
79+
OkComputer::Registry.register "puma", PumaCheck.new(backlog_threshold)
80+
3181
# Make dj backed up optional due to bursts
32-
OkComputer.make_optional %w(delayed_jobs_backed_up)
82+
OkComputer.make_optional %w(delayed_jobs_backed_up puma)
3383

3484
# Register web worker check for web + database
3585
OkComputer::CheckCollection.new('web').tap do |collection|
@@ -45,6 +95,7 @@ def check
4595
collection.register :mail, OkComputer::ActionMailerCheck.new
4696
collection.register :delayed_jobs_backed_up, OkComputer::Registry.fetch('delayed_jobs_backed_up')
4797
collection.register :delayed_jobs_never_ran, OkComputer::Registry.fetch('delayed_jobs_never_ran')
98+
collection.register :puma, OkComputer::Registry.fetch('puma')
4899
OkComputer::Registry.default_collection.register 'full', collection
49100
end
50101

config/locales/crowdin/ar.yml

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,6 @@ ar:
418418
types: "الأنواع"
419419
versions: "الإصدارات"
420420
work_packages: "مجموعات العمل"
421-
templated: 'Template project'
422421
projects/status:
423422
code: 'الحالة'
424423
explanation: 'Status description'
@@ -490,7 +489,6 @@ ar:
490489
parent_work_package: "الجذر"
491490
priority: "الأولوية"
492491
progress: "التقدم (%)"
493-
schedule_manually: "Schedule manually"
494492
spent_hours: "الوقت المستهلك"
495493
spent_time: "الوقت المستهلك"
496494
subproject: "مشروع فرعي"
@@ -900,7 +898,6 @@ ar:
900898
- "تشرين الأول"
901899
- "تشرين الثاني"
902900
- "كانون الأول"
903-
abbr_week: 'Wk'
904901
day_names:
905902
- "الأحد"
906903
- "الاثنين"
@@ -2031,12 +2028,6 @@ ar:
20312028
warning_one: وسيكون أعضاء المشروع إلى نقل مستودعات للمشروع.
20322029
warning_two: لن تعد تعمل الارتباطات الموجودة في المشروع.
20332030
title: تغيير معرف المشروع
2034-
template:
2035-
copying: >
2036-
Your project is being created from the selected template project. You will be notified by mail as soon as the project is available.
2037-
use_template: 'Use template'
2038-
make_template: 'Set as template'
2039-
remove_from_templates: 'Remove from templates'
20402031
archive:
20412032
are_you_sure: "هل أنت متأكد من أنك تريد أرشفة المشروع '%{name}'؟"
20422033
archived: "Archived"

0 commit comments

Comments
 (0)