Archived

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

IceGrid/IceStorm/IceGridAdmin/IceStormAdmin from 3.1 to 3.3 Changes

I upgraded Ice on my PC from Ice 3.1 to Ice 3.3.
I have the following issues.

IceGrid requires a login under 33 that it did not under 31. Note that I do set the AdminPermissionsVerifier.
IceStorm: The documentation should explain the significance of the 33 vs 31 in the IceBox.Service.IceStorm line.
IceStorm: The documentation should clearly note the config file reference on the createService line is not a typo. I thought it was because I was already providing the filename as part of the command line a la 3.1.
IceStormAdmin: won't start.
All file contents are below.

==IceGrid.config==
# clients connect to this port
IceGrid.Registry.Client.Endpoints=tcp -p 10000 -h mecca
IceGrid.Registry.Server.Endpoints=tcp -h mecca
IceGrid.Registry.Admin.Endpoints=tcp -h mecca
# Internal Endpoints are used by nodes and the graphical admin tool. Must be defined.
IceGrid.Registry.Internal.Endpoints=tcp -p 10001 -h mecca
IceGrid.Registry.Data=t:\Lle Development\DiagnosticBEnds\FSD_Server\IceServices\IceGridRegistry
IceGrid.Registry.DynamicRegistration=1
IceGrid.Registry.AdminPermissionsVerifier=IceGrid/NullPermissionsVerifier
# if 0, no object adapter trace. if 1, trace registration, removal and replication.
IceGrid.Registry.Trace.Adapter=1
# if 0, no locator trace. if 1, trace failures to locate adapter or register endpoints.
# if 2, more verbose than 1.
IceGrid.Registry.Trace.Locator=2
IceGrid.Registry.Trace.Application=1
IceGrid.Registry.Trace.Object=1
IceGrid.Registry.Trace.Server=2
IceGrid.Registry.Trace.Session=2
# Network Tracing
# 0 = no network tracing ;# 1 = trace connection establishment and closure
# 2 = like 1, but more detailed; 3 = like 2, but also trace data transfer
#Ice.Trace.Network=3
#Ice.Trace.Location=2
#Ice.Trace.Protocol=1

==IceStorm.config==
# If you want to use indirect proxies.
Ice.Default.Locator=IceGrid/Locator:default -p 10000 -h mecca
#Ice.Default.Locator=IceGrid/Locator:default -p 11010 -h walnut
# This tells IceBox that we want a running IceStorm service. IceBox runs IceStorm.
IceBox.Service.IceStorm=IceStormService,33:createIceStorm --Ice.Config=IceStorm.config
# This directory must exist.
Freeze.DbEnv.IceStorm.DbHome=T:\Lle Development\DiagnosticBEnds\FSD_Server\IceServices\IceStormDb
# This property defines the endpoints on which the IceStorm TopicManager listens.
# default tcp; else udp
IceStorm.TopicManager.Endpoints=tcp -h mecca -p 9999
# This property defines the endpoints on which the topic publisher objects listen.
# default = tcp; else udp
IceStorm.Publish.Endpoints=tcp -h mecca
# Amount of time in milliseconds between flushes for batch mode
# transfer. The minimum allowable value is 100ms.
IceStorm.Flush.Timeout = 2000
# Flush Tracing (for batch mode transfer flushing)
# 0 = no tracing; 1 = trace activity of flusher thread
IceStorm.Trace.Flush=1
# Topic Tracing
# 0 = no tracing; 1 = trace topic links, subscription and unsubscription
# 2 = like 1 but more verbose, including QOS
IceStorm.Trace.Topic=2
# Subscriber Tracing
# 0 = no tracing; 1 = subscriber diagnostics (subscription, unsubscription)
IceStorm.Trace.Subscriber=1
# TopicManager Tracing
# 0 = no tracing; 1 = trace topic creation
IceStorm.Trace.TopicManager=1
# Network Tracing
# 0 = no network tracing ;# 1 = trace connection establishment and closure
# 2 = like 1, but more detailed; 3 = like 2, but also trace data transfer
Ice.Trace.Network=3
Ice.Trace.Location=2
Ice.Trace.Protocol=1

==IceGridAdmin.config==
Ice.Default.Locator=IceGrid/Locator:default -p 10000 -h mecca

==IceStormAdmin.config==
# This property is used by the clients to connect to IceStorm.
IceStorm.TopicManager.Proxy=IceStorm/TopicManager:default -p 9999 -h mecca

==startIceGrid.bat==
IceGridRegistry --Ice.Config=IceGrid.config

==startIceStorm.bat==
Icebox --Ice.Config=IceStorm.config


==startIceGridAdmin.bat==
icegridadmin --Ice.Config=IceGridAdmin.config
pause

==startIceStormAdmin.bat==
iceStormAdmin --Ice.Config=IceStormAdmin.config
pause
T:\Lle Development\DiagnosticBEnds\FSD_Server\IceServices>iceStormAdmin --Ice.Config=IceStormAdmin.config
iceStormAdmin: no manager proxies configured
T:\Lle Development\DiagnosticBEnds\FSD_Server\IceServices>pause
Press any key to continue . . .

Larry O'Heron
585 275-1737
UofR/LLE

Comments

  • I should add that I changed my %PATH% var back to c:\Ice-3.1.0\bin and the corresponding IceStormService line in IceStorm.config, and all worked successfully. I was able to create topics with IceStormAdmin and peruse the list of adapters with IceGrid.

    So what is different about Ice 3.3 configuration of IceGrid, IceStorm, IceGridAdmin and IceStormAdmin?

    I don't see why it should make a difference as long as the %PATH% var is set correctly, but I did not uninstall 3.1. I have them both installed.
  • icestormadmin requires the property IceStorm.TopicManager.Default to be set to the proxy of the topic manager. In IceStormAdmin.config, you set IceStorm.TopicManager.Proxy instead, so icestormadmin cannot find the topic manager. The clue is in the error message:
    iceStormAdmin: no manager proxies configured

    Cheers,

    Michi.
  • Thanks. One down.
    Under 3.3 IceGridAdmin is still requiring me to login. Under 3.1, I did not have to by setting a NullPermisssionsVerifier. How do I get icegridadmin to not require me to login?
    The 3.1 IceGrid and IceGridAdmin config files are posted earlier in the thread.
  • benoit
    benoit Rennes, France
    Hi,

    If you use the null permissions verifier, you can just set a dummy username/password in the configuration of the IceGrid admin tool. For example the IceGrid demos use the following:
    IceGridAdmin.Username=foo
    IceGridAdmin.Password=bar
    

    See Issue #21 of the Ice newsletter for information on other Ice 3.2 changes and Issue #28 and the Ice 3.3.0 release notes for information on Ice 3.3 changes.

    Let us know if you need more information,

    Cheers,
    Benoit.
  • Doing better.
    I believe that the 3.3 manual is wrong about IceStorm.
    The sample code shows IceStorm::Qos qos, but such a creature does not exist anymore.
    The code examples should be Dictionary<string, string> qos ...
  • Thanks for the bug report! I'll update the manual for the next release.

    Cheers,

    Michi.
  • benoit
    benoit Rennes, France
    Could you point us to this code sample in the manual?

    IceStorm::QoS still exists actually (see the defintion in slice/IceStorm/IceStorm.ice) -- it's mapped to Dictionary<string, string> in C# (and to IceStorm::QoS in C++).

    Cheers,
    Benoit.
  • PP 1583 - 87 & 1592.
    To be specific, in C# Intellisense does not display IceStorm.QoS and it will not compile.
    I changed the "IceStorm.Qos qos" to "Dictionary<string, string> qos" and it compiled.
    I did not try under c++/cli.
  • matthew
    matthew NL, Canada
    That is simply how the C# mapping works.
    module IceStorm
    {
    dictionary<String, String> QoS;
    }
    

    Because there is no type aliasing in C#, this type maps to Dictionary<String, String>. You can review the full details on the C# mapping in the Ice manual.
  • I believe you but my vs2005 c# code does not.
    I verified that I am using the 3.3.0 assemblies for Ice and IceStorm. Intellisense, the object browser and the compiler all fail to recognize QoS under namespace Ice and IceStorm. The closest I could find was QoSHelper.
    If you have any insight, that would be appreciated. For now, I coded the below and it seems to work.

    Dictionary<string, string> qos = null;
    topic.subscribe(qos, callbackProxy);
  • matthew
    matthew NL, Canada
    There is no C# type named QoS, so therefore it makes sense that intellisense doesn't find it. This is simply how the Slice to C# mapping works. The sections you were looking at in the manual deal with C++. In C++ there is a type named QoS due to how the slice to C++ mapping works.
  • michi wrote: »
    icestormadmin requires the property IceStorm.TopicManager.Default to be set to the proxy of the topic manager. In IceStormAdmin.config, you set IceStorm.TopicManager.Proxy instead, so icestormadmin cannot find the topic manager. The clue is in the error message:



    Cheers,

    Michi.

    The following configuration parameter can't work for IceStormAdmin

    IceStorm.TopicManager.Default=IceStorm/TopicManager:default -p PORT

    But the following configuration parameter work:

    IceStormAdmin.TopicManager.Default=IceStorm/TopicManager:default -p PORT
  • matthew
    matthew NL, Canada
    I think this is documented correctly in the manual.

    http://www.zeroc.com/doc/Ice-3.3.0-IceTouch/manual/PropRef.50.17.html
  • Thanks.

    Now we are trying to use IceStorm as our Publisher-Subscriber core to form our Event-Drived-Application for our website. There are a lot of events at our website. These events are triggered by user's actions, timer or other problem. We need a collector to collector there events and do some actions or do nothing if we can ignore such event.

    There are some publisher-subscirber frameworks, for example, JMS, XMPP's publisher-subscriber and IceStorm.

    Last year, I trid to use ActiveMQ, but I can't resolve the classload problem of AMQ library in OSGi container, I had tried my best to resolve it, but fail.

    Now we choose IceStorm, there is no classload problem in OSGi container, and it make me happy.