Corba_Exception due to polling of attribute

Hello All

I have one attribute whose name is : x/y/z/c01_gab_bbfilter_ch2
This attribute I make dynamically.

I start the device server, device server runs fine.

Now, I define the polling period of attribute which I made dynamically which is c01_ab_bbfilter_ch2. I have set the polling period of the above attribute as 100 ms.

Now I kill(Ctrl+C) the device server and try to start it again.
Here is the error found.

Tango exception
Severity = ERROR
Error reason = API_AttrNotFound
Desc : c01_gab_bbfilter_ch2 attribute not found
Origin : MultiAttribute::get_attr_by_name

Tango exception
Severity = ERROR
Error reason = API_BadConfigurationProperty
Desc : Error when configuring polling for device LMC/C01/GAB, attr = c01_gab_bbfilter_ch2
Origin : Util::polling_configure

Received a CORBA_Exception
Exiting
terminate called after throwing an instance of 'CORBA::OBJECT_NOT_EXIST'
Aborted (core dumped).


I was able to make attribute dynamically but after defining polling period of the attribute, when i try to start the ds again, it is not able to find the attribute and gives the above error.

This was working fine till yesterday i.e. wen i define the polling period of attribute, and start the device server, it was runnnig perfect but now suddenly it started giving above error.


Any suggestions ?


Thanks and Regards
TCS-GMRT TEAM


Regards,
TCS_GMRT
Edited 8 years ago
Hi,

a dynamic attribute is exactly what is says it is i.e. dynamic as opposed to static. It has to be recreated every time you restart the device server. This should be part of the initialisation phase i.e. executed at startup. By defining a polling period on your attribute it has been memorised in the database and Tango will start polling again when you restart the device server. If the attribute does not exist it will give the error you mentioned. Check that you recreate the dynamic attribute during the initialisation phase.

Andy
Hello Andy

I recreate the attribute everytime I start the device server.

Here is the scenario:

The dynamic attribute is present in the database. Now I start the device server, it starts fine. I stop the device server and start it again, device server runs fine.

Now i define the polling period of attribute and set it as 100 ms.
I stop the device server and try to start it again, it throws the below error.


Tango exception
Severity = ERROR
Error reason = API_AttrNotFound
Desc : c01_gab_bbfilter_ch2 attribute not found
Origin : MultiAttribute::get_attr_by_name

Tango exception
Severity = ERROR
Error reason = API_BadConfigurationProperty
Desc : Error when configuring polling for device LMC/C01/GAB, attr = c01_gab_bbfilter_ch2
Origin : Util::polling_configure

Received a CORBA_Exception
Exiting
terminate called after throwing an instance of 'CORBA::OBJECT_NOT_EXIST'
Aborted (core dumped).


I check the table tango.property_attribute_device and here the attributes present were changed to NULL.
Hence it is not able to find the attribute.

BUt this happened after defining polling period of the attribute. Before defining polling period of attribute , it worked fine.

Also previously, I used to define the polling period of the attribute and start the ds again, it wont throw any error.
Now suddenly since last 2 days, it is misbehaving.

I would be obliged by your positive response.


Thanks and Regards
TCS-GMRT TEAM
Regards,
TCS_GMRT
Sounds like your database is losing properties. Check the history of the property to see when it was deleted. Does it happen randomly or when you delete the device?

Andy
Hello Andy

Sounds like your database is losing properties. Check the history of the property to see when it was deleted. Does it happen randomly or when you delete the device?

It has happened to start randomly.

Thanks and Regards
TCS-GMRT TEAM
Regards,
TCS_GMRT
Hi,

I have tried with one test Tango class and I don't have problem (C++ Tango class using Tango 9.1). I have defined the dynamic attribute polling using Jive.

Here are some questions:
- In which language is your Tango class (C++, Java, Python)?
- If it's C++, how do you program your dynamic attribute? Did you follow the HowTo about dynamic attribute?
- How do you set the attribute polling (Using Jive or in the Tango class code)?
- Which release of Tango are you using?

Regards

Emmanuel
Hello Manu

In which language is your Tango class (C++, Java, Python)?

C++

If it's C++, how do you program your dynamic attribute? Did you follow the HowTo about dynamic attribute?

Yes followed the method specified.

How do you set the attribute polling (Using Jive or in the Tango class code)?

Using Jive

Which release of Tango are you using?

tango-8.1.2-patched

Thanks and Regards
TCS-GMRT TEAM


Regards,
TCS_GMRT
Hello all

Any suggestions for the above problem ?

Thanks and Regards
TCS-GMRT TEAM
Regards,
TCS_GMRT
Hello Manu/Andy

The problem mentioned above is still there . Tango Class is in C++ and I have followed all the steps mentioned for how to make dynamic attribute. I am using tango-8.1.2 patched version and I define the attribute polling using jive.

Thanks and Regards
TCS-GMRT TEAM
Regards,
TCS_GMRT
Can you send the code? Can you start the device server with DEBUG logging switched on "-v5" on the command line and send us the output at startup when the exception is thrown.

Strange because we use polled dynamic attributes here. Maybe you can run your server on the TANGO9 virtual machine and see if it still happens.

Andy
 
Register or login to create to post a reply.