Tango ATK cannot use #dbase=no in AttributeList.add(...)
we are running a Tango Server on small ARM device (with Debian9 distribution)
with a file-db, such that we do not need the MySQL server installed on this device.
When trying to connect to attributes of this server from a custom written
Tango ATK application, we encounter ConnectionErrors. The same fully qualified
attribute name works with a tango.AttributeProxy in python, though.
I also noticed that the atkpanel can connect. The difference in that case is that
the atkpanel asks for a device name and thus probably derives all attribute objects
from the device object.
The underlying problem seems to be code in the AEntityFactory.java in ATKCore.
I have managed to patch the functions extractDeviceName, extractDeviceNameAdvanced,
and extractEntityName to be aware of a possible "#dbase=no" substring and ran a
succesful test afterwards, where I was able to connect to the attributes of this
device via AttributeList.add(String attrname) (as recommended in the ATK tutorials).
If you specify an attribute as
then the corresponding device string must be
However, the original extractDeviceName function simply discards everything
after the last slash, so the #dbase=no part is lost and the device is not
The attached file is a patched version of AEntityFactory.java where the original
source code was downloaded from github on 2018-02-28.
Thank you very much for your contribution.
I think the best way to contribute would be to create a Pull Request on the atk GitHub repository with your proposed patch. Then the ATK maintainers could review your code with the tools provided by Github and the commit associated to your patch would mention your name.
You need to create a Github account to be able to create a Pull Request (PR).
The PR is not mandatory but is easier to handle for the maintainers.
Thank you very much again for your contribution!
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.