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

in Bug Reports
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
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
0
Comments
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.
Cheers,
Michi.
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.
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:
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.
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 ...
Cheers,
Michi.
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.
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.
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 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);
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
http://www.zeroc.com/doc/Ice-3.3.0-IceTouch/manual/PropRef.50.17.html
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.