Added some changes to the metering device object to correct the possibility of a crash during a lost connection disabling of the timers.
We have seen two sites that have exhibited crashes with a logged stack trace on the same line of code.
This line of code deals with the disabling/enabling of certain timers during a loss of connection to the equipment of a metering device.
While we have not been able reproduce in the lab we believe the changes in this version should correct the problem.
Included the VMware paravirtualized scsi driver in the vm and installer images.
This version only makes a change in the vm version.
The driver has been included for testing with VMware sites where ISCSI is being used for the host storage.
Reworked day of week timer threading to prevent day of week timers from getting stuck in an elapsed state when they are supposed to flip back to not elapsed 10 seconds after execution.
Added an hourly safety catch to catch any that are in the wrong state.
Improved performance of timer lookups and moved some of the dayofweek elapsed resetting into each day of week object.
Fixed a bug in object translators where if the input was a specific property rather than an object but the output was an object, the system would process other properties on the input side than just the one selected.
Cleaned up some css around meters.
Fixed a problem with html5 gradient meter off colors shifting the transition points if they were not all the same color.
Fixed a bug that was causing the schedule column for DayOfWeek events to switch to a number rather than the correct value until the web page was refreshed.
Fixed a bug with user log rotation that was causing rotated files to have large blocks of NUL characters at the beginning in certain situations.
Fixed an issue where activate scene did not submit the scene messages to the system in the order specified.
It is important to understand that even though the scene will now submit the change messages in order that does not guarantee they will be completed in order.
Each Scene item is sent to the system without waiting for completion.
Added code to the silence alarms to more quickly detect device failures.
Currently the default Linux settings will only raise an error on tcp send failures after approximately 15 minutes of failed retry attempts.
This is much longer than the similar windows defaults.
Device management relies on application level ping messages to detect failures quicker but this was not implemented in silence alarm device connections.
In this version silence alarm device connections will also drop the tcp connection and will start counting down the failure after approximately 45 seconds of failed ping (VER) messages.
Switched the SRC Rtpp property to be read/write.
Fixed a bug where opening an object translator created with an API property while the Simple tree is selected and then selecting the item in the translation convert list might leave the property name field blank which after committing would wipe out that api property name in the conversion.
Disallowed most punctuation in panel names.
This fixes some panel incorrect functionality when certain characters such as the slash are used in the panel or page name.
Moved the meters and scenes to startup prior to logic flows in the service startup list.
Added some threadlocking around device online/offline state in router IO DeviceOnline property setting to prevent a potential race condition where offline to online messages in quick succession especially during initial load could theoretically interfere with each other.
Fixed an issue with gpi dynamic additions not getting an index in the device io collection.
This can cause the ios not to show online/offline correctly.
Fixed a bug with case sensitivity of On/ON and Off/OFF with html5 buttons.
Fixed an issue where changing backcolor on or off on an html5 button while a flash was in progress would not change the flashing color without turning flash off and back on again.
Added a None option to the hwmap list to be used to unmap a mapped button.
Added the ability to hwmap buttons to the overbridge display on fusion button modules as this was missing and should have been there.
Fixed a bug where removing a virtual route point's base ios would cause the underlying audio point to become unmounted from the device DST/SRC object.
This could break routing for that IO until a reboot takes place.
Also fixed some issues with mount point meta data after a removal which only came to light after this change which made remounting problematic.
Mounting and umounting primarily occurs in routers where fast direct access (mounting) of the underlying DST/SRC objects from the devices tree is necessary.
Fixed an issue with rediscovery of deleted audio ios where the DST/SRC object still exists.
Added some code to requery the resulting DST/SRC after a manual reconnect request of the device.
Fixed a bug with removing ios from the devicepath lookup collection probably introduced in 1.4.9.00.
Fixed a bug where removing an IO (or other object that was mounting other objects) in some cases could cause the base device object (mounted object) to get removed from the lookup collection.
This would mean the object would show up in the lists when walking the tree but would return INDI NONE when accessed directly.
Added a chunk of code to make sure Html5 panels clean up any residual unused bindings on save.
Fixed some outdated unit tests.
Fixed a memory leak in database record updating.
Checks to determine if we needed to insert or update were spawning a datareader object which was never being closed and therefore never released from ram.
This was causing more and more of these to exist in ram as data writes occurred.
This was especially prevelant when writing regularly changing memory slots that were set to the LastKnown state.
If this is your situation please also review the notes on LastKnown state for memory slots.
The LastKnown option should only be used when necessary as it causes additional disk I/O.
Use the LastKnown option only when the memory slot state cannot and will not be able to be determined via flows by the existing state of the system on startup.
Fixed a bug introduced in 1.4.9.00 that was only removing ios from ram on either gpio or audio when a device was removed rather than both.
The database was being cleaned properly so a restart was necessary to fully remove those ios prior to this version.
This could also lead to clustering anomolies if the device was added back into the system before a restart occurred.
A restart of both could also be used to clear those anomolies.
Fixed an issue where the omnia one would still show as offline if it was in the database prior to the update to 1.4.11.00.
Since the Lwcp connection was already in the database it would still get loaded.
Now it gets skipped.
The Omnia-one device type incorrectly had LWCP options enabled. This is fixed.
This was causing the device to appear as offline.
Fixed a bug introduced in 22.214.171.124 with time zones that was not setting one of the operating system shortcuts to the correct time zone symlink.
If you suspect the need to reset the time zone first update to this version and then switch the time zone to something else and then back to the desired time zone, set the time using ntp or the set time from pc link and then reboot.
Fixed a bug introduced in 126.96.36.199 where the set time from pc web ui link was not working.
Improved device removal performance.
Certain recursive, redundant, and non-optimized calls were causing high cpu load in larger systems during a device removal while cleaning up the device's route points.
Added some code to prevent a device removal from making redundant database calls to the router database.
Made optimizations in the router io removals for a device removal by including hashed lookups of ios by device.
Made io removal messages when initiated by a device removal cluster quiet as they should be handled by the device removal cluster message.
This reduces unnecessary cluster messaging.
Fixed the sub cache descendent branch removals by querying the object for the additional branches to be removed rather than looping through all items repeatedly.
Improved the io lookup collection for theoretically better performance.
Very minor performance improvement to router load times.
Added an exception to not cache messages for response for Device Emulator ToSend when forwarding them to the emulator.
Made a couple of other minor optimizations which may improve performance slightly.
Extended the disk device timeout in the OS to 180 for the vm build for better compatibility with network (iscsi) backing storage.
Added some code to swap a device path in the legacy Panel device cache if the object path changes relative to the ip:port.
If a device type changes (engineacl to fusion), it must be removed and re-added to PathfinderCore PRO to generate the new object paths.
If the device type changes (for example engineacl to fusion) and the device is removed and re-added, legacy hardware maps are not valid without a restart.
This version allows a save of the legacy panel to regenerate the hardware maps with the new device type object path after the device has been removed and re-added without a restart.
Io mapping on legacy panels may have to be recreated in this case due to io number changes after removing and adding the device.
This situation should be virtually non existent as device types do not change unless you replace the device with one of a different type.
Added an exception to prevent log messages for duplicate inits when the objects are the default none, previous, and other ios.
Added a DataIndex property to better track the internal database index for ios.
Fixed an issue where adding audio ios via a cluster message was not incrementing the max index which meant a virtual io addition after that might try to reuse an index causing it to get created in ram but not stored to the database with a database error in the log.
Added cluster synchronization of the routers MaxDataIndex.
CRITICAL NOTE: The items above fix a critical bug in clustered scenarios.
Prior to this version if you added an Axia Audio device to an active cluster and then created a virtual router after that prior to any restart, the ios for that virtual router would appear on the secondary node but might not get written to the database.
This means they could be missing on the secondary node after a restart.
If you think your system may be in this state it is highly recommended that you backup both systems and then do a manual sync from primary to secondary.
To do a manual sync from primary to secondary, go to the secondary node and from the clustering tab on the secondary node click manual sync in order to take and restore a backup from the primary node.
It is recommended that you do this and then upgrade to the new version.
Fixed a bug where Ios returned from the equipment with no rtpaddress or enabled fields (vx and intercom) could replace the none source in some routes causing those sources rather than none to display and causing corresponding virtual destinations to report an other state rather than a none route.
Locked down device addition and loading to license validation.
Fixed an issue where enabling two identical channel numbers and then disabling one of them could leave routes in a state where the route takes but does not display properly in PCP.
This fix involved recrafting the rtp stream address lookup table and how it functions relative to address changes and enable/disable of properties.
Fixed an issue with non standard engine version numbers so that an error is not thrown and caught.
Recrafted database writes for devices and routers databases so make sure deleted and creates are done atomically.
Previously there was a possibility of deletes not being completed before create messages got added into the queue.
This would affect and be primarily seen when thirdy party apps delete an entire router and then immediately recreate the router and ios.
Fixed a benign log message about duplicate ios being added for aes67, none, and previous sources.
Fixed a bug where deleting a device with an ip that is the beginning of another ip (172.16.25 and 172.16.251) could cause deletion of both devices IOs from the back end database.
Modified some database code in the routers database to make it more transactional.
Added code to clean up SystemIos, AxiaAudioIos, and AxiaGpios if the router that gets deleted is and AxiaAudio or AxiaGpio router.
Fixed a bug where router manager was not always successfully subscribing to device deletions meaning that a device deletion might not clear up the ios for that device from the audio and gpio routers.
Refactored device status discovery code during start up of routers to enforce all subscriptions before all getters.
Added a mount complete property to ios and virtual base ios to detect whether the backing object has been successfully mounted.
For example: get Routers#0.AxiaAudioRouter#1 MountComplete=False $MAX_DEPTH=-1
The above will return mount points that have not been established between the route point and its base IO from the devices branch.
It is normal for some engine resources to not be mounted as engines sources and destinations are not returned if they are inactive.
The router database had a stream enabled field for Axia sources but it was not being read from and written to.
Changed it so that this is stored to the database.
This means the first start after upgrading will do a lot of writing to the database as this field gets set to its normal state.
Also sources will be loaded with rtp not enabled until it detects from the device that it is unless a state (non blank) is stored in the database.
This also allows for better troubleshooting when backups are sent to support since the rtp enabled state will reside correctly in the database.
Moved the thread locking to include the initial search when attempting to fill a mount point.
This helps prevent a potential race condition where the object is not found but then added before ending up the pending collection leaving it permanently unmounted.
Added some code to double check mount points after they have been added to the pending collection to handle a potential race condition case where the object gets added between searching for it and adding its absence to the pending collection.
This helps prevent mounts from becoming stuck unmounted.
Fixed a bug in the UI where virtual base points would not show if their mapped io did not exist.
Fixed a bug where the removal of devices and routes would not cause the mapped virtual ios to be added back into the mountpending collection.
Therefore if the device was added back into the system the virtual points would not re-acquire the map.
Fixed a bug where deleting a device and its Audio sources and destinations would cause virtual points that map to those points to drop their base io existence in the database only.
This would make things look like the base ios still exist but after a restart they would get removed.
Fixed an issue where move and push would not cause a relook up of the modified virtual io route state causing them sometimes to appear as blank routes until the next change.
Fixed an issue in the UI where removing an IO might not remove from the routes table without a refresh of the web page.
This was also causing extra IOs to appear after moving or pushing until a refresh of the web page was done.
Eth4Can had HasAudio set to true. It is now false.
Made buttons in html 5 panels work properly with touch by emulating mouse down and up with touch and release rather than click with touch.
Adding proper touch/multi touch control to the console fader buttons.
Fixed a bug where Previous states in Axia Audio Destinations could change when there was no actual change of the multicast address.
For example changing the address field from 188.8.131.52 <> to 184.108.40.206
Fixed a bug related to changing an html5 panel Control id whose properties are mapped to other items on the same page that could leave the buttons flows non working and the old button id orphaned in the logic flows.
Fixed an issue where labels and images could not be moved on the html5 panel using the arrow keys because they shifted their focus.
Used drag helpers for these objects so that now they are movable with the keyboard keys.
Fixed an issue in html5 designer where after a dropping a control onto the panel the keyboard move buttons would not work without a second click on the control.
Fixed a bug with collections that was allowing the OnCollectionChanged event to be raised before items were added to the index.
This was causing scenes to not set their initial state properly.
Hid the include logs option on the restore dialog.
There are security issues with overwriting all logs.
This option fails if turned to true.
For now hiding the option until such time as we decide to handle such issues.
Fixed an issue in the logic flow editor where the views scroll bar was disappearing when the canvas size changed.
Fixed an issue where the src property of image html5 elements was not hooked up to the image selector dialog.
Changed the file date time format on the backups page for more accurate sorting when the date/time column is used for sorting.
Added a write only Requery property to virtual routers that would double check any missing mount points and then recheck the route state of each io in the router.
This is not for normal use but could be useful to force a recheck of all route points in the virtual router.
Set Router#0.VirtualRouter#3 Requery=True
Added an icon to trigger the new requery property on the routers page on each Virtual Router line.
Upon clicking, it will ask for confirmation before triggering the requery.
Upon clicking, it will ask for confirmation before triggering the requery.
This can be used to recheck the route status amd mount state of each IO in the virtual router.
Should not be normally used (hence the warning confirmation) and can cause cpu load on larger virtual routers while the analysis loop takes place.
Fixed an issue where renaming a logic flow view/folder with logic flows that were disabled in it where the flows also had combiners could leave the folder with scrambled flows.
Fixed an issue with rtpstream address swapping such as happens with vxengine that can leave source to destination routing unresolved after rtp addresses (livewire channel number) has been changed.
Fixed a bug where legacy panels with IO mapping were not resolving the map path when very large routers were involved because the routers had not finished loading yet.
This corrects an issue where the subscription to those router loading states was not passing the correct source or destination state on newly added ios during the load process.
Fixed bugs with backfeed switching. Names and owners were sometimes getting confused when backfeed sources moved between faders.
Fixed a bug with memory slots where changing the startup state when editing an existing slot was not always getting stored to the backing storage and so could revert after a restart.
Removed an unnecessary lookup and debug message.
Added code into the logic flows ui to issue a requery of the show profile or source profile list when the corresponding object/property is selected.
The consoles do not announce additions or removals of source and show profiles but they also happen too infrequently to warrant polling so this change allows the ui to request updates when configuring those parameters.
Fixed an issue where None (-1) was not an option in FaCH source profiles to be used for unloading a profile from a fader and indicating that unloaded state.
Fixed a bug where the bindings file for html5 panels was sometimes being cached by the browser causing settings to appear to not stick or revert when making changes.
This file is now pulled with a no cache option and with a version stamp of current time to prevent the browser from using a cached value for the json data.
Saving panels was sometimes generating css in both the html and css file and it was possible at times for them to conflict - especially with hardware mapping.
The save now strips out any inline styles in the html leaving all styles in the css file only.
Fixed an issue where changing a color on one button and then moving to the next and clicking the color again would sometimes update immediately to the color of the previously changed button.
1.4.0.00 release build for fanless engine, r2, and vm platforms.
This build is the same as 220.127.116.11 but moved to the master release branch and versioned as 1.4.0.00.
All future bugs related to features already in this version will become patches to 1.4 versioned as 1.4.x.00 where x is the patch number.
All new features will be created in the next 1.5 beta branch.
See Version Numbering for details.