X-Git-Url: https://git.openstreetmap.org/chef.git/blobdiff_plain/f19db442427082f556938bf358621476c1e93e8f..021e477322b745e0d01836e24fd4488378d82ebc:/cookbooks/planet/files/default/replication-bin/replicate-changesets diff --git a/cookbooks/planet/files/default/replication-bin/replicate-changesets b/cookbooks/planet/files/default/replication-bin/replicate-changesets index 3c1aef151..97cd8a09d 100644 --- a/cookbooks/planet/files/default/replication-bin/replicate-changesets +++ b/cookbooks/planet/files/default/replication-bin/replicate-changesets @@ -188,7 +188,7 @@ class Replicator sequence = (@state.key?("sequence") ? @state["sequence"] + 1 : 0) data_file = @config["data_dir"] + format("/%03d/%03d/%03d.osm.gz", sequence / 1000000, (sequence / 1000) % 1000, (sequence % 1000)) tmp_state = @config["state_file"] + ".tmp" - tmp_data = "/tmp/changeset_data.osm.tmp" + tmp_data = data_file + ".tmp" # try and write the files to tmp locations and then # move them into place later, to avoid in-progress # clashes, or people seeing incomplete files. @@ -196,18 +196,20 @@ class Replicator FileUtils.mkdir_p(File.dirname(data_file)) Zlib::GzipWriter.open(tmp_data) do |fh| fh.write(changeset_dump(open_changesets)) + fh.finish.fdatasync end @state["sequence"] = sequence File.open(tmp_state, "w") do |fh| fh.write(YAML.dump(@state)) + fh.fdatasync end # sanity check: the files we're moving into place # should be non-empty. - fail "Temporary gzip file should exist, but doesn't." unless File.exist?(tmp_data) - fail "Temporary state file should exist, but doesn't." unless File.exist?(tmp_state) - fail "Temporary gzip file should be non-empty, but isn't." if File.zero?(tmp_data) - fail "Temporary state file should be non-empty, but isn't." if File.zero?(tmp_state) + raise "Temporary gzip file should exist, but doesn't." unless File.exist?(tmp_data) + raise "Temporary state file should exist, but doesn't." unless File.exist?(tmp_state) + raise "Temporary gzip file should be non-empty, but isn't." if File.zero?(tmp_data) + raise "Temporary state file should be non-empty, but isn't." if File.zero?(tmp_state) FileUtils.mv(tmp_data, data_file) FileUtils.mv(tmp_state, @config["state_file"])