]> git.openstreetmap.org Git - chef.git/commitdiff
Run osm2pgsql replication in a loop instead of relying on Restart=always
authorTom Hughes <tom@compton.nu>
Thu, 23 Nov 2023 00:39:40 +0000 (00:39 +0000)
committerTom Hughes <tom@compton.nu>
Thu, 23 Nov 2023 00:44:23 +0000 (00:44 +0000)
cookbooks/tile/recipes/default.rb
cookbooks/tile/templates/default/replicate-custom.erb [moved from cookbooks/tile/templates/default/replicate.erb with 100% similarity]
cookbooks/tile/templates/default/replicate-osm2pgsql.erb [new file with mode: 0644]

index 4df7c25547dd60a14891c6a348a217006557f4ed..3966954f8061fdea05c366247eb79e479610cd7c 100644 (file)
@@ -543,7 +543,7 @@ if node[:tile][:replication][:engine] == "custom"
   end
 
   template "/usr/local/bin/replicate" do
-    source "replicate.erb"
+    source "replicate-custom.erb"
     owner "root"
     group "root"
     mode "755"
@@ -609,6 +609,13 @@ elsif node[:tile][:replication][:engine] == "osm2pgsql"
     mode "775"
   end
 
+  template "/usr/local/bin/replicate" do
+    source "replicate-osm2pgsql.erb"
+    owner "root"
+    group "root"
+    mode "755"
+  end
+
   systemd_service "expire-tiles" do
     description "Tile dirtying service"
     type "simple"
@@ -655,19 +662,19 @@ elsif node[:tile][:replication][:engine] == "osm2pgsql"
     after "postgresql.service"
     wants "postgresql.service"
     user "tile"
-    exec_start "/bin/osm2pgsql-replication update --database gis --post-processing /usr/local/bin/replicate-post -- #{osm2pgsql_arguments.join(' ')}"
+    exec_start "/usr/local/bin/replicate"
     sandbox :enable_network => true
     restrict_address_families "AF_UNIX"
     read_write_paths [
       "/store/database/nodes",
       "/var/lib/replicate"
     ]
-    restart "always"
-    restart_sec 30
+    restart "on-failure"
   end
 
   service "replicate" do
     action [:enable, :start]
+    subscribes :restart, "template[/usr/local/bin/replicate]"
     subscribes :restart, "systemd_service[replicate]"
   end
 end
diff --git a/cookbooks/tile/templates/default/replicate-osm2pgsql.erb b/cookbooks/tile/templates/default/replicate-osm2pgsql.erb
new file mode 100644 (file)
index 0000000..88917df
--- /dev/null
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+# DO NOT EDIT - This file is being maintained by Chef
+
+while [ 1 = 1 ]
+do
+  /bin/osm2pgsql-replication update \
+    --database gis \
+    --post-processing /usr/local/bin/replicate-post \
+    -- \
+    --number-processes=1 \
+    --log-progress=false \
+    --expire-tiles=13-19 \
+    --expire-output=/var/lib/replicate/dirty-tiles.txt \
+<% if node[:tile][:database][:multi_geometry] -%>
+    --multi-geometry \
+<% end -%>
+<% if node[:tile][:database][:hstore] -%>
+    --hstore \
+<% end -%>
+<% if node[:tile][:database][:tag_transform_script] -%>
+    --tag-transform-script=<%= node[:tile][:database][:tag_transform_script] %>
+<% end -%>
+
+    sleep 30
+done