Hello all,
After stopping editor, emptying logs, and starting editor again, issue
reappeared. Now only wrapper.log contained exception stack trace:
2008/05/20 09:27:39 | STATUS | wrapper | --> Wrapper Started as Daemon
2008/05/20 09:27:39 | STATUS | wrapper | Launching a JVM...
2008/05/20 09:27:40 | INFO | jvm 1 | Wrapper (Version 3.1.2)
http://wrapper.tanukisoftware.org
2008/05/20 09:27:40 | INFO | jvm 1 |
2008/05/20 09:27:40 | INFO | jvm 1 | Starting Fortress
2008/05/20 09:27:41 | INFO | jvm 1 | Exception in thread
"localdevProjectScheduler_QuartzSchedulerThread" java.lang.LinkageError:
loader (instance of org/mortbay/http/ContextLoader): attempted
duplicate class definition for name:
"org/quartz/impl/jdbcjobstore/PostgreSQLDelegate"
2008/05/20 09:27:41 | INFO | jvm 1 | at
java.lang.ClassLoader.defineClass1(Native Method)
2008/05/20 09:27:41 | INFO | jvm 1 | at
java.lang.ClassLoader.defineClass(ClassLoader.java:620)
2008/05/20 09:27:41 | INFO | jvm 1 | at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
2008/05/20 09:27:41 | INFO | jvm 1 | at
java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
2008/05/20 09:27:41 | INFO | jvm 1 | at
java.net.URLClassLoader.access$000(URLClassLoader.java:56)
2008/05/20 09:27:41 | INFO | jvm 1 | at
java.net.URLClassLoader$1.run(URLClassLoader.java:195)
2008/05/20 09:27:41 | INFO | jvm 1 | at
java.security.AccessController.doPrivileged(Native Method)
2008/05/20 09:27:41 | INFO | jvm 1 | at
java.net.URLClassLoader.findClass(URLClassLoader.java:188)
2008/05/20 09:27:41 | INFO | jvm 1 | at
org.mortbay.http.ContextLoader.loadClass(ContextLoader.java:219)
2008/05/20 09:27:41 | INFO | jvm 1 | at
org.mortbay.http.ContextLoader.loadClass(ContextLoader.java:187)
2008/05/20 09:27:41 | INFO | jvm 1 | at
org.quartz.simpl.LoadingLoaderClassLoadHelper.loadClass(LoadingLoaderClassLoadHelper.java:61)
2008/05/20 09:27:41 | INFO | jvm 1 | at
org.quartz.simpl.CascadingClassLoadHelper.loadClass(CascadingClassLoadHelper.java:118)
2008/05/20 09:27:41 | INFO | jvm 1 | at
org.quartz.impl.jdbcjobstore.JobStoreSupport.getDelegate(JobStoreSupport.java:1964)
2008/05/20 09:27:41 | INFO | jvm 1 | at
org.quartz.impl.jdbcjobstore.JobStoreSupport.acquireNextTrigger(JobStoreSupport.java:1741)
2008/05/20 09:27:41 | INFO | jvm 1 | at
org.quartz.impl.jdbcjobstore.JobStoreTX.acquireNextTrigger(JobStoreTX.java:1218)
2008/05/20 09:27:41 | INFO | jvm 1 | at
org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:233)
2008/05/20 09:27:42 | INFO | jvm 1 | Fortress started
Regardless of the exception being thrown, everything appeared to work
fine. Nevertheless, it's not a nice feeling knowing that upon startup
hippo cms editor throws such an exception. Problematic class was only
present in sole quartz jar in cms editor installation - quartz-1.5.2.jar
After searching for same class in Hippo repository installation, it was
found in quartz-1.4.5.jar. Replacing quartz-1.5.2.jar with
quartz-1.4.5.jar in cms editor installation solved the issue, exception
is no longer being thrown.
Problem now is, that there must have been reason why newer quartz jar
was used in cms editor. Can someone from Hippo confirm that cms editor
will (continue to) work with this older version of quartz jar? Also, as
this is just a workaround which appears to work, maybe someone of Hippo
guys can have a closer look what the actual issue is - is there just
some incompatibility between cms editor and this newer quartz jar
manifesting only in this specific configuration (Ubuntu, Postgres /w
Slony master-slave configuration, Hippo repository in load balanced
configuration), or do editor and repos need to use same version of
quartz jar, or something else.
Btw, startup scripts on
http://www.hippocms.org/display/CMS/Linux+init+scripts are slightly out
of date (e.g. Suse example references start.sh and stop.sh but there are
no such files in distribution and sources of the editor nor for repos).
Anyway, they were useful as starters for creating version for Ubuntu,
and attached you can find init scripts and their respective
configuration files for Ubuntu. For them to function well, "links" needs
to be installed ("sudo apt-get install links" should do). Being a newbie
in shell scripting and linux in general, don't take these scripts too
seriously. I'd appreciate if someone more experienced can take a look at
them. Suse version of scripts used "daemon" to start and stop cms
editor, but I couldn't make editor startup like that.
Regards,
Stevo.
Bartosz Oudekerk wrote:
Stevo Slavić wrote:
Hello Bartosz,
I agree, wiki is out of date, but it wasn't a problem. There were two
issues actually, and log didn't help at all to find them. First one
was that wrong jdbc driver was used (8.2-507.jdbc4 instead of
8.3-603.jdbc4, as database is postgres 8.3). Other issue was that
wrong ip address in master/slave configuration were specified, in a
Slony replicated database configuration, load balancer was pointing
to slave as it was master, and slave refused insert/update
statement(s) cms editor tried to issue.
Good to hear you got everything working, and thanks for reporting back.
I've modified the wiki page.
Regards,
--
Met vriendelijke groet / Kind regards,
Stevo Slavić
Senior Software Developer
Levi9 Global Sourcing
------------------------------------------------------------------------
. Jan van Goyenkade 8, 1075 HP Amsterdam, The Netherlands
( (+31) (0) 20 6701 947
È (+381) (0) 63 7 258 458
* [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
^ Skype: sslavic
ü http://www.levi9.com/
Chamber of commerce Levi9 Global Sourcing BV: 34221951
Chamber of commerce Levi9 Global Sourcing Benelux BV: 34224746
------------------------------------------------------------------------
This e-mail may contain confidential or privileged information. If you
are not (one of) the intended recipient(s), please notify the sender
immediately by reply e-mail and delete this message and any attachments
permanently without retaining a copy. Any review, disclosure, copying,
distribution or taking any action in reliance on the contents of this
e-mail by persons or entities other than the intended recipient(s) is
strictly prohibited and may be unlawful.
The services of Levi9 are exclusively subject to its general terms and
conditions. These general terms and conditions can be found on
http://www.levi9.com/ and a copy will be promptly submitted to you on
your request and free of charge.
# repository
USE_REPOSITORY=1
REPOSITORY_CONFIG=/etc/repository.conf
# location and users
SITE_NAME=site
SITE_BASE=/usr/local/hippo/cms/cms
SITE_OWNER=hippo
SITE_COMMAND=/usr/local/hippo/cms/cms/bin/fortress.sh
#!/bin/bash
#
# pidfile: /var/run/
# config: /etc/site_init.conf
# EDIT THIS LINE TO SPECIFY THE CONFIGGILE
CONFFILE=/etc/cms.conf
# Avoid using root's TMPDIR
unset TMPDIR
# Check that config exists.
[ -f ${CONFFILE} ] || exit 0
. ${CONFFILE}
# check site_base
[ -z ${SITE_BASE} ] && exit 1
[ -d ${SITE_BASE} ] || exit 1
check() {
GETTEXT=`/usr/bin/links -dump ${CHECKURL} 2>/dev/null | grep HttpCon -m 1 |
sed 's/.*Http//' | sed 's/\[.*//'`
if [ -z "$GETTEXT" ]; then
return 1
fi
if [ "$GETTEXT" != "Context" ]; then
return 1
fi
return 0
}
# Repository check
check_repository() {
[ -f ${REPOSITORY_CONFIG} ] || exit 0
. ${REPOSITORY_CONFIG}
maxwait=25
local current=1
working=0
while [ $current -lt $maxwait ]; do
check
if [ $? -eq 1 ]; then
current=$(($current + 1))
sleep 1
else
current=10000
working=1
fi
done
if [ $working -eq 0 ]; then
echo "Aborting, repository not running!";
exit 1;
fi
}
RETVAL=0
start() {
RETVAL=0
if [ ${USE_REPOSITORY} -eq 1 ]; then
check_repository
fi
if [ -f ${SITE_COMMAND} ]; then
echo -n "Starting ${SITE_NAME} services as user ${SITE_OWNER}: "
su - ${SITE_OWNER} -c "${SITE_COMMAND} start"
[ $? -ne 0 ] && RETVAL=1
echo
fi
return $RETVAL
}
stop() {
RETVAL=0
if [ -f ${SITE_COMMAND} ]; then
echo -n "Stopping ${SITE_NAME} services as user ${SITE_OWNER}: "
su - ${SITE_OWNER} -c "${SITE_COMMAND} stop"
[ $? -ne 0 ] && RETVAL=1
echo
fi
return $RETVAL
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 1
esac
exit $?
# Config of the repository on the server
CHECKURL=http://127.0.0.1:56000
COMMAND=/usr/local/hippo/repos/repos/bin/fortress.sh
USERNAME=sdu
LOCKFILE=/usr/local/repos/repos/work/openjms/openjms.lock
#!/bin/bash
#
# pidfile: /var/run/
# config: /etc/site_init.conf
# EDIT THIS LINE TO SPECIFY THE CONFIGGILE
CONFFILE=/etc/repository.conf
# Avoid using root's TMPDIR
unset TMPDIR
# Check that config exists.
[ -f ${CONFFILE} ] || exit 0
. ${CONFFILE}
RETVAL=0
start() {
echo -n $"Starting repository as ${USERNAME}: "
check
if [ $? -eq 0 ]; then
echo "already running."
return 0
fi
if [ -f $LOCKFILE ]; then
/bin/rm -f $LOCKFILE
fi
su - ${USERNAME} -c "${COMMAND} start"
[ $? -ne 0 ] && RETVAL=1
echo
return $RETVAL
}
stop() {
echo -n $"Stopping repository: "
su - ${USERNAME} -c "${COMMAND} stop"
[ $? -ne 0 ] && RETVAL=1
echo
return $RETVAL
}
restart() {
stop
start
}
status() {
echo -n "Repository: "
check
if [ $? -eq 1 ]; then
echo "down."
return 1
fi
echo "up."
return 0
}
check() {
GETTEXT=`/usr/bin/links -dump ${CHECKURL} 2>/dev/null | grep HttpCon -m 1 |
sed 's/.*Http//' | sed 's/\[.*//'`
if [ -z "$GETTEXT" ]; then
return 1
fi
if [ "$GETTEXT" != "Context" ]; then
return 1
fi
return 0
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
restart
;;
*)
echo $"Usage: $0 {start|stop|restart|status}"
exit 1
esac
********************************************
Hippocms-dev: Hippo CMS development public mailinglist