CADSWES -- Release, Software Maintenance, and Development Environment
Work Summary -- Fiscal Year 2016
Phil Weinstein, edit 1-10-2017 (a)
This document summarizes the maintenance work completed by CADSWES in these categories from October 1, 2015 through September 30, 2016.
Two major releases (6.8 and 6.9) and nine (9) patch releases of RiverWare were generated this year. The work involved in generating a patch release is very similar to a major release, except that a major release typically has an extended period dedicated to bug fixing prior to the release, and a more extensive set of release notes. Release notes may be found in the RiverWare online help.
Release Type | Release | Release Date |
Patch | 6.7.2 | Oct 23, 2015 |
Patch | 6.7.3 | Nov 13, 2015 |
Release | 6.8 | Jan 28, 2016 |
Patch | 6.8.1 | Mar 1, 2016 |
Patch | 6.8.2 | Apr 13, 2016 |
Release | 6.9 | May 11, 2016 |
Patch | 6.9.1 | Jun 1, 2016 |
Patch | 6.9.2 | Jul 26, 2016 |
Patch | 6.9.3 | Aug 9, 2016 |
Patch | 6.9.4 | Aug 22, 2016 |
Patch | 6.9.5 | Sep 20, 2016 |
Sixteen (16) snapshots of the build development area were made over the course of the fiscal year to allow users to test newly implemented features before they become part of an official RiverWare release.
RiverWare 6.8: was prereleased on December 22, 2015 and released on January
28, 2016.
RiverWare 6.9 was prereleased on April 27, 2016 and released on May 11, 2016.
The tasks involved in generating releases include:
The Development Environment category includes all of the associated software and tools used for developing RiverWare as well as their setup and interaction. Work completed this year in this category is presented below by major topic.
Microsoft Visual Studio C++ Development Environment
In January 2016, CADSWES purchased twelve (12) Visual Studio 2015 site licenses (ten copies of Professional Edition and two copies of Enterprise with MSDN). We will be able to "downgrade" our licenses to use Visual Studio 2013 (ten copies of Professional Edition and two copies of Ultimate Edition). We are currently using Visual Studio 2010 -- this was sufficient for our port from Qt 4.8.5 to Qt 5.5.1. Subsequent to that, we will want to move to Visual Studio 2013 for Qt 5.6 (or later) with QtWebEngine.
DevPartner
A trial copy of DevPartner was installed on a development machine to see if it would be useful in testing for memory problems during a crash on model load (Bug 5687). This was run with several configurations, but either did not detect any problem or else crashed before the problem line involved in this bug was reached. The one-week trial period was allowed to expire without purchasing a permanent copy of the software.
GIT source control software:
CADSWES Incoming FTP area cleanup:
The "FTP" area where CADSWES receives RiverWare models and other large files from users, generally for the purpose of diagnosing problems discovered by RiverWare users, was culled by CADSWES staff.
The Software Maintenance category includes work required to maintain the RiverWare code that is apart from work funded to implement specific new features and new functionality. This can include, for example, removing obsolete code, porting code to use newer versions of libraries (like Qt) or to use alternate libraries, addressing compiler warnings and memory leaks, non-project improvement to online help, or changing existing code to improve maintainability and efficiency.
(a) Qwt Plotting Library Upgrade
Qwt is the open source C++/Qt library used in RiverWare to implement plot dialogs. RiverWare was upgraded to Qwt 5.2.3 to Qwt 6.1.2 (released Dec 2014) in October 2015 for RiverWare 6.8, and subsequently to Qwt 6.1.3 (released June 2016) in August 2016 for RiverWare 7.0. Several aspects of the newer Qwt (6.1) version had significant architectural differences, notably a completely revised legend API which accommodates the possibility of a custom implementation. No notable functional or graphical enhancements were introduced with this upgrade, but being current in our Qwt library version positions us better for the development of future plotting enhancements. This was also a prerequisite for the Qt 4 to Qt 5 port of RiverWare which was started in October 2015. (As of January 2017, Qwt 6.1.3 is still the latest available Qwt version).
Major porting tasks completed in October 2015 include:
- Building Qwt 6.1.2 from source code, and deploying it within our Windows development build system, including modifications of our win-config.pl tool. Both 32-bit and 64-bit Windows MSVC builds were required.
- Modifying RiverWare build source files, EngrObjs/riverware.pro and Makefiles/riverwarebase.pro.
- Creation of temporary stub classes for eliminated Qwt classes, primarily QwtPlotPrintFilter and QwtScaleTransformation.
- Various data type changes, including:
- Basic global data type substitutions. The new Qwt version relies more on basic Qt data types.
- QwtScaleDiv is now passed by value instead of by pointer.
- QwtSymbol is now passed by pointers to dynamically allocated instances.
- Modifications of printing and plot image export using QwtPlotRenderer.
- Modifications for changes to the QwtScaleTransformation class hierarchy. This is used only for our custom "probability scale" which is applied only to percentage series values.
- Extensive recoding of plot legends, many aspects, including special handling for Markers conditionally shown in the legend. The new Qwt library has a more extensible architecture for custom legend implementations.
- Adaptation of our custom code to support series having NaN values. NaNs are handled as gaps in the drawn slot curve.
- Recoding of special mouse operations in the plot canvas: rubber-band zoom and re-centering.
Although, as mentioned above, while no feature improvements were introduced due to this Qwt upgrade, we did enable "anti-aliasing" (smoothing) in RiverWare 6.8 for the drawing of slot curves within plots.
Additionally, an analysis was done on other simple ways of improving the appearance of plots. Some experimentation was done, using the new Qwt library, to eliminate the gap between the plot and its axes.
(b) Plotting Appearance Improvements
The border and spacing around and inside RiverWare plot panels, and in between the plot panel and the axes, have been removed. This simplifies the appearance of plots. This was a followup from updating our Qwt plotting library from Qwt 5.2.3 to Qwt 6.1.2, also being done for RiverWare 6.8.
(c) Plotting and Output Architectural Proposal
Users have expressed the desire to have more user-friendly and better looking plotting in RiverWare. Sponsors have allocated funds for improvements, but before these are implemented, it seemed prudent to revisit the way that users create, save, and edit plots and other output devices. For example, there are multiple dialogs where the user can select slots to plot and configure the layout (E.g. 2X1 curves) of the plot. In both places, the user can edit the plot and the interaction between them is not very intuitive. In addition, the plots use a "Save" paradigm which has never been easy to explain or use.
(d) RiverWare Optimization Documentation
The RiverWare Help section on Optimization was expanded in the following sections:
- Limitations of Optimization – additional limitations of Optimization were described.
- Setting up and Running an Optimization Model – additional guidance on selecting an appropriate run range for Optimization and an added warning about using a monthly timestep.
- Add a Thermal Object – links to more details about the thermal object.
- LP Param Table Slots – Additional Guidelines section added to assist users in setting approximation points for specific slots; reformatting to make material easier to read; links to sections on linearization to provide additional details.
- Enter Lower and Upper Bounds – more complete description of the role of bounds in the solution; step-by-step instructions for setting bounds.
Additionally, the following revisions were made:
- The organizational structure was significantly revised. The new outline for the documentation is described in:
- \\alamosa\projects\riverware \doc\optimization\OnlineHelp\OptHelp_SuggestedOutline_Updated.Date.docx.
- Sections were added to describe the definitions of satisfaction variables and derived objectives for soft constraints.
- A simple example to illustrate the concept of Preemptive Goal Programming was added.
- An improved description of the use of priorities in the RPL Goal Set was added.
- Sections on variable bounds and user defined variables were added.
- A section was added on setting up a simulation model for later use with optimization, including making appropriate method selections.
- Sections on creating an Optimization Goal Set and Post-optimization Ruleset were augmented.
- Sections on Optimization Units and Scaling and Mixed Integer Programming were moved to the Technical Appendix.
CADSWES also drafted a revised outline of the Optimization Help. The purpose is to restructure the Optimization Help to make it more user-friendly and to make it easier to find essential information. The current draft is available here:
- Suggested Opt Help Outline (7-05-2016)
R:\doc\optimization\OnlineHelp\OptHelp_SuggestedOutline.docx
(e) TCL Upgrade to solve Model Loading Problem
TCL is a third-party software utilized in loading and interpreting RiverWare model files. In investigating bug 5687 where a crash was occurring on model load, it was found that the problem was occurring within TCL after a call to interpret a particular model file line. Trying to debug within TCL was not successful, so the version of the software was updated from 8.5.1 to 8.5.18 (the current 8.5 release). This update fixed the crash and allowed the model to load successfully.
Updating the TCL version required building the new source code with Visual Studio 2010 on both 32 and 64 bit platforms. Include paths and library paths in RiverWare were updated to point to the new version, and a new compilation symbol had to be introduced to allow RiverWare source code to compile successfully with TCL 8.5.18. Packages for 32 and 64 bit were created and incorporated into the win-config process so that development machines could be updated with the new TCL libraries and dlls.
With TCL 8.5.18, a slowdown of up to 10% was noticed in some of the regression tests that are run nightly for RiverWare. A potential fix for this was tried to eliminate the writing of continued separate lines for the data in long time series so that these lines do not need to be rejoined during loading. This did not improve the slowdown in regression tests.
A second attempt at a fix was successful, accomplished by upgrading TCL to the most recent 8.6 version (8.6.4). This fix required minor changes to some TCL method calls made from the RiverWare code, but resulted in restoring regression test run times to prior levels. The new version of TCL was incorporated into the RiverWare build process. This involved:
- Downloading and building 32 and 64 bit versions of TCL 8.6.4
- Creating tarred package files of the new versions for 32 and 64 bit.
- Modifying the window configuration process for development machines to download the correct package file for the new version.
- Committing the required RiverWare source code changes to the RW 6.8 prerelease and RW 6.9 master development branches of the code repository.
- Updating all development machines to use the new version.
(f) RiverWare Qt4 to Qt5 Port
Most of the work for the upgrade of RiverWare from Qt 4.8.5 to Qt 5.5.1 was finalized in FY 2016. The resolution of some ensuing GUI problems was completed in the subsequent months (early FY 2017) for the release of RiverWare 7.0 in December 2016. Major FY 2016 RiverWare / Qt5 porting milestones and tasks are enumerated below.
October 2015:
- RiverWare source code compiles against Qt 5. Changes to the RiverWare code base to compile RiverWare source code with Qt 5 were applied. A provisional Qt 5 build we created in June 2015 (Qt 5.4.2) was used. Changes were applied in such a way that this code base could still be compiled with Qt 4.8. This initial step did not result in a working executable -- i.e. this was just a successful compile of RiverWare C++ modules, but not an actual linked executable.
November 2015:
- Obtained and build Qt 5.5.1 for 64-bit. The most current version of Qt5 (Qt 5.5.1) available at the time was obtained and built from source code.
- Dependent ancillary 64-bit libraries used by RiverWare were built with that new version. This consisted of the following libraries. Our "win-config.pl" perl script tool for installing the required libraries onto a CADSWES Windows development machine was enhanced to support these library builds.
- Qwt 6.1.2
- RdfToExcel
- Quazip 0.7.1
- QsLog 2.0b3
- RiverWare itself was built, resulting in a basically-working RiverWare 64-bit executable. This was for both debug and release builds. Some work was done for the 32-bit builds, but was not complete. More testing of this RiverWare build will be needed. The RiverWare Qt5 port will not be part of the upcoming RiverWare 6.8 release.
The following document describes in detail this RiverWare porting and building work done in November.
- CADSWES Qt5 Port Status / November 2015
R:\doc\Qt\2015\RiverWareQt5PortStatus-Nov2015.pdf
R:\doc\Qt\2015\RiverWareQt5PortStatus-Nov2015.htmlJanuary 2016:
- Qt5-compatible RiverWare source code merged to master branch for RiverWare 6.9. Many changes were necessary to allow the RiverWare source code to be compiled with either Qt4 or Qt5. In January, this work was merged into the master RiverWare development branch for RiverWare 6.9. RiverWare 6.9, however, still uses Qt 4.8.5.
February-April 2016:
- Working towards a 32-bit build of Qt 5.5.1 and supporting libraries. This included:
- Build of 32-bit version of the ICU 55.1 library (international UNICODE support) -- a prerequisite for the build of Qt.
- Build of Qt 5.5.1 32-bit.
- Build of ancilliary libraries based on Qt:
- Qwt 6.1.2
- RdfToExcel
- Quazip 0.7.1
- This document describes the process of building 32-bit Qt 5.5.1, and the status of that build as of mid-February:
- Status: 32-Bit Build of Qt 5.5.1 -- 2-18-2016
R:\doc\Qt\2016\Qt5-32bit-Build-Status-2016-02-18.html / .pdfMay 2016:
- Some non-Qt5-compatible provisions which had been introduced in the RiverWare development code base were fixed.
June 2016:
- Solved problem replicating RiverWare / Qt5 development build to different development machines. The solution is a workaround for a problem with the Qt5 Meta Object Compiler (moc), in formulating a symbolic list of header include files.
- "Test deployment distribution" of the 64-bit RiverWare / Qt 5.5.1 build. This was devised and tested on a non-development machine. This includes all necessary ancillary executable files (DLL libraries and such) to be distributed with RiverWare. These resources are described in this document:
- Test 64-Bit RiverWare Release Distribution for RiverWare built with Qt 5.5.1
R:\doc\Qt\2016\RwDeployTest\DeployChanges.htmlJuly / August 2016:
- 32-bit build of RiverWare with Qt 5.5.1 was achieved in July. However, this was based on Qt 5.5.1 (the Qt library itself) and supporting libraries built on a Windows XP machine -- technically not a supported platform for that build. The 32-bit RiverWare build was done on a new well-configured (with a good amount of memory and hard disk space) 32-bit Windows 8.1 machine ("Kickapoo"). After this build succeeded, we worked through several ensuing regression test differences (including an aborted run). Those regression test problems were solved; they turned out to be unrelated to this Qt library upgrade.
- Some analysis was done for the necessary enhancements to our 64-bit and 32-bit overnight build systems, including regression test scripts, to support the building of both the current release (RiverWare 6.9.x) with Qt 4.8.5 and new development (RiverWare 7.0) with Qt 5.5.1. We plan to upgrade RiverWare 7.0 development to Qt 5.5.1 in early September.
- Rebuilt the 32-bit version of Qt 5.5.1 itself, and the libraries used in RiverWare which depend on Qt on a Windows 8.1 machine ("Kickapoo"). The original machine on which these had been built was a Windows XP machine, "Scuba" -- and Windows XP is not technically a supported build platform for Qt 5.5. Kickapoo will be our our new 32-bit release build machine for RiverWare 7.0 with Qt5. In the course of this Qt5 rebuild, we also upgraded the Qwt plotting library used with RiverWare 7.0 / Qt5 from Qwt 6.1.2 (released in Dec. 2014) to Qwt 6.1.3 (released in June 2016) -- for both 32-bit and 64-bit.
- A visual problem with RiverWare 7.0 / Qt 5.5.1 on Windows 8.1 was solved. (This problem was not apparent on Windows 7). Tree view lists had some rendering problems with the "Windows" widget style we had been using. This was fixed by changing to the "Fusion" widget style. (We later decided against this solution approach, as RiverWare documentation would not look current with a changed widget style).
Flexera InstallShield is the software used to create RiverWare installation files. Many of the tasks described in the followng sections are related to InstallShield maintenance and support.
(a) InstallShield Intall File Preparation for RiverWare Releases
(b) Other Release Support Tasks
(c) License and Download User Instructions
(e) Addressing InstallShield Problems
(a) InstallShield Intall File Preparation for RiverWare Releases
(b) Other Release Support Tasks:
December 2015:
- Removed the RLM DLL files from the component list so they are not included in the release install file. This is due to the RLM library file linking option changed from dynamic linking to static linking.
- Updated the development environment to include the RPL Predefined Function help content to be embedded within the RiverWare application
- Updated the pre-release release file holding folders to contain the version 6.8 release files. These are the files linked in the IS project files for generating the install files.
- Updated the version number and the File Description in the RiverWare resource file in VisualStudio. The version number is updated to 6.8 and the text "Development" is added to the File Description field in the master branch. Now the Properties window for RiverWare snapshot executable displays "RiverWare Development Executable," while the official release display remains "RiverWare Executable." Also, updated the internal document Build Generation Guide: include this procedure in the to-do list when the development master branch in GIT is updated to a new version number, and make sure to verify that the official releases do not have the text "Development" in the File Description field.
January 2016:
- Updated the release deliverable files holding folder to RiverWare 6.8 in the release area.
- Updated the snapshot deliverable files holding folder to RiverWare 6.9 in the development builds area.
- Updated copyright year from 2015 to 2016 in all source files in development and pre-release areas.
- Working on the proposal for how to distribute the new application RiverWare Scenario Explorer. Created testing project file to test the set up required by the installation of this new application.
February 2016:
- Completed the initial proposal for how to distribute the new application RiverWare Scenario Explorer. Created a testing IS project file to test the set up required by the installation of this new application. The Scenario Explorer is added as a new feature. It contains one component file which will be the new binary file. The current RiverWare feature and all its component files are set as a required default feature. Therefore, Scenario Explorer install would include all the files from the RiverWare feature and the Scenario Explorer feature.
- Updated the builds area release files and source files folders on alamosa for generating the 6.9 snapshot releases. These folders are used by IS project files to create the install files.
March 2016:
- Worked on cleaning up the multiple Destination path variables in all project files. These variables are for setting the default installation folder for components. Most of the project files have multiple path variables pointing to the same value, which are probably left from testing in the past.
- Updated regression test files to version 6.8.1 patch.
April 2016:
- Created a new temporary IS project file for testing the new file folder structure for the online help files. Changed the file structure for component "RiverWare_help" from physically linking in the files to Dynamic File Linking. After the testing completed, updated all of the IS project files with the new file structure setup for "RiverWare_help" component.
June 2016:
- Modified the "SetupCompleteSuccess" dialog in all IS project files. Removed the "Launch" option checkbox from the final window when installation is completed without error. This is due to the online help files cannot be found if RiverWare is started from a directory that is not the install directory.
- Modified the "MaintenanceWelcome" dialog in all IS project files. Changed the warning text (installed version found) to show in bold font so it is more obvious. Updated the description text to be more descriptive.
- Going through all the dialogs in all IS project files. Updating all text boxes and check boxes to be displayed consistently among all dialogs. Removing all unused boxes.
- Updated the two 6.9.# release project files to version 6.9.2 for upcoming 6.9.2 release.
July 2016:
- Updated all IS project files with the latest numbers of disk space usage from the 6.9.1 version in the "Custom Setup" dialog for Complete (with DSS) install and Custom (without DSS) install.
- Updated the release files holding folders for snapshot, pre-release, and release releases to include the new DSS server jar file (DssServer.jar).
Aug: 2016:
- Started looking into the newly released InstallShield version "InstallShield 2016" which was announced on 8-23-2016.
- Discussed related deployment issues at a Qt5 migration meeting on 8-01-2016.
September 2016:
- Added a new component named RiverWare_VideoFileGeneration to snapshot project files for including the 11 files (3 exe and 8 dll) in the 7.0 snapshot releases for the Chart Animation Video Generation feature.
- Working on upgrading from the current version InstallShield 2015 to the new version InstallShield 2016. Downloaded and installed the new version. Working on converting the two 7.0 snapshot project files to the new version and then updating the details in the new project files.
(c) License and Download User Instructions
The Viewer License User Guide was completed in October 2015. This is the complete user instruction document for how to request a Viewer license activation key and how to activate the activation key to create the Viewer license file on the user’s computer.
Created also an instructions webpage (a PDF file) with a link to the Viewer License Guide and simplified instructions for users who are already familiar with the Viewer license request process.
Created a new online document "Which RiverWare license type to choose". This document describes the differences in details among the various types of RiverWare licenses available to users, so users can decide which type of license to choose from when purchasing a license. [Oct 2015 .. Jan 2016]
March 2016 updates:
- Updating all email template files and user instruction text files to include the information about the newly added user name and password for the password protected release download webpage.
- Updating all related documents to reference to the newly completed RLM license administrator webpage from Reprise. This new website provides definitive reference for RiverWare floating license users for anything that is generic to RLM. All online user guides need to be updated to include this new information.
- Updating all user guides to include the instructions for how to obtain the newly added user name and password from the now password protected release download webpage.
(d) Addressing InstallShield Problems:
November 2015:
Provisionally fixed a problem with the Print button in the License Agreement window during installation process. The button is for printing a paper copy of the legal license agreement (or to PDF if a PDF print driver is available on the user's system). Applied the fix to all six snapshot (6.8), prerel (6.7), and release (6.7.X) InstallShield project files. However further testing revealed an error of not able to print when doing an actual installing from a generated setup file. Printing from inside of the IS program while running the "Test User Interface" step does work. This only happens on my development computer, not on other two computers tested.
March 2016:
- Worked on the issue of an unexpected message showed up in the final install completed dialog from the 6.8.1 install file. The option "Show the Windows Installer log" and check box are displayed while they are disabled in the IS project file. Cleaned up the SetupCompleteSuccess dialog and error went away.
- Worked on the uninstall error: The folder "servers" does not get uninstalled after the entire release is uninstalled from the machine through the Windows Control Panel. The error exists since release 6.8. Found out the error was caused by the Component codes in the project files were not updated when the new release version was created. Solved.
- Helped users with their inquiries regarding the newly added user name and password for the password protected release download webpage.
May 2016:
- Discovered and fixed the bug that folder for component "servers" was not removed after RiverWare application was uninstalled from the system. The error was caused by the two component codes for DSS Connectivity feature in the Setup Design page was not re-generated for the new release versions when the new IS project files were created.
July 2016:
- Worked on the error in the release install file related to the DSS Connectivity feature. The DSS Connectivity feature would still be installed on the target system even when Custom Install was selected (to install without the DSS Servers) during the install process. And, an empty folder "servers" would be left on the system after the 6.9 or 6.9.1 release has been uninstalled. These behaviors are not consistent when tested on different systems. Working on the errors.
- Working on the error that a file with the .mdl extension would not be started automatically with the RiverWare application. The finding is if the .mdl file is manually set to start automatically by another program from the "Set your default programs" user interface through Control Panel (Windows 7 in this case), the manual setting overwrites the setting made by RiverWare installation.
Aug: 2016:
- Worked on debugging the error of the "servers" folder (for DSS Connectivity files) not getting removed after RiverWare is uninstalled from the machine. An empty "servers" folder and all of its sub-folders would be left on the system, although the uninstall process seems to be successfully completed. This behavior is not consistent when tested on multiple systems. Found out the cause is the ShareDLL refcount in the registry on the machine is no longer properly synchronized after uninstall. The error is not in the IS project files, but due to multiple installs and uninstalls on the system and commonly occur on test machines. The solution is to reset the refcount in the registry on the system. Documenting the procedure so the information will be available to users if the error happens on user's system.
- Worked on the error in the release install file related to installing DSS Connectivity feature. The DSS Connectivity feature would still be installed on the target system even when Custom Install was selected choosing to not install the DSS Servers during the install process. This behavior is not consistent when tested on multiple systems. Working on the error.
September 2016:
- Working on the error in the release install file related to installing DSS Connectivity feature. The DSS Connectivity feature would still be installed on the target system even when Custom Install was selected choosing not to install the DSS Servers during the install process. This behavior is not consistent when tested on multiple systems. Still testing the error.
(a) Ongoing Licensing Work
(b) Viewer License Support
(c) Reprise Library /RiverWare Linking Method Change
(d) License Related Internal and User Documentation
(e) Other Reprise License Manager Tasks
(a) Ongoing Licensing Work:
(b) Viewer License Support:
October/November 2015:
- Reprise: Finished the set up and the testing of the new procedure for users to request a Viewer license. The new procedure requires user to obtain a Viewer license activation key from CADSWES first, then activate the obtained activation key through the RLM license web server interface over the internet to create their Viewer license file. The license files are created on users' computers and also stored in the database of RLM Activation Pro. With this new procedure, we do not need to obtain users' computer IDs for issuing their Viewer license file anymore. But the computers IDs are still recorded in the ActPro database. Users still need to contact us and provide their user information in order to obtain a Viewer license activation key. All information and instructions are documented in the Viewer License User Guide.
- Completed the procedure testing for the instruction webpage (pdf file) for obtaining a Viewer license.
(c) Reprise Library / RiverWare Linking Method Change
November 2015:
Reprise is the licensing software that is used by RiverWare. To avoid using the Reprise dynamically linked library file, which is susceptible to hacking to bypass the licensing, RiverWare was configured to link with static Reprise libraries. This means that the licensing code is compiled directly into the RiverWare binary executable file and does not rely on the separate Reprise dll file. This statically linked executable is being tested. If all aspects of license functionality work successfully, the static linking will be incorporated into the RiverWare build process.
December 2015:
Reprise is the licensing software that is used by RiverWare. The RiverWare executable developed to use static linking to Reprise was tested and found to work correctly. However, when a statically linked 32 bit executable was attempted, there were errors due to multiply defined symbols in the dongle libraries of Reprise and FlexLM (FlexLM is the prior license software used by RiverWare, which is still used for various reasons by some customers on 32 bit). In consultation with Reprise customer support, several approaches were tried to fix these conflicts, but none were successful. It was decided that the 32 bit build of RiverWare would continue to use dynamic linking to Reprise, but the resulting 32 bit executable would be placed on a password protected area of the RiverWare web pages and be available to customers by request only. This is due to security concerns from hacking of the Reprise dynamically linked library (DLL) file.
RiverWare configuration files were modified to link statically on 64 bit and dynamically on 32 bit. These changes were incorporated into the RiverWare build process by creating 32 and 64 bit package files, modifying the window configuration process for development machines, committing the necessary RiverWare source code changes, and updating all development machines with the Reprise changes.
Subtasks for these changes include:
- Tested the RiverWare executable which has RLM library statically linked.
- Created a testing InstallShield project file for generating the install file that does not include the RLM DLL file in the release.
- Revised the internal document Build Generation Guide.
February/March 2016:
Even after we statically linking the RLM library file into RiverWare in place of use of the RLM DLL file, it was discovered that license hacking continued to be possible. We worked with Reprise support on hacked RLM license server program files found on internet, reported by Jim P. Reprise recommended that we to implement rlm_auth_check() in our application to detect this hack. It is used by the application to verify the integrity of the license server. This call is not required by RLM, and is used only as an additional check that the license server has not been modified. Before we make this update, the current password protected download page seems to have been effective.
(d) License Related Internal and User Documentation:
January 2016:
- Created a new user instruction file for how to open a port in Windows Firewall for running RLM license server.
- Working on the proposal for how to license the new application RiverWare Scenario Explorer. At this point the logical solution would be creating a new license key for it. It will be similar to how CPLEX license keys are included in the license file.
February 2016:
- Prepared the sponsor license report for Gwen. The report contains the numbers of all the licenses issued for the sponsor users for the 2015 fiscal year (October 2014 through September 2015).
March 2016:
- Updated the user instruction files for how to generate the RLM diagnostics files, from both license server side and from client machine side, for debugging problems.
April 2016:
- Updated internal document "RLM for RiverWare Configuration and Build Guide."
- Verified all information is up-to-date while configuring and building the 12.0 version.
- Added a new step to modify the rlm_isv_config.c file to disable the default behavior of client automatic broadcast on the network to find a license server.
- Removed the reference to include RLM dll file in the release deliverable list for 64-bit version.
- Completed the update of License Server Configuration Guide.
- Added the reference to the newly implemented RLM license administrator webpage from Reprise. This new website provides definitive reference for anything that is generic to RLM. All online user guides need to be updated to include this new information from Reprise.
- Re-generating new dialog image files from the current RLM version. The new images will be updated in all related user guides document.
June 2016:
- Updated the user instruction file for how to switch licenses between a regular full license file and a Viewer license file.
Aug 2016:
- Updating Roaming License User Guide.
- Added recommendation advising users not to run RiverWare application on the machine that is also running the license server. This practice often causes floating license problem that is hard to debug.
(e) Other Reprise License Manager Tasks:
November 2015:
- Working with Neil on solving the issue of the hacked RLM DLL file which is included in each release. Testing the RiverWare executable that has the change of statically linking in RLM library file from Neil. Created a testing InstallShield project file for generating the install file that does not include the RLM DLL file in the release.
December 2015:
- Re-opened the bug report ticket number 2802 reported to Reprise on 11-14-2014. RiverWare program can find a floating license running on the network without having a physical local copy of the license file. And, a RiverWare started on another machine on the network that has its own node-locked CPLEX license file would still take out a CPLEX license from the floating license pool. Working with Reprise Support on this issue.
- Addressed license security issues by statically linking for 64-bit Riverware build and controlling download access for 32-bit RiverWare build. See the relevant prior section.
January 2016:
- Re-opened the bug report ticket number 2802 reported to Reprise on 11/14/2014. RiverWare program can find a floating license running on the network without having a physical local copy of a valid license file. Also, when starting RiverWare on a client machine on the network that has its own node-locked CPLEX license file would still take out a CPLEX license from the floating license pool, even without a copy of the floating license file. Working with Reprise Support on this issue.
February 2016:
- Completed the initial proposal for how to license the new application RiverWare Scenario Explorer. At this point the logical solution would be creating a new license key for it. It will be similar to how CPLEX license keys are issued and included in a license file. The Scenario Explorer can be a default license key included in each regular RiverWare license file.
- Completed the proposal of turning off the default broadcast feature in RLM. It is the feature that the RLM client performs a broadcast on the local area network trying to find an alternative license server when a floating license failed to find the license server that is listed in the license file, even without a physical copy of other valid license files. Emailed the proposal to software team recommending disabling this feature in our code. When RiverWare cannot find the license server that is defined in the RiverWare floating license file, we do not want RLM goes out trying to find another one that is not defined in our license file. It will make debugging a floating license error much easier for us and for users.
April 2016:
A new version of the Reprise License Manager software (Version 12.0) was incorporated into RiverWare. This involved revising RiverWare project files to include a new header file and to link in new Reprise libraries. New versions of RiverWare were built and tested for both the 32 bit and 64 bit Windows platforms. RiverWare code changes were committed to the code repository and the new Reprise libraries were incorporated into the configuration process for setting up and updating development computers. All development machines were updated with the new Reprise libraries. Individual tasks included:
- Completed the configuring and building the new RLM version 12.0. Incorporate the new version into the next RiverWare version 7.0.
- Added instructions for how to set up RLM license server as Windows service to the related user instruction files for floating license users.
- Updated the user instruction file for how to open a port to allow RLM license server programs to communicate through the firewall.
- Updated the user instruction files for how to generate debug diagnostics output files from both the license server machine and the client machines.
May 2016:
- Updated the RIVERWARE VIEWER LICENSE user guide. Re-testing and verifying the procedure again so it can be submitted to software group for review and testing.
- Worked with Reprise support on error -130 when trying to activate an activation key from Reprise’s hosted license server.
- Worked on the install error Tim M. encountered. When RiverWare is started by selecting the "Launch RiverWare" button at the end of the install procedure, model file cannot be loaded. And online help file cannot be loaded. These do not happen if RiverWare is launched from the desktop icon after the installation is completed.
- Worked with Mitch on researching and testing about how Reprise handles cloud computing.
- Set up all the license generation tools to start using the new 12.0 version.
- Worked with Reprise support to upgrade our ActivPro server to use version 12.0. Generated the new ISV generator setting file cadswes.gen and uploaded to the ActivPro server.
- Started using the new rlmsign.exe and rlmgen.exe files for generating license files.
- Set up the snapshot release source file area to include the new license server program files. These are for creating the snapshot install files by InstallShield project files.
June 2016:
- Set up all the license generation tools to start using the new 12.0 version.
- Still working with Reprise support to upgrade our ActivPro server to use version 12.0. They prefer us upgrade directly to 12.1. Working with them to find out if that would be incompatible if the RLM in RiverWare is still version 12.0.
- Working with Reprise support to find out how to have ISV name default to "CADSWES" when user activate a Viewer license key from the RLM web server. Currently it is default to "reprise" so user has to manually change it to "CADSWES."
July 2016:
- Looked into the optional parameter of "share" for a floating license. If this key word is specified in a floating license file, licenses can be shared between separate running processes with the same username, hostname, or the combination of both, up to a predefined maximum process count which can share the license. We could set up this feature to allow users to use a floating license as a counted node-locked and named-user license. This feature could help some of our current floating license users who are using the license roaming feature in order to run unlimited RiverWare instances on any computer. License roaming feature should only be used when the computer is to be temporarily disconnected from the network. Working on testing and writing up the details in a proposal for submitting to Edie.
- Looking into the new RLMCloud product from Reprise, released in July 2016. RLMCloud is 100% hosted by Reprise and an annual license fee is required. It would be for our floating license users only for hosting their RLM license servers. It allows us to provision and manage users' license servers, install and manage their licenses, all from our browser. Users do not need to install and setup RLM license server on their own networks, all license servers are in the cloud instead.
Aug 2016:
- Finished researching and testing the optional parameter of "share" for a floating license. When the key word is specified in a floating license file, licenses can be shared between separate running processes with the same username, hostname, or the combination of both, up to a predefined maximum process count which can share the license. This feature could help some of our current floating license users who are using the license roaming feature in order to run unlimited RiverWare instances on any computer. A summary report was written.
Sept 2016:
- Met with Edie to discuss if we want to add the "shared floating license" feature to our floating licenses. This feature allows users to use a floating license as a counted or an uncounted, node-locked and/or named-user license. Each user is allowed to run multiple RiverWare instances while still limiting the number of users who can run RiverWare in the same time. The conclusion is we will offer this feature to our floating users. It will be an uncounted node-locked and named-user license when the license is checked out on the network. Started implementing this by: adding the details to License Server Configuration Guide and creating an email template file containing the instructions.
Regression tests are a suite of RiverWare models that were automatically run every night to look for changes in results or performance from new code that was checked in to the development area. Results of the tests were evaluated on a daily basis to identify unexpected changes in model results. The model comparisons performed in the nightly regression tests can show expected differences (for example, because a new method category may have been added). When this occurred, the regression tests had to be updated to reflect the current state of the development area so model comparisons did not fail going forward. In addition, every week, the daily history of each regression test was analyzed to determine if the run time or model size had significantly changed because of new development.
In addition to the regular regression test work, the following regression test items were addressed over the course of the year:
Nov 2015: |
|
|
Dec 2015: |
|
|
Apr 2016: |
|
|
May 2016: |
|
|
Aug 2016: |
|
The following tables enumerate the eighty-seven (87( bugs fixed in FY 2016 (Oct 2015 through Sep 2016).
Bug | Description | Closed |
---|---|---|
5589 | RPL Search and Replace Dialog now shows statement names instead of rule names. | |
5608 | DMI Error For AggSeries Slots | 2016-01-28 |
5627 | Plot Auto-scale Scales to hidden slots | 2016-09-19 |
5656 | Output data in table series slots is not cleared when saving a model with no output | 2015-12-28 |
5675 | Monthly timestep issue with reservoir spilling | 2015-10-22 |
5676 | Reprioritize Opt Set - reordering a Goal relative to a With Statement is not supported | 2015-11-17 |
5679 | Build Supply Attributes not saved | 2015-10-20 |
5681 | Model Reports: heading text is always bold, even when 'normal' font style (weight) is specified | 2015-10-05 |
5683 | Output Canvas Flowlines bug | |
5684 | New RPL objects use default precision (8 digits) instead of RPL Set's precision | 2015-10-13 |
5685 | Opt PSA method selection in 6.7 can cause crash when running in RBS in 6.8 | 2015-11-17 |
5686 | Head Based Percolation will continue if zero groundwater object storage | 2015-11-09 |
5687 | Model saved in 32bit RiverWare does not open in 64bit RiverWare | 2015-12-01 |
5688 | RiverWare shuts down when trying to import a .csv file | 2015-11-03 |
5689 | Output Canvas: Multiple Teacup Groups not honoring Maximum Bar Height | 2015-11-19 |
5690 | Unable to add columns to table slot with numeric headers | 2015-12-07 |
5692 | File chooser dialogs for Saving (Creating) and Unpacking RiverWare packages does not remember last location | 2015-12-10 |
5694 | Open Object - sort by Slot Type no longer works | 2015-12-21 |
5695 | Riverware hangs on subsequent debug runs | 2015-12-30 |
5696 | Tabular Series Slot Report not omitting slots properly | 2016-01-05 |
5698 | RPL search and replace dialog has a couple of minor issues | |
5700 | When running a script , if I click on the dashboard stop button, I get a crash (similar to bug 5551) | 2016-01-25 |
5701 | Crash: Loading Model having Scripts after having shown a Script Dashboard for a Script | 2016-01-14 |
5702 | SCT Custom Cell Colors: Can result in non-contrasting text color for flag letters | 2016-01-19 |
5703 | USACE SWD Flood Control Rule Share using incorrect reservoir | 2016-01-22 |
5704 | Computed Routing Coefficients resized and stuck at one row | 2016-04-13 |
5705 | Deleting multiple objects leads to crash | 2016-02-11 |
5706 | Deleting object display group doesn't update objects on workspace | 2016-02-03 |
5707 | Model runs in 6.6.6, aborts in 6.7.3 | 2016-02-05 |
5708 | Output Canvas loses Text Type reference of Value and goes to Plain Text | 2016-02-24 |
5709 | Scripting error when creating a snapshot | 2016-02-23 |
5711 | Fail to unload initialization rules from model after import | 2016-02-25 |
5712 | Global time scroll gets lost after run | 2016-02-25 |
5715 | Mass Balance Summary Slot creates new Agg Series Slots when model run and saved | 2016-03-10 |
5717 | Database DMI Editor dialog changes expanded column width every time a tree view triangle is clicked | 2016-04-07 |
5719 | Looking up an invalid Turbine Release | 2016-04-06 |
5721 | NextDate function returns incorrect value when crossing new year | 2016-03-18 |
5722 | Locked SCT fails to open as locked | 2016-07-07 |
5723 | Series Slot with Periodic Input does not expand and populate after reloading model file | 2016-03-22 |
5724 | Accrual on Water User | 2016-05-04 |
5726 | Supply Links Visually Disappear/Reappear | 2016-04-27 |
5728 | Assertion Failures when Auto-Scaling Plot having Periodic Slot and Empty Series Slot | 2016-04-07 |
5729 | URGWOM initialization rule 'Set Crop ET Rates' singularity | 2016-04-13 |
5730 | Plot Legend Marker Items: Not always removed when hiding marker items; Can subsequently CRASH. | 2016-04-15 |
5731 | Model save as truncates a global function and then unloadable | 2016-04-20 |
5732 | Accounting Workspace Supply lines are not showing up | 2016-04-27 |
5733 | Plot Zoom/Pan broken in plots having only Periodic Slots and Empty Series Slots | 2016-07-27 |
5734 | Max Request slot not displayed on Edit Account... | 2016-05-04 |
5736 | Attempting to remove slots from Plot Page Output fails and causes crash | 2016-05-05 |
5737 | Plotting: Step curves are clipped misleadingly at edge of plot | 2016-07-29 |
5738 | Mass Balance Slots: Possible crash deleting multiple slots. | 2016-07-11 |
5739 | MRM with Ensembles from HDB does not work with Version 6.8 | 2016-06-02 |
5740 | Open Account dialog Value column weirdly aligned | 2016-06-10 |
5741 | Evaporation and Precipitation Volume not calculating if Pool Elevation and Outflow are inputs | 2016-05-31 |
5742 | MRM Concurrent Run Trace and DMI Repeat Mismatch | 2016-06-02 |
5744 | Can't add RPL Utility Group when a Policy Group Item is selected | 2016-07-28 |
5747 | Copy/move of mass balance summary slot retains reference to original slot | 2016-07-08 |
5748 | Periodic Slot Plot Labels Changing Back to Default | 2016-07-07 |
5752 | Copy and paste of a slot does not copy description or notes | 2016-07-05 |
5753 | Infinite RPL 'While' loop decrementing date/time generates error and locks up. | 2016-07-05 |
5754 | The order of slots in .rdf output does not match order in output control file | 2016-09-19 |
5757 | Name Maps don't work for all columns of Aggregate Series slot | 2016-09-19 |
5758 | DSS server doesn't handle errors well | 2016-07-18 |
5759 | Accounting View not showing cross hatching the same at certain zoom levels | 2016-07-29 |
5760 | Closing an Open Account dialog using the red X is not the same as using the Close button | 2016-07-28 |
5762 | Tabular Series Slot Report configuration erased when model saved with configuration open | 2016-09-16 |
5767 | Generating Tabular Series Slot Report as a Script action using ExecuteScript RCL command causes error | 2016-08-05 |
5768 | Plot Y axis bounds do not persist if plot has no data | 2016-08-05 |
5769 | DMI import sluggish when DMIs are executed via a script action with SCTs open | 2016-08-04 |
5770 | RPL Search and Replace deletes "Search for:" when changing the search location | 2016-08-05 |
5771 | RPL Search and Replace reverts "case" if search performed | 2016-08-05 |
5773 | No preferred opt units for PowerPerFlow | 2016-08-08 |
5774 | Compute aggregate routing coefficients on control point without variable routing upstream not resulting in an error | 2016-09-26 |
5775 | Account displays are overlapping in new release | 2016-08-08 |
5776 | Replacing Initialization Ruleset from a file can cause a crash | 2016-08-12 |
5777 | bug in Save Model script function | 2016-08-10 |
5779 | Supply Links no longer show up in Accounting View | 2016-08-18 |
5782 | Receiving error message "cwMessageMgr Invalid message identifer: 701" during script execution | 2016-08-31 |
5783 | Reach No Local Inflow Solve Outflow does not always maintain mass balance | 2016-09-23 |
5786 | Timestep error when switching from daily to monthly timestep. | 2016-09-19 |
5787 | Diagnostics "copy message line" doesn't always work | 2016-09-16 |
5788 | Loading a model twice fails on the second load | 2016-09-08 |
5789 | Inflow Stage Table Look Up won't work with linked Tailwater Base Elevation | 2016-09-20 |
5790 | Synchronizing a multi-slot before the subslot | 2016-09-19 |
5791 | Model run fails at high flows and Max Outflow Flag at Kentucky | 2016-09-20 |
5793 | Printing SCT Slot Selection: Detail Rows for the Last Selected Slot are Omitted | 2016-09-15 |
5794 | RPL Reopen 'Recent Directory' menus mistakenly include environment symbol name | 2016-09-15 |
--- (end) ---