Skip to content

Commit 77680ef

Browse files
author
Glyn Normington
committed
Merge 51561265-halt-JVM-on-OOM to master
[#51561265]
2 parents 4f110c4 + 60aed7e commit 77680ef

2 files changed

Lines changed: 28 additions & 10 deletions

File tree

lib/java_buildpack/jre/openjdk.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ class OpenJdk
3636
def initialize(context)
3737
@app_dir = context[:app_dir]
3838
@java_opts = context[:java_opts]
39+
@java_opts << "-XX:OnOutOfMemoryError='kill -9 %p'"
3940
@configuration = context[:configuration]
4041
@version, @uri = OpenJdk.find_openjdk(@configuration)
4142

spec/java_buildpack/jre/openjdk_spec.rb

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ module JavaBuildpack::Jre
124124
:configuration => BASE_CONFIGURATION.merge({'java.heap.size' => HEAP_SIZE})
125125
).release
126126

127-
expect(java_opts.length).to eq(3)
127+
expect(java_opts.length).to eq(4)
128128
expect(java_opts.join(' ')).to match(/-Xmx#{HEAP_SIZE}/)
129129
end
130130
end
@@ -141,7 +141,7 @@ module JavaBuildpack::Jre
141141
:configuration => BASE_CONFIGURATION
142142
).release
143143

144-
expect(java_opts.length).to eq(3)
144+
expect(java_opts.length).to eq(4)
145145
expect(java_opts.join(' ')).to match(/-Xmx/)
146146
end
147147
end
@@ -170,7 +170,7 @@ module JavaBuildpack::Jre
170170
:configuration => BASE_CONFIGURATION.merge({'java.permgen.size' => PERMGEN_SIZE})
171171
).release
172172

173-
expect(java_opts.length).to eq(3)
173+
expect(java_opts.length).to eq(4)
174174
expect(java_opts.join(' ')).to match(/-XX:MaxPermSize=#{PERMGEN_SIZE}/)
175175
end
176176
end
@@ -187,7 +187,7 @@ module JavaBuildpack::Jre
187187
:configuration => BASE_CONFIGURATION
188188
).release
189189

190-
expect(java_opts.length).to eq(3)
190+
expect(java_opts.length).to eq(4)
191191
expect(java_opts.join(' ')).to match(/-XX:MaxPermSize=/)
192192
end
193193
end
@@ -216,7 +216,7 @@ module JavaBuildpack::Jre
216216
:configuration => BASE_CONFIGURATION.merge({'java.stack.size' => STACK_SIZE})
217217
).release
218218

219-
expect(java_opts.length).to eq(3)
219+
expect(java_opts.length).to eq(4)
220220
expect(java_opts.join(' ')).to match(/-Xss#{STACK_SIZE}/)
221221
end
222222
end
@@ -233,7 +233,7 @@ module JavaBuildpack::Jre
233233
:configuration => BASE_CONFIGURATION
234234
).release
235235

236-
expect(java_opts.length).to eq(3)
236+
expect(java_opts.length).to eq(4)
237237
expect(java_opts.join(' ')).to match(/-Xss1M/)
238238
end
239239
end
@@ -262,7 +262,7 @@ module JavaBuildpack::Jre
262262
:configuration => BASE_CONFIGURATION.merge({'java.metaspace.size' => METASPACE_SIZE})
263263
).release
264264

265-
expect(java_opts.length).to eq(3)
265+
expect(java_opts.length).to eq(4)
266266
expect(java_opts.join(' ')).to match(/-XX:MaxMetaspaceSize=#{PERMGEN_SIZE}/)
267267
end
268268
end
@@ -279,7 +279,7 @@ module JavaBuildpack::Jre
279279
:configuration => BASE_CONFIGURATION
280280
).release
281281

282-
expect(java_opts.length).to eq(3)
282+
expect(java_opts.length).to eq(4)
283283
expect(java_opts.join(' ')).to match(/-XX:MaxMetaspaceSize=/)
284284
end
285285
end
@@ -296,8 +296,8 @@ module JavaBuildpack::Jre
296296
:configuration => BASE_CONFIGURATION
297297
).release
298298

299-
expect(java_opts.length).to eq(1)
300-
expect(java_opts[0]).to match(/-Xss1M/)
299+
expect(java_opts.length).to eq(2)
300+
expect(java_opts.join(' ')).to match(/-Xss1M/)
301301
end
302302
end
303303

@@ -311,6 +311,23 @@ module JavaBuildpack::Jre
311311
).detect }.to raise_error(/OpenJDK\ JRE\ error:\ test\ error/)
312312
end
313313

314+
it 'adds OnOutOfMemoryError to java_opts' do
315+
with_memory_limit(nil) do
316+
JavaBuildpack::Repository::ConfiguredItem.stub(:find_item).and_return(DETAILS_PRE_8)
317+
318+
java_opts = []
319+
OpenJdk.new(
320+
:app_dir => '',
321+
:java_home => '',
322+
:java_opts => java_opts,
323+
:configuration => BASE_CONFIGURATION.merge({'java.heap.size' => HEAP_SIZE})
324+
).release
325+
326+
expect(java_opts.length).to eq(3)
327+
expect(java_opts.join(' ')).to match(/-XX:OnOutOfMemoryError='kill -9 %p'/)
328+
end
329+
end
330+
314331
def with_memory_limit(memory_limit)
315332
previous_value = ENV['MEMORY_LIMIT']
316333
begin

0 commit comments

Comments
 (0)