Compilation of HDB++ Configurator GUI

Dear Tango Community,

In order to understand better how to build TANGO & HDB++ from the sources, I have just created a script to automatically build and install TANGO and HDB++.
https://github.com/sblanchet/tango-install

It compiles without hiccup most of the programs except HDB++ CONFIGURATOR GUI.

I have just cloned the github repository https://github.com/tango-controls/hdbpp-configurator/ and then run maven inside.
(I have no experience with maven, so I think that I have missed something)


root@ubuntu1704:~# cd tango-install/hdbpp-configurator/

root@ubuntu1704:~/tango-install/hdbpp-configurator# mvn compile
[INFO] Scanning for projects…
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for org.tango.hdb:hdbpp-configurator:jar:2.3-SNAPSHOT
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ line 28, column 21
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-jar-plugin is missing. @ line 46, column 21
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING] 
[INFO]                                                                         
[INFO] ————————————————————————
[INFO] Building hdbpp-configurator 2.3-SNAPSHOT
[INFO] ————————————————————————
[INFO] ————————————————————————
[INFO] BUILD FAILURE
[INFO] ————————————————————————
[INFO] Total time: 0.962 s
[INFO] Finished at: 2017-09-04T14:39:23+02:00
[INFO] Final Memory: 6M/46M
[INFO] ————————————————————————
[ERROR] Failed to execute goal on project hdbpp-configurator: Could not resolve dependencies for project org.tango.hdb:hdbpp-configurator:jar:2.3-SNAPSHOT: Failed to collect dependencies at org.tango:TangORB:jar:RELEASE: Failed to read artifact descriptor for org.tango:TangORB:jar:RELEASE: Failed to resolve version for org.tango:TangORB:jar:RELEASE: Could not find metadata org.tango:TangORB/maven-metadata.xml in local (/root/.m2/repository) -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException


As an alternative, I have also tried to run the precompiled jar file from https://www.tango-controls.org
http://www.tango-controls.org/community/project-docs/hdbplusplus/hdbplusplus-doc/configuration-gui/
Direct link:
https://bintray.com/tango-controls/maven/download_file?fi
le_path=org%2Ftango%2Fhdb%2Fhdbpp-configurator%2F2.2%2Fhdbpp-configurator-2.2.jar

Then I have followed this documentation to start up the application.
http://www.esrf.eu/computing/cs/tango/tango_doc/tools_doc/hdb++-configurator/introduction.html#start-up
The application runs but when subscribing to a new variable I get an error message


"Event properties wrongly configured"

fr.esrf.TangoApi.ConnectionFailed
 at
fr.esrf.TangoDs.Except.throw_connection_failed(Except.java:616)
fr.esrf.TangoDs.Except.throw_connection_failed(Except.java:569)
fr.esrf.TangoApi.ConnectionDAODefaultImpl.command_inout(ConnectionDAODefaultImpl.java:923)
fr.esrf.TangoApi.ConnectionDAODefaultImpl.command_inout(ConnectionDAODefaultImpl.java:945)
fr.esrf.TangoApi.Connection.command_inout(Connection.java:388)
org.tango.hdb_configurator.common.ArchiverUtils.addAttribute(ArchiverUtils.java:192)
org.tango.hdb_configurator.configurator.HdbConfigurator.addSpecifiedAttribute(HdbConfigurator.java:1345)
org.tango.hdb_configurator.configurator.AttributeTree.addAttribute(AttributeTree.java:404)
org.tango.hdb_configurator.configurator.AttributeTree.treeMouseClicked(AttributeTree.java:171)
org.tango.hdb_configurator.configurator.AttributeTree.access$300(AttributeTree.java:58)
org.tango.hdb_configurator.configurator.AttributeTree$2.mouseClicked(AttributeTree.java:143)
java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:270)
java.awt.Component.processMouseEvent(Component.java:6536)
javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
java.awt.Component.processEvent(Component.java:6298)
java.awt.Container.processEvent(Container.java:2236)
java.awt.Component.dispatchEventImpl(Component.java:4889)
java.awt.Container.dispatchEventImpl(Container.java:2294)
java.awt.Component.dispatchEvent(Component.java:4711)
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
java.awt.LightweightDispatcher.processMouseEvent(Container.java:4534)
java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
java.awt.Container.dispatchEventImpl(Container.java:2280)
java.awt.Window.dispatchEventImpl(Window.java:2746)
java.awt.Component.dispatchEvent(Component.java:4711)
java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
java.awt.EventQueue.access$500(EventQueue.java:97)
java.awt.EventQueue$3.run(EventQueue.java:709)
java.awt.EventQueue$3.run(EventQueue.java:703)
java.security.AccessController.doPrivileged(Native Method)
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
java.awt.EventQueue$4.run(EventQueue.java:731)
java.awt.EventQueue$4.run(EventQueue.java:729)
java.security.AccessController.doPrivileged(Native Method)
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
org.GNOME.Accessibility.AtkWrapper$5.dispatchEvent(AtkWrapper.java:700)
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
java.awt.EventDispatchThread.run(EventDispatchThread.java:82)


I will really appreciate a hint to get out of this pitfall.

Best regards,

Sebastien
Sebastien
Hi Sebastien,

HDB++ is fully event-based. It fully relies on Tango archive events, so when you try to add an attribute to the list of attributes archived in HDB++, the HDB++ ConfigurationManager will check whether the Tango attribute you want to add is correctly configured to send archive events.
There are different ways for a tango device server to send archive events.
The easiest one is to enable the polling on this attribute (the attribute will be read every x ms) and to set up archive event properties (absolute change archive threshold, relative change archive threshold and/or the archive period) for this attribute.
If the configuration manager detects an inconsistency in the attribute configuration (polling not started or no archive event property set), it will report the error you are seeing.
Another way for a device server to send archive events is to push archive events by code directly when needed. In this case, you don't necessary need to have the polling enabled for this attribute. Depending on how is configured your device server, you might still need to configure correctly the archive event properties for this attribute.
If your device server is pushing events by code, you can click on the "Event pushed by code" checkbox in the HDB++ configurator dialog box which appears when you want to add an attribute to an archiver.

We will have a look at the MAVEN issue.

Hoping this helps,
Reynald
Rosenberg's Law: Software is easy to make, except when you want it to do something new.
Corollary: The only software that's worth making is software that does something new.
Hi again,

To verify whether the attribute you want to add is correctly configured to send archive events, I think the HDB++ configuration manager is actually trying to subscribe for archive events coming from this attribute before to add it to the system.
In your case, it might be that your device server managing your attribute was not running when you tried to add the attribute?
Or it might be your HDB++ configuration manager device server was not running?

The ConnectionFailed in the stack trace seem to indicate that something which was supposed to run was not running.

Cheers,
Reynald
Rosenberg's Law: Software is easy to make, except when you want it to do something new.
Corollary: The only software that's worth making is software that does something new.
Edited 6 years ago
Hi Sebastien
I have updated the pom.xml and I think it's better now.
I have added the bintray reference in pom.xml file.
It was in my $HOME/.m2/settings.xml file before.

Regards
Pascal
Hi Reynald and Pascal,

With the new commit b8d9c6111699a47e2e744f9d4e2da0342ceadc31 from Pascal, I can build HDB Configurator without error. When running the jar file for the first time, I have got an error
Lost Connection during command: class fr.esrf.TangoAPI.ConnectionDAODefaultImpl.command_inout
because I had an IPv6 address for localhost in my /etc/hosts
::1 localhost
After removing the IPv6 address, the error message disappears.

After that, I have applied Reynald's instructions and finaly I have successfully subscribed to sys/tg_test/1/double_scalar (see the screenshot). It seems to work, because I see the new records in the mysql database.

Now I will focus on the HDB Viewer to plot the data.

Thank for your help.
Sebastien
Edited 6 years ago
 
Register or login to create to post a reply.