Archived

This forum has been archived. Please start a new discussion on GitHub.

Trouble converting IceStorm to 3.2.

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

>>> 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 ]

Comments

  • benoit
    benoit Rennes, France
    Hi Rob,

    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.
  • Hi 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
  • benoit
    benoit Rennes, France
    Hi 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.