Skip to content

Commit 5d6af18

Browse files
committed
Run expiry as a separate service for osm2pgsql replication
1 parent 9005630 commit 5d6af18

File tree

3 files changed

+56
-27
lines changed

3 files changed

+56
-27
lines changed

cookbooks/tile/recipes/default.rb

+32-13
Original file line numberDiff line numberDiff line change
@@ -596,24 +596,44 @@
596596
subscribes :restart, "systemd_service[replicate]"
597597
end
598598
elsif node[:tile][:replication][:engine] == "osm2pgsql"
599-
service "expire-tiles.path" do
600-
action [:disable, :stop]
599+
template "/usr/local/bin/expire-tiles" do
600+
source "expire-tiles-osm2pgsql.erb"
601+
owner "root"
602+
group "root"
603+
mode "755"
601604
end
602605

603-
systemd_path "expire-tiles" do
604-
action :delete
606+
directory "/var/lib/replicate/expire-queue" do
607+
owner "tile"
608+
group "_renderd"
609+
mode "775"
610+
end
611+
612+
systemd_service "expire-tiles" do
613+
description "Tile dirtying service"
614+
type "simple"
615+
user "_renderd"
616+
exec_start "/usr/local/bin/expire-tiles"
617+
nice 10
618+
sandbox true
619+
restrict_address_families "AF_UNIX"
620+
read_write_paths tile_directories + [
621+
"/var/lib/replicate/expire-queue"
622+
]
605623
end
606624

607-
service "expire-tiles" do
608-
action :stop
625+
systemd_path "expire-tiles" do
626+
description "Tile dirtying trigger"
627+
directory_not_empty "/var/lib/replicate/expire-queue"
609628
end
610629

611-
systemd_service "expire-tiles" do
612-
action :delete
630+
service "expire-tiles.path" do
631+
action [:enable, :start]
632+
subscribes :restart, "systemd_path[expire-tiles]"
613633
end
614634

615-
template "/usr/local/bin/expire-tiles" do
616-
source "expire-tiles-osm2pgsql.erb"
635+
template "/usr/local/bin/replicate-post" do
636+
source "replicate-post.erb"
617637
owner "root"
618638
group "root"
619639
mode "755"
@@ -635,11 +655,10 @@
635655
after "postgresql.service"
636656
wants "postgresql.service"
637657
user "tile"
638-
exec_start "/bin/osm2pgsql-replication update --database gis --post-processing /usr/local/bin/expire-tiles -- #{osm2pgsql_arguments.join(' ')}"
658+
exec_start "/bin/osm2pgsql-replication update --database gis --post-processing /usr/local/bin/replicate-post -- #{osm2pgsql_arguments.join(' ')}"
639659
sandbox :enable_network => true
640660
restrict_address_families "AF_UNIX"
641-
read_write_paths tile_directories + [
642-
"/srv/tile.openstreetmap.org/tiles",
661+
read_write_paths [
643662
"/store/database/nodes",
644663
"/var/lib/replicate"
645664
]
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
1-
#!/bin/sh -e
1+
#!/usr/bin/ruby
22

33
# DO NOT EDIT - This file is being maintained by Chef
44

5-
sequence="$1"
6-
timestamp="$2"
5+
args = [
6+
"--socket=/var/run/renderd/renderd.sock",
7+
"--tile-dir=/srv/tile.openstreetmap.org/tiles",
8+
"--touch-from=13",
9+
"--min-zoom=13"
10+
]
711

8-
render_expired \
9-
--map=default \
10-
--socket=/var/run/renderd/renderd.sock \
11-
--tile-dir=/srv/tile.openstreetmap.org/tiles \
12-
--min-zoom=13 --max-zoom=19 \
13-
--touch-from=13 < /var/lib/replicate/dirty-tiles.txt
14-
15-
rm -f /var/lib/replicate/dirty-tiles.txt
16-
17-
echo "$sequence" > /var/log/replicate/sequence.txt
18-
echo "$timestamp" > /var/log/replicate/timestamp.txt
12+
Dir.glob("/var/lib/replicate/expire-queue/changes-*.txt").sort.each do |f|
13+
<% node[:tile][:styles].each do |name,details| -%>
14+
system("/usr/bin/render_expired", "--map=<%= name %>", *args, "--max-zoom=<%= details[:max_zoom] %>", :in=> f) &&
15+
<% end -%>
16+
File::unlink(f)
17+
end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#!/bin/sh -e
2+
3+
# DO NOT EDIT - This file is being maintained by Chef
4+
5+
sequence="$1"
6+
timestamp="$2"
7+
8+
mv /var/lib/replicate/dirty-tiles.txt /var/lib/replicate/expire-queue/changes-${sequence}.txt
9+
10+
echo "$sequence" > /var/lib/replicate/sequence.txt
11+
echo "$timestamp" > /var/lib/replicate/timestamp.txt

0 commit comments

Comments
 (0)