Files @ 5dfaa9f1fdb2
Branch filter:

Location: kallithea/init.d/kallithea-daemon-redhat

Mads Kiilerich
templates: disable special mako error handler - ironically this gives better stack traces

Errors in templates could give truncated stack traces pointing at the mako
error handler:

...
File '.../kallithea/kallithea/controllers/files.py', line 202 in index
return render('files/files.html')
File '.../kallithea-venv/lib/python2.7/site-packages/pylons/templating.py', line 244 in render_mako
cache_type=cache_type, cache_expire=cache_expire)
File '.../kallithea-venv/lib/python2.7/site-packages/pylons/templating.py', line 219 in cached_template
return render_func()
File '.../kallithea-venv/lib/python2.7/site-packages/pylons/templating.py', line 241 in render_template
return literal(template.render_unicode(**globs))
File '.../kallithea-venv/lib/python2.7/site-packages/mako/template.py', line 452 in render_unicode
as_unicode=True)
File '.../kallithea-venv/lib/python2.7/site-packages/mako/runtime.py', line 803 in _render
**_kwargs_for_callable(callable_, data))
File '.../kallithea-venv/lib/python2.7/site-packages/mako/runtime.py', line 835 in _render_context
_exec_template(inherit, lclcontext, args=args, kwargs=kwargs)
File '.../kallithea-venv/lib/python2.7/site-packages/mako/runtime.py', line 855 in _exec_template
_render_error(template, context, compat.exception_as())
File '.../kallithea-venv/lib/python2.7/site-packages/mako/runtime.py', line 864 in _render_error
result = template.error_handler(context, error)
File '.../kallithea-venv/lib/python2.7/site-packages/pylons/error.py', line 22 in handle_mako_error
raise (exc, None, sys.exc_info()[2])
AttributeError: 'tuple' object has no attribute 'node'

Without the mako error handler we get a full and useful stack trace - including
calls in generated but readable .html.py files.

File '.../kallithea/kallithea/controllers/files.py', line 202 in index
return render('files/files.html')
File '.../kallithea-venv/lib/python2.7/site-packages/pylons/templating.py', line 244 in render_mako
cache_type=cache_type, cache_expire=cache_expire)
File '.../kallithea-venv/lib/python2.7/site-packages/pylons/templating.py', line 219 in cached_template
return render_func()
File '.../kallithea-venv/lib/python2.7/site-packages/pylons/templating.py', line 241 in render_template
return literal(template.render_unicode(**globs))
File '.../kallithea-venv/lib/python2.7/site-packages/mako/template.py', line 452 in render_unicode
as_unicode=True)
File '.../kallithea-venv/lib/python2.7/site-packages/mako/runtime.py', line 803 in _render
**_kwargs_for_callable(callable_, data))
File '.../kallithea-venv/lib/python2.7/site-packages/mako/runtime.py', line 835 in _render_context
_exec_template(inherit, lclcontext, args=args, kwargs=kwargs)
File '.../kallithea-venv/lib/python2.7/site-packages/mako/runtime.py', line 860 in _exec_template
callable_(context, *args, **kwargs)
File '.../data/templates/base/root.html.py', line 219 in render_body
__M_writer(escape(next.body()))
File '.../data/templates/base/base.html.py', line 57 in render_body
__M_writer(escape(next.main()))
File '.../data/templates/files/files.html.py', line 121 in render_main
runtime._include_file(context, u'files_ypjax.html', _template_uri)
File '.../kallithea-venv/lib/python2.7/site-packages/mako/runtime.py', line 730 in _include_file
callable_(ctx, **_kwargs_for_include(callable_, context._data, **kwargs))
File '.../data/templates/files/files_ypjax.html.py', line 57 in render_body
runtime._include_file(context, u'files_source.html', _template_uri)
File '.../kallithea-venv/lib/python2.7/site-packages/mako/runtime.py', line 730 in _include_file
callable_(ctx, **_kwargs_for_include(callable_, context._data, **kwargs))
File '.../data/templates/files/files_source.html.py', line 117 in render_body
__M_writer(escape(h.pygmentize_annotation(c.repo_name,c.file,linenos=True,anchorlinenos=True,lineanchors='L',cssclass="code-highlight")))
File '.../kallithea/kallithea/lib/helpers.py', line 360 in pygmentize_annotation
return literal(markup_whitespace(annotate_highlight(filenode, url_func(repo_name), **kwargs)))
File '.../kallithea/kallithea/lib/annotate.py', line 57 in annotate_highlight
highlighted = highlight(filenode.content, lexer, formatter)
File '.../kallithea-venv/lib/python2.7/site-packages/pygments/__init__.py', line 87 in highlight
return format(lex(code, lexer), formatter, outfile)
File '.../kallithea-venv/lib/python2.7/site-packages/pygments/__init__.py', line 66 in format
formatter.format(tokens, realoutfile)
File '.../kallithea-venv/lib/python2.7/site-packages/pygments/formatter.py', line 95 in format
return self.format_unencoded(tokensource, outfile)
File '.../kallithea-venv/lib/python2.7/site-packages/pygments/formatters/html.py', line 850 in format_unencoded
for t, piece in source:
File '.../kallithea/kallithea/lib/annotate.py', line 168 in _wrap_tablelinenos
for el in self.filenode.annotate))
File '.../kallithea/kallithea/lib/annotate.py', line 167 in <genexpr>
annotate = ''.join((self.annotate_from_changeset(el[2]())
File '.../kallithea/kallithea/lib/vcs/backends/hg/changeset.py', line 273 in get_file_annotate
sha = hex(annotate_data[0].node())
#!/bin/sh
########################################
#### THIS IS A REDHAT INIT.D SCRIPT ####
########################################

##################################################
#
# Kallithea server startup script
# Recommended default-startup: 2 3 4 5
# Recommended default-stop: 0 1 6
#
##################################################


APP_NAME="kallithea"
# the location of your app
# since this is a web app, it should go in /var/www
APP_PATH="/var/www/$APP_NAME"

CONF_NAME="production.ini"

# write to wherever the PID should be stored, just ensure
# that the user you run paster as has the appropriate permissions
# same goes for the log file
PID_PATH="/var/run/kallithea/pid"
LOG_PATH="/var/log/kallithea/kallithea.log"

# replace this with the path to the virtual environment you
# made for Kallithea
PYTHON_PATH="/opt/python_virtualenvironments/kallithea-venv"

RUN_AS="kallithea"

DAEMON="$PYTHON_PATH/bin/paster"

DAEMON_OPTS="serve --daemon \
    --user=$RUN_AS \
    --group=$RUN_AS \
    --pid-file=$PID_PATH \
    --log-file=$LOG_PATH $APP_PATH/$CONF_NAME"

DESC="kallithea-server"
LOCK_FILE="/var/lock/subsys/$APP_NAME"

# source CentOS init functions
. /etc/init.d/functions

RETVAL=0

remove_pid () {
  rm -f ${PID_PATH}
  rmdir `dirname ${PID_PATH}`
}

ensure_pid_dir () {
  PID_DIR=`dirname ${PID_PATH}`
  if [ ! -d ${PID_DIR} ] ; then
    mkdir -p ${PID_DIR}
    chown -R ${RUN_AS}:${RUN_AS} ${PID_DIR}
    chmod 755 ${PID_DIR}
  fi
}

start_kallithea () {
    ensure_pid_dir
    PYTHON_EGG_CACHE="/tmp" daemon --pidfile $PID_PATH \
        --user $RUN_AS "$DAEMON $DAEMON_OPTS"
    RETVAL=$?
    [ $RETVAL -eq 0 ] && touch $LOCK_FILE
    return $RETVAL
}

stop_kallithea () {
    if [ -e $LOCK_FILE ]; then
      killproc -p $PID_PATH
      RETVAL=$?
      rm -f $LOCK_FILE
      rm -f $PID_PATH
    else
      RETVAL=1
    fi
    return $RETVAL
}

status_kallithea() {
  if [ -e $LOCK_FILE ]; then
    # exit with non-zero to indicate failure
    RETVAL=1
  else
    RETVAL=0
  fi
  return $RETVAL
}

restart_kallithea () {
    stop_kallithea
    start_kallithea
    RETVAL=$?
}

case "$1" in
  start)
    echo -n $"Starting $DESC: "
    start_kallithea
    echo
    ;;
  stop)
    echo -n $"Stopping $DESC: "
    stop_kallithea
    echo
    ;;
  status)
    status_kallithea
    RETVAL=$?
    if [ ! $RETVAL -eq 0 ]; then
      echo "Kallithea server is running..."
    else
      echo "Kallithea server is stopped."
    fi
    ;;
  restart)
    echo -n $"Restarting $DESC: "
    restart_kallithea
    echo
    ;;
  *)
    echo $"Usage: $0 {start|stop|restart|status}"
    RETVAL=1
    ;;
esac

exit $RETVAL