Reusing Properties - not?

HouseBot Plugin Development Discussions.
Post Reply
Circe640
Advanced Member
Posts: 206
Joined: Tue Oct 07, 2003 10:01 am
Location: Columbus, OH
Contact:

Reusing Properties - not?

Post by Circe640 »

In order to save property usage I re/created MoviePro and JukeBot to use the same set of Thumbnail properties.



Installed MoviePro and everythig is kosher. Installed JukeBot with the new common TC Thumb1Cover etc properties as MoviePro.

Now HouseBot errors at startup with

Trace Section 'ask Block' generated an assertion, File <C:\HB\Development\ServerFrame\TaskBlock.cpp> Line:<151>

Unable to find property, Device ID =[39] Property ID = [774]



Yuck



Decided to investigate and sure enough device 39 [MoviePro] points to a series of Properties 774 to 8xx which were the initially installed common TC (Thumbcover) properties in the DeviceProperty Table. However those property numbers no longer exist in the the Property table.



It appears that when I installed JukeBot after MoviePro, because this also has registration code that would set up the same TC properties rather than ignoring the registration for properties that already exist, HouseBot deleted the old properties with the same name and recreated them with new Property numbers leaving MoviePro 'HIGH AND DRY' pointing to property numbers that no longer exist.



ERGO! the start-up errors --
ScottBot
Site Admin
Posts: 2787
Joined: Thu Feb 13, 2003 6:46 pm
Location: Georgia (USA)
Contact:

Post by ScottBot »

You can reuse the same Properties between two Devices. It's done often with the existing Devices in the system.



Was the Property ID [774] not in the Properties table, or was it not mapped to the Device in the DevicePropertyMap table?



If you delete a Device, HouseBot will remove the reference to the Properties in the DevicePropertyMap table, but it never deletes Properties from the Properties table. Therefore, it should not have effected the other Device setup. You should also not be able to delete a Device if it is referenced in a Task, so I'm not sure how you got to the original error.



Were you doing any configuration imports, or did you get this with normal usage?
Scott
Circe640
Advanced Member
Posts: 206
Joined: Tue Oct 07, 2003 10:01 am
Location: Columbus, OH
Contact:

This was a semi-normal install

Post by Circe640 »

I had previously cleared the old properties from the properties table and did not touch the currently used 700 series TC properties so I believe it happened during what should have been a normal install. I have tracked down where the problem currently is and corrected the records in the HB database. This is getting scary --- I am beinging to understand the HB db



The properties were not in the property table -- it appeared that when the second plugin created the same properties, the original group was deleted and the new group created with new property numbers but the Device Property table did not change for the 1st plugin so it was still pointing to the properties under the old property numbers. The really strange part is the theme for the 1st plugin was updated to point to the new property numbers.



In summary



Installed MoviePro TC properties get ids 773 --- 803

MoviePro DeviceProperty Table points to 773 through 803

MoviePro Sample Theme TC references point to 773 - 803



Installed JukeBot with its common TC properties

TC properties 773 ---- 803 diappear

TC properties are now ids 1023 --1063

MoviePro TC Device Properties point to 773 -- 803

JukeBot TC Device Properties point to 1023 --- 1063

MoviePro Sample Theme TC references point to p_id 1023 -- 1063

JukeBot SampleTheme TC references point to p_id 1023 -- 1063



All other properties are correct only the common properties caused a problem.



THEORY: May be wrong but it looked like this

When I re-installed the plugin the system re-creates the properties with new property numbers and then looks for the device that matches the plugin and updates the DeviceProperty table to point the device to the new Property IDs.

When I installed JukeBot after MoviePro, it found the common TC properties and re-created them under the new property IDs.

It then went looking for the JukeBot device to update in DeviceProperties or since this was a new device instance did not check to see if there was another device that used the same properties and therefore the MoviePro PropertyDevice table as well as the TaskList table were not updated with the new property ID's
Post Reply