Trouble converting IceStorm to 3.2.

in Help Center
Hi all,
I'm converting my Ice 3.0.1 setup to 3.2, but I'm stumped at one little configuration issue; that is, Storm doesn't start anymore. Something is wrong with its Berkeley DB location, and I've tried all the settings I can think of. I've set IceBox.InheritProperties=1 as per issue21.pdf, but that made no difference at all. From IceStorm.err:
Berkeley DB: DbEnv "IceStorm": IceStorm: No such file or directory
(Full log, see below)
I've set Freeze.DbEnv.IceStorm.DbHome to a valid path, but it seems DB keeps complaining about 'IceStorm'.
I'm secretly hoping someone will recognize this, and remind me that I forgot to set variable X.Blah.Y
Cheers,
Rob
stderr:
[ 03/14/07 19:16:13.015 Network: stopping to accept tcp connections at 127.0.0.1:4429 ]
[ 03/14/07 19:21:10.796 Network: attempting to bind to tcp socket 127.0.0.1:0 ]
[ 03/14/07 19:21:10.796 Network: accepting tcp connections at 127.0.0.1:4478 ]
[ 03/14/07 19:21:10.828 Berkeley DB: DbEnv "IceStorm": IceStorm: No such file or directory ]
[ 03/14/07 19:21:10.828 Berkeley DB: DbEnv "IceStorm": IceStorm\log.0000000001: No such file or directory ]
[ 03/14/07 19:21:10.828 Berkeley DB: DbEnv "IceStorm": PANIC: No such file or directory ]
[ 03/14/07 19:21:10.828 Berkeley DB: DbEnv "IceStorm": IceStorm: No such file or directory ]
03/14/07 19:21:10.859 error: ServiceManager: exception while starting service IceStorm:
SharedDbEnv.cpp:323: Freeze::DatabaseException:
DbEnv::open: DB_RUNRECOVERY: Fatal error, run database recovery
[ 03/14/07 19:21:10.875 Network: stopping to accept tcp connections at 127.0.0.1:4478 ]
I'm converting my Ice 3.0.1 setup to 3.2, but I'm stumped at one little configuration issue; that is, Storm doesn't start anymore. Something is wrong with its Berkeley DB location, and I've tried all the settings I can think of. I've set IceBox.InheritProperties=1 as per issue21.pdf, but that made no difference at all. From IceStorm.err:
Berkeley DB: DbEnv "IceStorm": IceStorm: No such file or directory
(Full log, see below)
I've set Freeze.DbEnv.IceStorm.DbHome to a valid path, but it seems DB keeps complaining about 'IceStorm'.
I'm secretly hoping someone will recognize this, and remind me that I forgot to set variable X.Blah.Y

Cheers,
Rob
>>> server describe IceStorm icebox `IceStorm' { service manager endpoints = `tcp -h 127.0.0.1' application = `EQMS' application uuid = `8b50637c-b796-4b13-b4b7-244346e70579' application revision = `2' node = `eqmssv1' exe = `icebox.exe' pwd = `C:/opt/sol/eqms/bin' activation = `on-demand' properties { IceBox.InstanceName = `IceStorm' IceBox.ServiceManager.Endpoints = `tcp -h 127.0.0.1' IceBox.ServiceManager.RegisterProcess = `1' Freeze.Trace.DbEnv = `2' IceStorm.Trace.Topic = `2' Ice.Trace.Network = `2' IceStorm.Trace.Subscriber = `1' IceStorm.Trace.Flush = `1' Freeze.DbEnv.IceStorm.DbHome = `C:/opt/sol/eqms/bin/db' Ice.ThreadPool.Server.Size = `30' Ice.ServerIdleTime = `0' Ice.Override.Timeout = `5000' Ice.Override.ConnectTimeout = `1000' Ice.RetryIntervals = `0' IceStorm.TopicManager.Endpoints = `default' IceStorm.Publish.Endpoints = `tcp' IceStorm.TopicManager.AdapterId = `IceStorm.IceStorm.IceStorm.TopicManager' IceStorm.Publish.AdapterId = `IceStorm.IceStorm.IceStorm.Publish' } service `IceStorm' { entry = `IceStormService,32:createIceStorm' adapter `IceStorm.TopicManager' { id = `IceStorm.IceStorm.IceStorm.TopicManager' endpoints = `default' register process = `false' server lifetime = `true' well-known object { identity = `IceStorm/TopicManager' type = `::IceStorm::TopicManager' } } adapter `IceStorm.Publish' { id = `IceStorm.IceStorm.IceStorm.Publish' endpoints = `tcp' register process = `false' server lifetime = `true' } properties { } } }
stderr:
[ 03/14/07 19:16:13.015 Network: stopping to accept tcp connections at 127.0.0.1:4429 ]
[ 03/14/07 19:21:10.796 Network: attempting to bind to tcp socket 127.0.0.1:0 ]
[ 03/14/07 19:21:10.796 Network: accepting tcp connections at 127.0.0.1:4478 ]
[ 03/14/07 19:21:10.828 Berkeley DB: DbEnv "IceStorm": IceStorm: No such file or directory ]
[ 03/14/07 19:21:10.828 Berkeley DB: DbEnv "IceStorm": IceStorm\log.0000000001: No such file or directory ]
[ 03/14/07 19:21:10.828 Berkeley DB: DbEnv "IceStorm": PANIC: No such file or directory ]
[ 03/14/07 19:21:10.828 Berkeley DB: DbEnv "IceStorm": IceStorm: No such file or directory ]
03/14/07 19:21:10.859 error: ServiceManager: exception while starting service IceStorm:
SharedDbEnv.cpp:323: Freeze::DatabaseException:
DbEnv::open: DB_RUNRECOVERY: Fatal error, run database recovery
[ 03/14/07 19:21:10.875 Network: stopping to accept tcp connections at 127.0.0.1:4478 ]
0
Comments
Setting IceBox.InheritProperties=1 in the IceBox configuration file should work. However, it would be cleaner to set the IceStorm properties in the service configuration file instead.
You should take a look at the IceStorm demos and the config/templates.xml file provided with your distribution for examples on how to configure IceStorm.
Let us know if you need more information!
Cheers
Benoit.
Thanks, the template was helpful. It all came down to a missing <dbenv/> element, which wasn't required in 3.0 apparently.
That took me a long time to find, and I'm not even that much of an Ice newbie. Would it be better for IceGrid to issue a warning if the element is missing? From the log I posted, it was not clear to me at all what might be the problem.
Cheers!
Rob
The <dbenv> element isn't really required. You can continue to specify the IceStorm database environment properties explicitly in your descriptor too.
I suspect your problem came from the fact that you specified the IceStorm service configuration properties in the IceBox server descriptor instead of the service descriptor -- this worked with Ice <= 3.1 but not with 3.2 since IceBox server properties aren't inherited automatically anymore by services.
Cheers,
Benoit.