X-Git-Url: https://git.openstreetmap.org./chef.git/blobdiff_plain/5310624b7dd65e3d65b5faf7225f914bdbc1e76a..c2325561308e78e68ba5bc18fd321ff831cbf2ef:/cookbooks/planet/files/default/replication-bin/replicate-changesets?ds=inline diff --git a/cookbooks/planet/files/default/replication-bin/replicate-changesets b/cookbooks/planet/files/default/replication-bin/replicate-changesets index 5d47266e6..cee87bd26 100755 --- a/cookbooks/planet/files/default/replication-bin/replicate-changesets +++ b/cookbooks/planet/files/default/replication-bin/replicate-changesets @@ -96,7 +96,7 @@ class ChangesetBuilder def add_comments(xml, cs) # grab the visible changeset comments as well - res = @conn.exec("select cc.author_id, u.display_name as author, cc.body, cc.created_at from changeset_comments cc join users u on cc.author_id=u.id where cc.changeset_id=#{cs.id} and cc.visible order by cc.created_at asc") + res = @conn.exec("select cc.author_id, u.display_name as author, cc.body, (cc.created_at at time zone 'utc') as created_at from changeset_comments cc join users u on cc.author_id=u.id where cc.changeset_id=#{cs.id} and cc.visible order by cc.created_at asc") xml["comments_count"] = res.num_tuples.to_s # early return if there aren't any comments @@ -127,11 +127,8 @@ end # sync a directory to guarantee it's on disk. have to recurse to the root # to guarantee sync for newly created directories. def fdirsync(d) - while d != "/" - Dir.open(d) do |dh| - io = IO.for_fd(dh.fileno) - io.fsync - end + while d != "/" && d != "." + fsync(d) d = File.dirname(d) end end @@ -142,7 +139,7 @@ end class Replicator def initialize(config) @config = YAML.safe_load(File.read(config)) - @state = YAML.safe_load(File.read(@config["state_file"]), [Time]) + @state = YAML.safe_load(File.read(@config["state_file"]), :permitted_classes => [Time], :fallback => {}) @conn = PG::Connection.connect(@config["db"]) # get current time from the database rather than the current system @now = @conn.exec("select now() as now").map { |row| Time.parse(row["now"]) }[0] @@ -156,7 +153,7 @@ class Replicator # for us to look at anything that was closed recently, and filter from # there. changesets = @conn - .exec("select id, created_at, closed_at, num_changes from changesets where closed_at > ((now() at time zone 'utc') - '1 hour'::interval)") + .exec("select id, (created_at at time zone 'utc') as created_at, (closed_at at time zone 'utc') as closed_at, num_changes from changesets where (closed_at at time zone 'utc') > ((now() at time zone 'utc') - '1 hour'::interval)") .map { |row| Changeset.new(row) } .select { |cs| cs.activity_between?(last_run, @now) } @@ -165,13 +162,13 @@ class Replicator # but also add any changesets which have new comments new_ids = @conn - .exec("select distinct changeset_id from changeset_comments where created_at >= '#{last_run}' and created_at < '#{@now}' and visible") + .exec("select distinct changeset_id from changeset_comments where (created_at at time zone 'utc') >= '#{last_run}' and (created_at at time zone 'utc') < '#{@now}' and visible") .map { |row| row["changeset_id"].to_i } .reject { |c_id| cs_ids.include?(c_id) } new_ids.each do |id| @conn - .exec("select id, created_at, closed_at, num_changes from changesets where id=#{id}") + .exec("select id, (created_at at time zone 'utc') as created_at, (closed_at at time zone 'utc') as closed_at, num_changes from changesets where id=#{id}") .map { |row| Changeset.new(row) } .each { |cs| changesets << cs } end @@ -263,9 +260,11 @@ class Replicator if @config["s3_dir"] s3_file = s3_stem + ".osm.gz" s3_state_file = s3_stem + ".state.txt" + s3_state_config_file = @config["s3_dir"] + "/state.yaml" system("/opt/awscli/v2/current/bin/aws", "--profile=osm-pds-upload", "s3", "cp", "--storage-class=INTELLIGENT_TIERING", "--no-progress", data_file, s3_file) system("/opt/awscli/v2/current/bin/aws", "--profile=osm-pds-upload", "s3", "cp", "--storage-class=INTELLIGENT_TIERING", "--no-progress", data_state_file, s3_state_file) + system("/opt/awscli/v2/current/bin/aws", "--profile=osm-pds-upload", "s3", "cp", "--storage-class=INTELLIGENT_TIERING", "--no-progress", @config["state_file"], s3_state_config_file) end end