REDHAWK Release Notes - 2.0.6
The effort in REDHAWK 2.0.6 focused on:
- Initial FOSS Release of REDHAWK Enterprise Integration Assets, which provide the ability to interact with REDHAWK in a JRE environment. The REDHAWK Enterprise Integration Assets include:
- REDHAWK Driver: Provides simplified access to REDHAWK via standard Java interfaces. This Asset shields all interaction with the underlying REDHAWK Components and provides a simplified API for Java developers interacting with a REDHAWK Domain. The REDHAWK Driver can be leveraged as a standalone Java Archive (JAR) file.
- REDHAWK OSGi Connector: Implements OSGi’s Managed Service Factory interface to allow users to register pre-configured instances of REDHAWK connections into a Karaf container.
- REDHAWK REST: Provides a REST Service to command and control a REDHAWK instance.
- REDHAWK WebSocket: Provides an HTML5-compliant WebSocket implementation that enables the ability to stream data from any REDHAWK BulkIO-enabled Port or Event Channel.
- Camel REDHAWK: Provides a Camel Component for interacting with a REDHAWK Domain. This Component can be connected with other Apache Camel Components as a data flow solution.
For more information about the REDHAWK Enterprise Integration Assets, refer to the REDHAWK Enterprise Integration User Guide.
- Providing diagnostic messages for log4py configuration files that contain errors and adding support to allow line continuation characters in the log configuration files.
- Improving the IDE’s Domain refresh logic to prevent the IDE from consuming excessive numbers of threads in some scenarios.
- Documenting a publisher/subscriber pattern when accessing an EventChannel from the Domain.
- Modifying Burst IO implementation so that BurstIO output Ports will only override the BurstSRI mode flag in pushBurst if given std::complex sample data.
- Ensuring the creation of and appropriate permissions are on the services directory in SDRROOT.
- Fixing code generators for Port generation of C++ Components to correctly handle data structures returned from methods.
- Resolving issue when activating local servants for MessageConsumerPort and MessageSupplierPort Java classes.
- Resolving issue when ossie.utils.log4py.config is imported after ossie.utils.sb. Fixed by CCB-263 (Formatting issues in -logcfgfile causes python devices to crash) and added unit test to address issue when ossie.utils.log4py.config is imported after ossie.utils.sb.
- Improving documentation of Signal Related Information (SRI).
- Supporting the default version of Octave available in CentOS 7 (3.8.2).
- Correcting the parsing of some numeric literals in Octave M files.
- Resolving issue with the GPP segfaulting when a Component’s soft package dependency does not have proper file access privileges.
- Resolving issue with getStreamDefinition returning a pointer to memory that could be reclaimed during processing, which would invalidate any access through that pointer. The caller now receives a pointer to a copy of a Stream Definition.
- Correctly computing deployment-specific capacities that manage hardware resource requirements in cases where the Component is part of a host collocation deployment.
- Updating Contributor License Agreement (CLA).
- Revising the BulkIO High-speed data code example in User Manual.
- Updating the Python package to create instances of the same Application for multiple processes or threads without conflicts.
- Updating the Python Sandbox to make and break connections from multiple threads without conflicts.
- Addressing numerous bug fixes.
Fixes
The following fixes were completed REDHAWK 2.0.6:
Core Framework Fixes
- Automake files check for correct range in supported Octave version (3.4+).
- log4j time formats are processed correctly for resources using Python logging.
- Namespaced Octave Components are supported.
- Added creation of sdr/dev/services directory when installing from source or the REDHAWK RPM package.
- Changed default Node and GPP name to not be the fully qualified Domain name. This is now an option to the gpp_setup script.
- Fixed issue in test with sequencing of sending and receiving messages.
- Removed Java test when –disable-java is used when building the Core Framework.
- When an exception occurs during C++ FEI deallocation, updateUsageState is called to account for the deallocation(s) that succeeded.
- Fixed issue with C++ FEI Devices for failed allocations. Now, the C++ FEI Device base class returns false when the allocation fails instead of throwing an exception.
- Fixed logger assignment for StreamContainer class.
- When the IDL includes a typedef’d parameter as an out parameter, the code generator no longer adds an additional & to the generated Port function.
- Fixed issues with using empty list as a default parameter assignment.
- Resolved issue with process exceptions for directories with missing or bad permissions.
- Resolved issue with corrupted stream definition objects when using getStreamDefinition method.
- Multiple processes or threads can create instances of the same Application via the Python package.
- In the Python package, failed connections to Application objects raise a NoMatchingPorts exception that includes the Application name instead of an AttributeError.
- The Python Sandbox can make and break connections from multiple threads without conflicts.
- In the Sandbox, connecting a DataSink to an SDDS output Port now will return with a no matching Port exception.
- RPM spec files for Octave softpkg dependencies only copy the needed .m files. Additionally, the source directory name used on the project for the .m files is not changed during rpm installation.
- Fixed compilation issue with custom IDL and output Ports.
- Uncaught IO exceptions from log4cxx library are handled so processes will not terminate.
- Resolved issue with Application launching during stress tests.
IDE Fixes
- Package names for Java Components now start with a lower-case letter by default, to adhere to standard Java conventions.
- In the Component editor, the contents of the XML tabs now reflect all changes made in the other tabs.
- Updates to a Device’s usagename in the Node editor Devices tab are correctly reflected in the associated Devices table.
- Services in the Sandbox Device Manager now display in the Sandbox Node Diagram.
- Domains containing large numbers of Waveforms/Device Managers now re-sort their contents appropriately.
- Port descriptions now display when a Port is selected in any editor.
- An NPE no longer occurs if the M-file specified for a new Octave project does not contain a function.
- Ensured that CORBA calls that hang will timeout after a reasonable amount of time.
- Improved the Domain refresh process to prevent issues with too many threads and multiple simultaneous refreshes of the same object.
- Prevented the possibility of the IDE using too many threads when there are problems refreshing a domain.
- IDE Domain/Sandbox refresh code now better responds to cancellation.
- The CORBA Name Browser view now displays the kind of bound names.
- The CORBA Name Browser now consistently loads children in the view.
- Octave functions with arguments that have default values are now created as Properties (instead of Ports) by default in the New Component Project wizard.
- The IDE promptly displays an error if Octave’s include path cannot be found while generating code for an Octave project.
- Keep tree nodes expanded while navigating the Launch Waveform wizard.
- The IDE now displays Services in the Target SDR even if they duplicate the ID of another Service the IDE has already loaded.
- The IDE does not change the DCE ID of a project when it is renamed, which can cause problems if the user installs both the old and new versions of the project in the SDRROOT.
- References to non-existent struct simple properties are now handled gracefully.
- The editor action bar no longer attempts to load duplicate ActionHandlers.
- Fixed an occasional NPE that occured when using the Device Manager Explorer diagram.
- Corrected some XML validation for “affinity” and “componentproperties” in SAD and DCD files.
- Improved the error message for a failed domain launch to provide more detail and troubleshooting information.
- Properties of type ulonglong are now passed to resources launched in the Sandbox.
- Multi-delete functionality race-condition is now handled gracefully.
- Corrected a potential code freeze when updating the Domain’s Waveform list.
- The IDE no longer displays a tree expander next to SRI keywords if there are no keywords to display.
- Some code associated with Device Manager diagrams was corrected to prevent potential future bugs.
- Clicking the Terminate context menu on the Sandbox Device Manager now terminates its services.
- Clicking the Shutdown context menu on the Sandbox Device Manager now terminates its services.
- Resolved issue where services launched via REDHAWK Explorer were receiving duplicate names.
- Read-only Properties of kind ‘property’ can now be overridden, and their values are passed to initializeProperties() in the Sandbox.
- Fixed bug that occurred when editing the namespace of existing projects.
- An error message was sometimes displayed after closing the “Allocate Tuner” wizard.
- Services launched in the Sandbox Device Manager diagram are now displayed in gray, and their menu options are disabled until they launch and register with the Device Manager.
- Corrected an inefficient monitoring of Devices by the Device Manager diagrams.
- Corrected a unit test failure that occurred when building in a docker container.
- A file descriptor which was being left open is now closed.
- A code quality issue was corrected.
- Removed an instance of double-checked locking.
- Corrected some internal domain model state inconsistencies.
- Diagrams now open without an error in the REDHAWK Explorer product.
Documentation Fixes
- Fixed typos in the Managing and Defining Properties section.
- Updated links on the Documentation web page to point to GitHub.
- Corrected SAD file location in the SAD File section.