Project

General

Profile

1
#!/bin/bash
2
# Adds scrubbed taxondeterminations to VegBIEN
3
# Usage: make inputs/.TNRS/public.unscrubbed_taxondetermination_view/scrub-remake [wait=1]
4

    
5
# Handle being run as a .make script
6
exec >&2
7
unset MAKEFLAGS MFLAGS
8

    
9
selfDir="$(dirname -- "$0")"
10
selfDirName="$(basename -- "$selfDir")"
11

    
12
# Use tnrs.make's lockfile because can't be importing while tnrs.make is
13
# scrubbing. tnrs.make leaves tnrs in an incomplete state while running because
14
# the accepted names are parsed *after* their matched names. Using a separate
15
# lockfile would cause some accepted names to be missing.
16
waitself "tnrs/tnrs.make"
17

    
18
# Config
19
let pause=2*60*60 # sec; = 2 hr
20
let maxPause=4*60*60 # sec; =4 hr; must be >= max partition import time (1.5 hr)
21
test "$pause" -le "$maxPause" || exit -1
22

    
23
unset n # ($n would limit the # rows/iteration, rather than the total rows)
24

    
25
cd "$selfDir/.." # needed by make
26

    
27
make () { env make --makefile=../input.Makefile "$@"; }
28

    
29
log_="$(make -s "$selfDirName"/log_file)"
30
exec >>"$log_" 2>&1
31

    
32
rowsAdded ()
33
{
34
    test -e "$log_" || { echo "Log does not exist: $log_" >&2; exit;}
35
    tail -100 "$log_"|grep -E '^Inserted [1-9][0-9]* new rows into database$' \
36
        >/dev/null
37
}
38

    
39
let totalPause=0
40
while true; do
41
    make "$selfDirName"/import
42
    
43
    if ! rowsAdded; then
44
        test -n "$wait" || break
45
        echo "Waited $totalPause sec total"
46
        let 'totalPause += pause'
47
        test "$totalPause" -gt "$maxPause" && break
48
        echo "Waiting $pause sec..."
49
        sleep "$pause" # wait for more rows
50
        continue # try again
51
    fi
52
    # otherwise, rows found
53
    let totalPause=0
54
done
(6-6/8)