Skip to content

Commit f89e01a

Browse files
committed
fsync file writes
This change ensures that all file writes are fsync'd. This is in an attempt to address some issues we're seeing with corrupted files shortly after they are written. [#58149152]
1 parent 03d1729 commit f89e01a

6 files changed

Lines changed: 18 additions & 3 deletions

File tree

lib/java_buildpack/container/play.rb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,12 @@ def start_script_relative(play_root)
116116
def update_file(file_name, pattern, replacement)
117117
content = File.open(file_name, 'r') { |file| file.read }
118118
result = content.gsub! pattern, replacement
119-
File.open(file_name, 'w') { |file| file.write content }
119+
120+
File.open(file_name, 'w') do |file|
121+
file.write content
122+
file.fsync
123+
end
124+
120125
result
121126
end
122127

lib/java_buildpack/framework/spring_auto_reconfiguration.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,11 @@ def modify_web_xml
7070
modifier.augment_root_context
7171
modifier.augment_servlet_contexts
7272

73-
File.open(web_xml, 'w') { |file| file.write(modifier.to_s) }
73+
File.open(web_xml, 'w') do |file|
74+
file.write(modifier.to_s)
75+
file.fsync
76+
end
77+
7478
@logger.debug { " Modified web.xml: #{File.read web_xml}" }
7579
end
7680
end

lib/java_buildpack/jre/openjdk.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ def copy_killjava_script
9595
FileUtils.mkdir_p diagnostic_dir
9696
File.open(File.join(diagnostic_dir, KILLJAVA_FILE_NAME), 'w', 0755) do |file|
9797
file.write updated_content
98+
file.fsync
9899
end
99100
end
100101

lib/java_buildpack/util/download_cache.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,7 @@ def persist_header(response, header, filename)
222222
unless response[header].nil?
223223
File.open(filename, File::CREAT | File::WRONLY) do |file|
224224
file.write(response[header])
225+
file.fsync
225226
end
226227
end
227228
end

resources/openjdk/diagnostics/killjava

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ module Kill
3131
File.open(log_file_name, 'a') do |log_file|
3232
log_file.sync = true
3333
log_file.write "#{log_data} @ #{Kill.time_in_millis}\n"
34+
log_file.fsync
3435
end
3536
end
3637

spec/java_buildpack/repository/repository_index_spec.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,10 @@ def with_buildpack_cache(directory)
9797

9898
def touch(root, extension, content = '')
9999
file = File.join(root, "http:%2F%2Ffoo.com%2Ftest.txt%2F.#{extension}")
100-
File.open(file, 'w') { |f| f.write(content) }
100+
File.open(file, 'w') do |f|
101+
f.write(content)
102+
f.fsync
103+
end
101104
file
102105
end
103106

0 commit comments

Comments
 (0)