Skip to content

Commit 76c4dd4

Browse files
committed
Restore automatic configuration of DB parameters according to JIRA's requirements
Turns out JIRA works without these, but will complain, at least on some versions. Also make the approach to variable naming a bit more consistent.
1 parent b54ab50 commit 76c4dd4

3 files changed

Lines changed: 111 additions & 54 deletions

File tree

manifests/config.pp

Lines changed: 49 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -42,24 +42,16 @@
4242
# can't use pick_default: https://tickets.puppetlabs.com/browse/MODULES-11018
4343
$dbschema = if $jira::dbschema { $jira::dbschema } else { $dbschema_default }
4444

45-
# Allow some backwards compatibility;
46-
if $jira::poolsize {
47-
deprecation('jira::poolsize', 'jira::poolsize is deprecated and simply sets max-pool-size. Please use jira::pool_max_size instead and remove this configuration')
48-
$pool_max_size_real = pick($jira::pool_max_size, $jira::poolsize)
49-
} else {
50-
$pool_max_size_real = $jira::pool_max_size
51-
}
52-
5345
if $jira::tomcat_redirect_https_port {
5446
unless $jira::tomcat_native_ssl {
5547
fail('You need to set jira::tomcat_native_ssl to true when using jira::tomcat_redirect_https_port')
5648
}
5749
}
5850

5951
if $jira::dbport {
60-
$dbport_real = $jira::dbport
52+
$dbport = $jira::dbport
6153
} else {
62-
$dbport_real = $jira::db ? {
54+
$dbport = $jira::db ? {
6355
'postgresql' => '5432',
6456
'mysql' => '3306',
6557
'oracle' => '1521',
@@ -69,9 +61,9 @@
6961
}
7062

7163
if $jira::dbdriver {
72-
$dbdriver_real = $jira::dbdriver
64+
$dbdriver = $jira::dbdriver
7365
} else {
74-
$dbdriver_real = $jira::db ? {
66+
$dbdriver = $jira::db ? {
7567
'postgresql' => 'org.postgresql.Driver',
7668
'mysql' => 'com.mysql.jdbc.Driver',
7769
'oracle' => 'oracle.jdbc.OracleDriver',
@@ -81,9 +73,9 @@
8173
}
8274

8375
if $jira::dbtype {
84-
$dbtype_real = $jira::dbtype
76+
$dbtype = $jira::dbtype
8577
} else {
86-
$dbtype_real = $jira::db ? {
78+
$dbtype = $jira::db ? {
8779
'postgresql' => 'postgres72',
8880
'mysql' => 'mysql',
8981
'oracle' => 'oracle10g',
@@ -93,20 +85,57 @@
9385
}
9486

9587
if $jira::dburl {
96-
$dburl_real = $jira::dburl
88+
$dburl = $jira::dburl
9789
}
9890
else {
9991
# SIDs use :, service names use /
10092
$oracle_separator = bool2str($jira::oracle_use_sid, ':', '/')
101-
$dburl_real = $jira::db ? {
102-
'postgresql' => "jdbc:${jira::db}://${jira::dbserver}:${dbport_real}/${jira::dbname}",
103-
'mysql' => "jdbc:${jira::db}://${jira::dbserver}:${dbport_real}/${jira::dbname}?useUnicode=true&characterEncoding=UTF8&sessionVariables=default_storage_engine=InnoDB",
104-
'oracle' => "jdbc:${jira::db}:thin:@${jira::dbserver}:${dbport_real}${oracle_separator}${jira::dbname}",
105-
'sqlserver' => "jdbc:jtds:${jira::db}://${jira::dbserver}:${dbport_real}/${jira::dbname}",
93+
$dburl = $jira::db ? {
94+
'postgresql' => "jdbc:${jira::db}://${jira::dbserver}:${dbport}/${jira::dbname}",
95+
'mysql' => "jdbc:${jira::db}://${jira::dbserver}:${dbport}/${jira::dbname}?useUnicode=true&characterEncoding=UTF8&sessionVariables=default_storage_engine=InnoDB",
96+
'oracle' => "jdbc:${jira::db}:thin:@${jira::dbserver}:${dbport}${oracle_separator}${jira::dbname}",
97+
'sqlserver' => "jdbc:jtds:${jira::db}://${jira::dbserver}:${dbport}/${jira::dbname}",
10698
'h2' => "jdbc:h2:file:/${jira::homedir}/database/${jira::dbname}",
10799
}
108100
}
109101

102+
# Allow some backwards compatibility;
103+
if $jira::poolsize {
104+
deprecation('jira::poolsize', 'jira::poolsize is deprecated and simply sets max-pool-size. Please use jira::pool_max_size instead and remove this configuration')
105+
}
106+
107+
$pool_min_size = pick($jira::pool_min_size, 20)
108+
$pool_max_size = pick($jira::pool_max_size, $jira::poolsize, 20)
109+
$pool_max_wait = pick($jira::pool_max_wait, 30000)
110+
$pool_max_idle = pick($jira::pool_max_idle, 20)
111+
$pool_remove_abandoned = pick($jira::pool_remove_abandoned, true)
112+
$pool_remove_abandoned_timeout = pick($jira::pool_remove_abandoned_timeout, 300)
113+
$min_evictable_idle_time = pick($jira::min_evictable_idle_time, 60000)
114+
$time_between_eviction_runs = pick($jira::time_between_eviction_runs, 300000)
115+
$pool_test_while_idle = pick($jira::pool_test_while_idle, true)
116+
$pool_test_on_borrow = pick($jira::pool_test_on_borrow, false)
117+
118+
# This is just for consistency
119+
$connection_settings = $jira::connection_settings
120+
121+
if $jira::db == 'mysql' {
122+
$validation_query_timeout = pick($jira::validation_query_timeout, 3)
123+
} else {
124+
$validation_query_timeout = $jira::validation_query_timeout
125+
}
126+
127+
if $jira::validation_query {
128+
$validation_query = $jira::validation_query
129+
} else {
130+
$validation_query = $jira::db ? {
131+
'mysql' => 'select 1',
132+
'sqlserver' => 'select 1',
133+
'oracle' => 'select 1 from dual',
134+
'postgresql' => 'select version();',
135+
'h2' => undef,
136+
}
137+
}
138+
110139
$tomcat_protocol_ssl_real = pick($jira::tomcat_protocol_ssl, 'org.apache.coyote.http11.Http11NioProtocol')
111140

112141
$jira_properties = {

spec/classes/jira_config_spec.rb

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,17 @@
2828
is_expected.to contain_file('/home/jira/dbconfig.xml').
2929
with_content(%r{jdbc:postgresql://localhost:5432/jira}).
3030
with_content(%r{<schema-name>public</schema-name>}).
31-
without_content(%r{<pool})
31+
with_content(%r{<pool-max-size>20}).
32+
with_content(%r{<pool-min-size>20}).
33+
with_content(%r{<pool-max-wait>30000}).
34+
with_content(%r{<pool-max-idle>20}).
35+
with_content(%r{<pool-remove-abandoned>true}).
36+
with_content(%r{<pool-remove-abandoned-timeout>300}).
37+
with_content(%r{<min-evictable-idle-time-millis>60000}).
38+
with_content(%r{<time-between-eviction-runs-millis>300000}).
39+
with_content(%r{<pool-test-while-idle>true}).
40+
with_content(%r{<pool-test-on-borrow>false}).
41+
with_content(%r{<validation-query>select version\(\);})
3242
end
3343
it { is_expected.not_to contain_file('/home/jira/cluster.properties') }
3444
it { is_expected.not_to contain_file('/opt/jira/atlassian-jira-software-8.13.5-standalone/bin/check-java.sh') }
@@ -46,15 +56,33 @@
4656
it { is_expected.to contain_package('java-11-openjdk-headless') }
4757
end
4858

59+
context 'default params with java install and mysql' do
60+
let(:params) do
61+
{
62+
db: 'mysql',
63+
javahome: '/usr/lib/jvm/jre-11-openjdk',
64+
java_package: 'java-11-openjdk-headless',
65+
}
66+
end
67+
68+
it { is_expected.to compile.with_all_deps }
69+
it { is_expected.to contain_package('java-11-openjdk-headless') }
70+
it do
71+
is_expected.to contain_file('/home/jira/dbconfig.xml').
72+
with_content(%r{<validation-query>select 1</validation-query>}).
73+
with_content(%r{<validation-query-timeout>3</validation-query-timeout>})
74+
end
75+
end
76+
4977
context 'database settings' do
5078
let(:params) do
5179
{
5280
version: '8.13.5',
5381
javahome: '/opt/java',
5482
connection_settings: 'TEST-SETTING;',
55-
pool_max_size: 20,
83+
pool_max_size: 200,
5684
pool_min_size: 10,
57-
validation_query: 'SELECT version();',
85+
validation_query: 'SELECT myfunction();',
5886
}
5987
end
6088

@@ -64,9 +92,9 @@
6492
it do
6593
is_expected.to contain_file('/home/jira/dbconfig.xml').
6694
with_content(%r{<connection-settings>TEST-SETTING;</connection-settings>}).
67-
with_content(%r{<pool-max-size>20</pool-max-size>}).
95+
with_content(%r{<pool-max-size>200</pool-max-size>}).
6896
with_content(%r{<pool-min-size>10</pool-min-size>}).
69-
with_content(%r{<validation-query>SELECT version\(\);</validation-query>})
97+
with_content(%r{<validation-query>SELECT myfunction\(\);</validation-query>})
7098
end
7199
end
72100

templates/dbconfig.xml.epp

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -4,54 +4,54 @@
44
<jira-database-config>
55
<name>defaultDS</name>
66
<delegator-name>default</delegator-name>
7-
<database-type><%= $jira::config::dbtype_real %></database-type>
7+
<database-type><%= $jira::config::dbtype %></database-type>
88
<% if $jira::config::dbschema != undef { -%>
99
<schema-name><%= $jira::config::dbschema %></schema-name>
1010
<% } -%>
1111
<jdbc-datasource>
12-
<url><%= $jira::config::dburl_real %></url>
13-
<driver-class><%= $jira::config::dbdriver_real %></driver-class>
12+
<url><%= $jira::config::dburl %></url>
13+
<driver-class><%= $jira::config::dbdriver %></driver-class>
1414
<username><%= $jira::dbuser %></username>
1515
<password><%= $jira::dbpassword %></password>
1616
<%# For most of these, Jira defaults are better... -%>
17-
<% if $jira::pool_min_size != undef { -%>
18-
<pool-min-size><%= $jira::pool_min_size %></pool-min-size>
17+
<% if $jira::config::pool_min_size != undef { -%>
18+
<pool-min-size><%= $jira::config::pool_min_size %></pool-min-size>
1919
<% } -%>
20-
<% if $jira::config::pool_max_size_real != undef { -%>
21-
<pool-max-size><%= $jira::config::pool_max_size_real %></pool-max-size>
20+
<% if $jira::config::pool_max_size != undef { -%>
21+
<pool-max-size><%= $jira::config::pool_max_size %></pool-max-size>
2222
<% } -%>
23-
<% if $jira::pool_max_idle != undef { -%>
24-
<pool-max-idle><%= $jira::pool_max_idle %></pool-max-idle>
23+
<% if $jira::config::pool_max_idle != undef { -%>
24+
<pool-max-idle><%= $jira::config::pool_max_idle %></pool-max-idle>
2525
<% } -%>
26-
<% if $jira::pool_max_wait != undef { -%>
27-
<pool-max-wait><%= $jira::pool_max_wait %></pool-max-wait>
26+
<% if $jira::config::pool_max_wait != undef { -%>
27+
<pool-max-wait><%= $jira::config::pool_max_wait %></pool-max-wait>
2828
<% } -%>
29-
<% if $jira::min_evictable_idle_time != undef { -%>
30-
<min-evictable-idle-time-millis><%= $jira::min_evictable_idle_time %></min-evictable-idle-time-millis>
29+
<% if $jira::config::min_evictable_idle_time != undef { -%>
30+
<min-evictable-idle-time-millis><%= $jira::config::min_evictable_idle_time %></min-evictable-idle-time-millis>
3131
<% } -%>
32-
<% if $jira::pool_remove_abandoned != undef { -%>
33-
<pool-remove-abandoned><%= $jira::pool_remove_abandoned %></pool-remove-abandoned>
32+
<% if $jira::config::pool_remove_abandoned != undef { -%>
33+
<pool-remove-abandoned><%= $jira::config::pool_remove_abandoned %></pool-remove-abandoned>
3434
<% } -%>
35-
<% if $jira::pool_remove_abandoned_timeout != undef { -%>
36-
<pool-remove-abandoned-timeout><%= $jira::pool_remove_abandoned_timeout %></pool-remove-abandoned-timeout>
35+
<% if $jira::config::pool_remove_abandoned_timeout != undef { -%>
36+
<pool-remove-abandoned-timeout><%= $jira::config::pool_remove_abandoned_timeout %></pool-remove-abandoned-timeout>
3737
<% } -%>
38-
<% if $jira::pool_test_while_idle != undef { -%>
39-
<pool-test-while-idle><%= $jira::pool_test_while_idle %></pool-test-while-idle>
38+
<% if $jira::config::pool_test_while_idle != undef { -%>
39+
<pool-test-while-idle><%= $jira::config::pool_test_while_idle %></pool-test-while-idle>
4040
<% } -%>
41-
<% if $jira::pool_test_on_borrow != undef { -%>
42-
<pool-test-on-borrow><%= $jira::pool_test_on_borrow %></pool-test-on-borrow>
41+
<% if $jira::config::pool_test_on_borrow != undef { -%>
42+
<pool-test-on-borrow><%= $jira::config::pool_test_on_borrow %></pool-test-on-borrow>
4343
<% } -%>
44-
<% if $jira::validation_query != undef { -%>
45-
<validation-query><%= $jira::validation_query %></validation-query>
44+
<% if $jira::config::validation_query != undef { -%>
45+
<validation-query><%= $jira::config::validation_query %></validation-query>
4646
<% } -%>
47-
<% if $jira::validation_query_timeout != undef { -%>
48-
<validation-query-timeout><%= $jira::validation_query_timeout %></validation-query-timeout>
47+
<% if $jira::config::validation_query_timeout != undef { -%>
48+
<validation-query-timeout><%= $jira::config::validation_query_timeout %></validation-query-timeout>
4949
<% } -%>
50-
<% if $jira::time_between_eviction_runs != undef { -%>
51-
<time-between-eviction-runs-millis><%= $jira::time_between_eviction_runs %></time-between-eviction-runs-millis>
50+
<% if $jira::config::time_between_eviction_runs != undef { -%>
51+
<time-between-eviction-runs-millis><%= $jira::config::time_between_eviction_runs %></time-between-eviction-runs-millis>
5252
<% } -%>
53-
<% if $jira::connection_settings { -%>
54-
<connection-settings><%= $jira::connection_settings %></connection-settings>
53+
<% if $jira::config::connection_settings { -%>
54+
<connection-settings><%= $jira::config::connection_settings %></connection-settings>
5555
<% } -%>
5656
</jdbc-datasource>
5757
</jira-database-config>

0 commit comments

Comments
 (0)