nominatim: adapt updates to current load
[chef.git] / cookbooks / nominatim / templates / default / updater.erb
1 #!/bin/bash -e
2
3 # DO NOT EDIT - This file is being maintained by Chef
4
5 # Change to Nominatim directory
6 cd <%= @bindir %>
7
8 num_cpus=`cat /proc/cpuinfo | grep -c processor`
9 num_cpus=(($num_cpus - 2))
10
11 while [ ! -f "<%= @update_stop_file %>" ]
12 do
13     # Send output to the log (logrotatable)
14     exec >> <%= @logfile %> 2>&1
15     starttime=`date +%s`
16
17     current_load=`cat /proc/loadavg | cut -f 2 -d ' ' | sed 's:\..*::'`
18
19     if [[ $current_load -lt $num_cpus ]]
20     then
21         INST=2
22     else
23         INST=1
24     fi
25
26     ./utils/update.php --no-npi --import-osmosis --index-instances $INST
27
28 <% if node[:nominatim][:enable_git_updates] -%>
29     pushd <%= @srcdir %>
30     if git fetch origin; then
31       # will trigger recompilation if necessary
32       git merge origin/<%= @branch %>
33     else
34       echo "WARNING: git fetch failed."
35     fi
36     popd
37 <% end -%>
38
39     # sleep a bit if updates take less than a minute
40     endtime=`date +%s`
41     elapsed=$((endtime - starttime))
42     if [[ $elapsed -lt 60 ]]
43     then
44         sleepy=$((60 - $elapsed))
45         echo "Sleeping for ${sleepy}s..."
46         sleep $sleepy
47     fi
48 done