Mercurial > p > roundup > code
view scripts/Docker/roundup_start @ 6610:db3f0ba75b4a
Change checkpoint_data and restore_connection_on_error to subtransaction
checkpoint_data and restore_connection_on_error used to commit() and
rollback() the db connection. This causes additional I/O and load.
Changed them to use 'SAVEPOINT name' and 'ROLLBACK TO name' to get a
faster method for handling errors within a tranaction.
One thing to note is that postgresql (unlike SQL std) doesn't
overwrite an older savepoint with he same name. It keeps all
savepoints but only rolls back to the newest one with a given name.
This could be a resource issue. I left a commented out release
statement in case somebody runs into an issue due to too many
savepoints. I expect it to slow down the import but....
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sat, 29 Jan 2022 11:29:36 -0500 |
| parents | b5fb268b7f04 |
| children | 7b9bddda9d2d |
line wrap: on
line source
#! /bin/sh # When container starts verify that the trackers are configured. # If they are, start the server otherwise run roundup-admin # for installation and initialization. # "$@" should be a set of tracker=directory pairs. if ! [ -z "$SHELL_DEBUG" ]; then set -xv fi trap exit INT do_exit=0 for tracker_spec in "$@"; do # IFS== set a=b doesn't assign $1 and $2 in busybox ash # it also clobbers '$@'. 'echo mumble | read' starts read in a # subshell so vars are not available in parent. IFS="=" read tracker directory <<- EOE $tracker_spec EOE # ^ is a tab for use with <<- # was $tracker_spec in the form of a=b, if not ignore it. # allows setting CMD to -i index_template issue=tracker for example. if [ -z "$directory" ]; then continue; fi # something is specified or built wrong. Don't start. if [ ! -d "$directory" ]; then printf "Unable to find directory %s. Exiting\n" "$directory" exit 1 fi # user must define web in config.ini. if ! grep '^\s*web\s\s*=\s\s*' "$directory/config.ini" > /dev/null; then roundup-admin -i "$directory" install do_exit=1 fi # we have a valid config.ini so init database if not done if [ $do_exit == 0 -a ! -e "$directory/.init_done" ]; then if roundup-admin -i "$directory" init; then cat > "$directory/.init_done" <<- EOD Don't delete this file. The docker startup needs it so it won't re-initialze the database destroying all the data. EOD else do_exit=1 fi fi done # if any config.ini needs editing don't start up. if [ $do_exit == 0 ]; then # make roundup-server process 1 with exec exec roundup-server -n 0.0.0.0 "$@" fi exit 0
