ports/167897: Cannot complete installation of net-mgmt/zenoss - "service zenoss init" fails with error "Unable to create the initial Zenoss object database"
Matthew X. Economou
xenophon+freebsd at irtnog.org
Mon May 14 22:30:08 UTC 2012
>Number: 167897
>Category: ports
>Synopsis: Cannot complete installation of net-mgmt/zenoss - "service zenoss init" fails with error "Unable to create the initial Zenoss object database"
>Confidential: no
>Severity: critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Mon May 14 22:30:04 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator: Matthew X. Economou
>Release: 9.0-RELEASE-p1
>Organization:
IRTNOG
>Environment:
FreeBSD cinep001bsdgw.irtnog.net 9.0-RELEASE-p1 FreeBSD 9.0-RELEASE-p1 #8: Fri May 11 17:08:28 EDT 2012 root at cinep001bsdgw.irtnog.net:/usr/obj/usr/src/sys/FIREWALL amd64
>Description:
In the default installation of Zenoss from the net-mgmt/zenoss port,
the initialization routine fails as show in the following transcript:
cinip101bsdlog# service zenoss init
MySQL server hostname [localhost]:
MySQL server root username [root]:
MySQL server root password []:
MySQL event database name [events]:
MySQL username for Zenoss events database [zenoss]:
MySQL password for zenoss [zenoss]:
MySQL server port [3306]:
+-----------+
| VERSION() |
+-----------+
| 5.5.24 |
+-----------+
Wrote file /usr/local/zenoss/etc/zeo.conf
Wrote file /usr/local/zenoss/bin/zeoctl
Changed mode for /usr/local/zenoss/bin/zeoctl to 755
Wrote file /usr/local/zenoss/bin/runzeo
Changed mode for /usr/local/zenoss/bin/runzeo to 755
Starting Zope Object Database
.
daemon process started, pid=10302
Loading initial Zenoss objects into the Zeo database
(this can take a few minutes)
Unable to create the initial Zenoss object database
Note that the initialization routine configures Zope and starts a ZEO
server, which provides access multi-client access to a Zope object
database (ZODB). ZEO locks the database files in order to prevent
data corruption by processes attempting to access the ZODB directly
(bypassing ZEO). Zenbuild logs following error messages to
${LOCALBASE}/zenoss/init/zenbuild.log, which implies that zenbuild is
attempting to access the ZODB files directly, instead of going through
ZEO:
Creating events database using zenevent build...
creating database
dropping any triggers that my already exist
loading schema
loading stored procedures
events database created and loaded
ERROR:zc.lockfile:Error locking file /usr/local/zenoss/var/Data.fs.lock; pid=UNKNOWN
Traceback (most recent call last):
File "/usr/local/zenoss/lib/python/zc/lockfile/__init__.py", line 76, in __init__
_lock_file(fp)
File "/usr/local/zenoss/lib/python/zc/lockfile/__init__.py", line 59, in _lock_file
raise LockError("Couldn't lock %r" % file.name)
LockError: Couldn't lock '/usr/local/zenoss/var/Data.fs.lock'
2012-05-14 03:42:46 ERROR zc.lockfile Error locking file /usr/local/zenoss/var/Data.fs.lock; pid=UNKNOWN
Traceback (most recent call last):
File "/usr/local/zenoss/lib/python/zc/lockfile/__init__.py", line 76, in __init__
_lock_file(fp)
File "/usr/local/zenoss/lib/python/zc/lockfile/__init__.py", line 59, in _lock_file
raise LockError("Couldn't lock %r" % file.name)
LockError: Couldn't lock '/usr/local/zenoss/var/Data.fs.lock'
Traceback (most recent call last):
File "/usr/local/zenoss/Products/ZenModel/zenbuild.py", line 135, in <module>
zb = zenbuild()
File "/usr/local/zenoss/Products/ZenModel/zenbuild.py", line 40, in __init__
self.app = Zope2.app()
File "/usr/local/zenoss/lib/python/Zope2/__init__.py", line 51, in app
startup()
File "/usr/local/zenoss/lib/python/Zope2/__init__.py", line 47, in startup
_startup()
File "/usr/local/zenoss/lib/python/Zope2/App/startup.py", line 72, in startup
DB = dbtab.getDatabase('/', is_root=1)
File "/usr/local/zenoss/lib/python/Zope2/Startup/datatypes.py", line 287, in getDatabase
db = factory.open(name, self.databases)
File "/usr/local/zenoss/lib/python/Zope2/Startup/datatypes.py", line 185, in open
DB = self.createDB(database_name, databases)
File "/usr/local/zenoss/lib/python/Zope2/Startup/datatypes.py", line 182, in createDB
return ZODBDatabase.open(self, databases)
File "/usr/local/zenoss/lib/python/ZODB/config.py", line 101, in open
storage = section.storage.open()
File "/usr/local/zenoss/lib/python/ZODB/config.py", line 169, in open
return FileStorage(config.path, **options)
File "/usr/local/zenoss/lib/python/ZODB/FileStorage/FileStorage.py", line 125, in __init__
self._lock_file = LockFile(file_name + '.lock')
File "/usr/local/zenoss/lib/python/zc/lockfile/__init__.py", line 76, in __init__
_lock_file(fp)
File "/usr/local/zenoss/lib/python/zc/lockfile/__init__.py", line 59, in _lock_file
raise LockError("Couldn't lock %r" % file.name)
zc.lockfile.LockError: Couldn't lock '/usr/local/zenoss/var/Data.fs.lock'
Also note that if one tries to start Zenoss, the Zope application
server along with several Zenoss components will not run:
cinip101bsdlog# service zenoss start
Daemon: zeoctl daemon process already running; pid=10302
Daemon: zopectl .
daemon process started, pid=10467
Daemon: zenhub starting...
Daemon: zenjobs starting...
Daemon: zenping starting...
Daemon: zensyslog starting...
Daemon: zenstatus starting...
Daemon: zenactions starting...
Daemon: zentrap starting...
Daemon: zenmodeler starting...
Daemon: zenperfsnmp starting...
Daemon: zencommand starting...
Daemon: zenprocess starting...
Daemon: zenwin starting...
Daemon: zeneventlog starting...
cinip101bsdlog# service zenoss start
Daemon: zeoctl daemon process already running; pid=10302
Daemon: zopectl
daemon process started, pid=10924
Daemon: zenhub starting...
Daemon: zenjobs starting...
Daemon: zenping starting...
Daemon: zensyslog starting...
Daemon: zenstatus is already running
Daemon: zenactions starting...
Daemon: zentrap starting...
Daemon: zenmodeler is already running
Daemon: zenperfsnmp is already running
Daemon: zencommand is already running
Daemon: zenprocess is already running
Daemon: zenwin is already running
Daemon: zeneventlog is already running
cinip101bsdlog# ps ax
PID TT STAT TIME COMMAND
10301 ?? IsJ 0:00.02 /usr/local/zenoss/bin/python /usr/local/zenoss/lib/python/zdaemon/zdrun.py -S /usr/local/zenoss/lib/python/ZEO/zeoctl.xml -C /usr/local/zenoss/
10302 ?? IJ 0:00.66 /usr/local/zenoss/bin/python /usr/local/zenoss/lib/python/ZEO/runzeo.py -C /usr/local/zenoss/etc/zeo.conf (python2.6)
10620 ?? IJ 0:00.04 /usr/local/zenoss/bin/python /usr/local/zenoss/Products/ZenStatus/zenstatus.py --configfile /usr/local/zenoss/etc/zenstatus.conf --cycle --daem
10720 ?? IJ 0:00.05 /usr/local/zenoss/bin/python /usr/local/zenoss/Products/DataCollector/zenmodeler.py --configfile /usr/local/zenoss/etc/zenmodeler.conf --cycle
10754 ?? IJ 0:00.03 /usr/local/zenoss/bin/python /usr/local/zenoss/Products/ZenRRD/zenperfsnmp.py --configfile /usr/local/zenoss/etc/zenperfsnmp.conf --cycle --dae
10778 ?? IJ 0:00.03 /usr/local/zenoss/bin/python /usr/local/zenoss/Products/ZenRRD/zencommand.py --configfile /usr/local/zenoss/etc/zencommand.conf --cycle --daemo
10816 ?? IJ 0:00.04 /usr/local/zenoss/bin/python /usr/local/zenoss/Products/ZenRRD/zenprocess.py --configfile /usr/local/zenoss/etc/zenprocess.conf --cycle --daemo
10843 ?? IJ 0:00.06 /usr/local/zenoss/bin/python /usr/local/zenoss/Products/ZenWin/zenwin.py --configfile /usr/local/zenoss/etc/zenwin.conf --cycle --daemon (pytho
10874 ?? SJ 0:00.06 /usr/local/zenoss/bin/python /usr/local/zenoss/Products/ZenWin/zeneventlog.py --configfile /usr/local/zenoss/etc/zeneventlog.conf --cycle --dae
12394 ?? IWsJ 0:00.00 /bin/sh /usr/local/bin/mysqld_safe --defaults-extra-file=/var/db/mysql/my.cnf --user=mysql --datadir=/var/db/mysql --pid-file=/var/db/mysql/cin
12475 ?? IJ 0:11.23 /usr/local/libexec/mysqld --defaults-extra-file=/var/db/mysql/my.cnf --basedir=/usr/local --datadir=/var/db/mysql --plugin-dir=/usr/local/lib/m
66615 ?? SsJ 0:00.71 sendmail: accepting connections (sendmail)
66619 ?? IWsJ 0:00.00 sendmail: Queue runner at 00:30:00 for /var/spool/clientmqueue (sendmail)
66625 ?? IsJ 0:00.11 /usr/sbin/cron -s
66834 ?? IsJ 0:00.11 /usr/sbin/syslogd -b 10.63.1.101 -c
66851 ?? IsJ 0:00.06 /usr/sbin/rpcbind -h 10.63.1.101
11300 1 R+J 0:00.00 ps ax
66692 1 IWJ 0:00.00 login [pam] (login)
66702 1 SJ 0:00.24 -csh (csh)
67498 1 TWJ 0:00.00 /bin/sh /usr/bin/man portmaster
67508 1 TWJ 0:00.00 more
cinip101bsdlog# sockstat -4l
USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS
zenoss python2.6 10302 7 tcp4 10.63.1.101:8100 *:*
mysql mysqld 12475 10 tcp4 10.63.1.101:3306 *:*
root rpcbind 66851 9 udp4 10.63.1.101:111 *:*
root rpcbind 66851 10 udp4 *:* *:*
root rpcbind 66851 12 udp4 10.63.1.101:724 *:*
root rpcbind 66851 13 tcp4 10.63.1.101:111 *:*
root rpcbind 66851 14 tcp4 *:* *:*
root syslogd 66834 6 udp4 10.63.1.101:514 *:*
root sendmail 66615 3 tcp4 10.63.1.101:25 *:*
Zope reports the same lockfile error as zenbuild:
2012-05-14T03:48:11 INFO ZServer HTTP server started at Mon May 14 03:48:11 2012
Hostname: 0.0.0.0
Port: 8080
------
2012-05-14T03:48:13 ERROR zc.lockfile Error locking file /usr/local/zenoss/var/Data.fs.lock; pid=UNKNOWN
Traceback (most recent call last):
File "/usr/local/zenoss/lib/python/zc/lockfile/__init__.py", line 76, in __init__
_lock_file(fp)
File "/usr/local/zenoss/lib/python/zc/lockfile/__init__.py", line 59, in _lock_file
raise LockError("Couldn't lock %r" % file.name)
LockError: Couldn't lock '/usr/local/zenoss/var/Data.fs.lock'
>How-To-Repeat:
This happens in the default install of the net-mgmt/zenoss port.
>Fix:
In order to get Zenoss working, the attached patch must be applied to
${LOCALBASE}/zenoss/etc/zope.conf. This reconfigures the Zope
web application server underlying Zenoss to use ZEO instead of
accessing the ZODB directly. This configuration is required because
multiple Zenoss components need to access the ZODB simultaneously.
After updating the Zope configuration to use ZEO, shutdown Zenoss and
re-run the initialization routine as shown below:
cinip101bsdlog# service zenoss stop
Daemon: zeneventlog stopping...
Daemon: zenwin stopping...
Daemon: zenprocess stopping...
Daemon: zencommand stopping...
Daemon: zenperfsnmp stopping...
Daemon: zenmodeler stopping...
Daemon: zentrap stopping...
already stopped
Daemon: zenactions stopping...
already stopped
Daemon: zenstatus stopping...
Daemon: zensyslog stopping...
already stopped
Daemon: zenping stopping...
already stopped
Daemon: zenjobs stopping...
already stopped
Daemon: zenhub stopping...
already stopped
Daemon: zopectl daemon manager not running
Daemon: zeoctl .
daemon process stopped
cinip101bsdlog# service zenoss init
MySQL server hostname [localhost]:
MySQL server root username [root]:
MySQL server root password []:
MySQL event database name [events]:
MySQL username for Zenoss events database [zenoss]:
MySQL password for zenoss [zenoss]:
MySQL server port [3306]:
+-----------+
| VERSION() |
+-----------+
| 5.5.24 |
+-----------+
Starting Zope Object Database
.
daemon process started, pid=26057
Loading initial Zenoss objects into the Zeo database
(this can take a few minutes)
ZentinelPortal loaded at zport
Starting Zope Server
.
daemon process started, pid=26369
=========================================================
zensocket must be setuid. As root, execute the following:
chown root:zenoss /usr/local/zenoss/bin/zensocket
chmod 04750 /usr/local/zenoss/bin/zensocket
=========================================================
Successfully installed Zenoss
cinip101bsdlog# chown root:zenoss /usr/local/zenoss/bin/zensocket
cinip101bsdlog# chmod 04750 /usr/local/zenoss/bin/zensocket
cinip101bsdlog# service zenoss start
Daemon: zeoctl daemon process already running; pid=26057
Daemon: zopectl daemon process already running; pid=26369
Daemon: zenhub starting...
Daemon: zenjobs starting...
Daemon: zenping starting...
Daemon: zensyslog starting...
Daemon: zenstatus starting...
Daemon: zenactions starting...
Daemon: zentrap starting...
Daemon: zenmodeler starting...
Daemon: zenperfsnmp starting...
Daemon: zencommand starting...
Daemon: zenprocess starting...
Daemon: zenwin starting...
Daemon: zeneventlog starting...
cinip101bsdlog# ps ax
PID TT STAT TIME COMMAND
12394 ?? IWsJ 0:00.00 /bin/sh /usr/local/bin/mysqld_safe --defaults-extra-file=/var/db/mysql/my.cnf --user=mysql --datadir=/var/db/mysql --pid-file=/var/db/mysql/cin
12475 ?? IJ 0:29.72 /usr/local/libexec/mysqld --defaults-extra-file=/var/db/mysql/my.cnf --basedir=/usr/local --datadir=/var/db/mysql --plugin-dir=/usr/local/lib/m
26056 ?? IsJ 0:00.05 /usr/local/zenoss/bin/python /usr/local/zenoss/lib/python/zdaemon/zdrun.py -S /usr/local/zenoss/lib/python/ZEO/zeoctl.xml -C /usr/local/zenoss/
26057 ?? SJ 0:29.56 /usr/local/zenoss/bin/python /usr/local/zenoss/lib/python/ZEO/runzeo.py -C /usr/local/zenoss/etc/zeo.conf (python2.6)
26368 ?? IsJ 0:00.03 /usr/local/zenoss/bin/python /usr/local/zenoss/lib/python/zdaemon/zdrun.py -S /usr/local/zenoss/lib/python/Zope2/Startup/zopeschema.xml -b 10 -
26369 ?? IJ 0:05.98 /usr/local/zenoss/bin/python /usr/local/zenoss/zopehome/runzope -C /usr/local/zenoss/etc/zope.conf (python2.6)
26860 ?? IJ 0:01.47 /usr/local/zenoss/bin/python /usr/local/zenoss/Products/ZenHub/zenhub.py --configfile /usr/local/zenoss/etc/zenhub.conf --cycle --daemon (pytho
26887 ?? SJ 0:00.24 /usr/local/zenoss/bin/python /usr/local/zenoss/Products/Jobber/zenjobs.py --configfile /usr/local/zenoss/etc/zenjobs.conf --cycle --daemon (pyt
26967 ?? IJ 0:00.12 /usr/local/zenoss/bin/python /usr/local/zenoss/Products/ZenStatus/zenstatus.py --configfile /usr/local/zenoss/etc/zenstatus.conf --cycle --daem
26995 ?? IJ 0:06.26 /usr/local/zenoss/bin/python /usr/local/zenoss/Products/ZenEvents/zenactions.py --configfile /usr/local/zenoss/etc/zenactions.conf --cycle --da
27066 ?? IJ 0:00.28 /usr/local/zenoss/bin/python /usr/local/zenoss/Products/DataCollector/zenmodeler.py --configfile /usr/local/zenoss/etc/zenmodeler.conf --cycle
27090 ?? IJ 0:00.11 /usr/local/zenoss/bin/python /usr/local/zenoss/Products/ZenRRD/zenperfsnmp.py --configfile /usr/local/zenoss/etc/zenperfsnmp.conf --cycle --dae
27114 ?? IJ 0:00.11 /usr/local/zenoss/bin/python /usr/local/zenoss/Products/ZenRRD/zencommand.py --configfile /usr/local/zenoss/etc/zencommand.conf --cycle --daemo
27140 ?? IJ 0:00.10 /usr/local/zenoss/bin/python /usr/local/zenoss/Products/ZenRRD/zenprocess.py --configfile /usr/local/zenoss/etc/zenprocess.conf --cycle --daemo
27171 ?? IJ 0:00.14 /usr/local/zenoss/bin/python /usr/local/zenoss/Products/ZenWin/zenwin.py --configfile /usr/local/zenoss/etc/zenwin.conf --cycle --daemon (pytho
27201 ?? IJ 0:00.10 /usr/local/zenoss/bin/python /usr/local/zenoss/Products/ZenWin/zeneventlog.py --configfile /usr/local/zenoss/etc/zeneventlog.conf --cycle --dae
66615 ?? SsJ 0:01.39 sendmail: accepting connections (sendmail)
66619 ?? IWsJ 0:00.00 sendmail: Queue runner at 00:30:00 for /var/spool/clientmqueue (sendmail)
66625 ?? SsJ 0:00.23 /usr/sbin/cron -s
66834 ?? IsJ 0:00.21 /usr/sbin/syslogd -b 10.63.1.101 -c
66851 ?? SsJ 0:00.10 /usr/sbin/rpcbind -h 10.63.1.101
27485 1 R+J 0:00.00 ps ax
66692 1 IWJ 0:00.00 login [pam] (login)
66702 1 SJ 0:00.27 -csh (csh)
67498 1 TWJ 0:00.00 /bin/sh /usr/bin/man portmaster
67508 1 TWJ 0:00.00 more
cinip101bsdlog# sockstat -4l
USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS
zenoss python2.6 26860 15 tcp4 10.63.1.101:8789 *:*
zenoss python2.6 26860 19 tcp4 10.63.1.101:8081 *:*
zenoss python2.6 26369 3 tcp4 10.63.1.101:8080 *:*
zenoss python2.6 26057 7 tcp4 10.63.1.101:8100 *:*
mysql mysqld 12475 10 tcp4 10.63.1.101:3306 *:*
root rpcbind 66851 9 udp4 10.63.1.101:111 *:*
root rpcbind 66851 10 udp4 *:* *:*
root rpcbind 66851 12 udp4 10.63.1.101:724 *:*
root rpcbind 66851 13 tcp4 10.63.1.101:111 *:*
root rpcbind 66851 14 tcp4 *:* *:*
root syslogd 66834 6 udp4 10.63.1.101:514 *:*
root sendmail 66615 3 tcp4 10.63.1.101:25 *:*
Patch attached with submission follows:
1042,1065c
<zodb_db main>
# The full mount-point syntax is:
#
# mount-point <localpath>[:<remotepath>]
#
# localpath - the path where the storage is mounted in this instance
# remotepath - is the path to the object in the storage where it is mounted
# from. This defaults to whatever is supplied for localpath.
mount-point /
# ZODB cache, in number of objects
cache-size 5000
<zeoclient>
# See .../ZODB/component.xml for directives (sectiontype
# "zeoclient").
server localhost:8100
storage 1
name zeostorage
var $INSTANCE/var
# ZEO client cache, in bytes
cache-size 20MB
# Uncomment to have a persistent disk cache
#client zeo1
</zeoclient>
</zodb_db>
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list