DSS7 

DSS7 now exists on Solaris/Linux, and CWMS uses same version of javaheclib.so now for client(javaHeclib.dll) and server.   The DSS libraries and associated Java API work seamlessly with records in files formatted as DSS6 or DSS7.   However, most older native binary software (such as dssutl, gridloadxmrg, and gageinterp) can not read DSS7 files.  CWMS 3.2.1 Java processes will still create DSS6 files by default on Solaris.  Scripting and programs must explicitly specify creation of DSS7 files if desired.    This behavior differs from Windows and Linux versions of the DSS libraries, which defaults to creating DSS7 files.   The default of DSS6 on Solaris is intended to avoid incompatibilities with CWMS 3.1.1 or older native binaries being unable to write or read to DSS7 files (i.e if the CPC gridded data scripts creates DSS7 monthly precip files in dated/db/grid, then gridloadxmrg and gageinterp could add records to the files, and CWMS 3.1.1 could not extract from or view the DSS files). 

Python

M3000 systems must have the CWMS 3.2.1 application account point to Python 2.7.14 (https://discourse.hecdev.net/t/solaris-m3000-cwms321459-data-streams-errors-in-mvr-14-sep-2020/1184/2).   

Some server scripts are now using "pure" python.    See Python 3.

Retired Programs

A large number of scripts and a few executables were removed as of CWMS 3.2.1 because they no longer function or have been retired in favor of newer software.   Admins may need to update any old 'cwp' scripts that still reference them.  For example, many crontabs still run "cwms_admin.1dy", which under the original version of CWMS referenced "reportCore" and "cwmsSystemStatusReport".   The list is here: Retired Programs.   HEC  or others within WMCoP can assist with updating such references.   If that is not practical then an office can copy a retired program from an older version of CWMS to its own 'cwp' user and continue to use it as unsupported.   

MetVue

MetVue command-line utilities are available on server, installed separately from CWMS 3.2.1.    Profiles for "CWP" users accounts must define environment variable METVUE_HOME and add $METVUE_HOME/utilities to the path.   

The unix utility scripts are under construction, but will correspond to the .cmd files on the Window distribution of MetVue, which includes fully built-in usage documentation.   If you have an interest in helping develop and the test the script please contact Hanbali and Tarbet.  For guidance on customizing the unix versions, a few examples are available at:

______________.

Scripting

View general tips for scripting in CWMS 3.2.1 here.

When launching scripts on the server, always use "jython" instead of "dssVue" or "dssvue".    The "dssVue" method spins up the whole user interface in XWindows and require more system resources than the "jython" method.   Launching scripts with "dssVue" that interact with the Oracle database also raise a login prompt.   This causes problems when the display is headless and the login prompt remains invisible.  Some systems have bogged down due to piling up of dssVue scripts running from crontab.  If anyone has a need to run dssVue on the server using the graphical user interface, please advise HEC.  Preliminary plans are to remove the dssVue program from the CWMS 3.2.2 server files to avoid confusion, since we are unaware of any active use requiring the UI, and unsure whether it works correctly.


Database


Schema version

CWMS 3.2.1 requires database schema version 18.1.1 or higher.   HEC would like to ensure CWMS 3.2.1 test sites are running Schema version 18.1.5 (latest version as of Jul20).   

Password Problems with Oracle Accounts

Watch client console output and caviServer logs for "sql.SQLException: ORA-01017: invalid username/password; logon denied" or "ORA-28000: the account is locked".   This means that a database password cached for a session has gone stale or otherwise rendered invalid.   This can happen for a variety of reasons and often has no serious impact on user activities BUT can cause serious inconvenience where updated Oracle password policies disable accounts after 3 failed attempts.   

The errors are not actually related to CWMS 3.2.1 – they affect any version of the CWMS software.  However since password policy updates are occurring coincidentally with CWMS 3.2.1 testing, the new version offers a good opportunity to implement ways to mitigate the impact, such as a helper script to unlock accounts (https://discourse.hecdev.net/t/cwms9999-account-notes/402).

Universal Connection Pool Closed

Watch client console output and caviServer logs for "oracle.ucp.UniversalConnectionPoolException: Invalid life cycle state. Check the status of the Universal Connection Pool".   The error means that the Oracle connection pool has been closed when it shouldn’t have and the reason why it closed needs to be tracked down.   RMA added significant developer level debug logging that we can turn on when the above error is seen to track down why it happened.


INFO messages

In general log messages tagged as “INFO” are benign.   Sometimes there can be many of them, such as these examples that issue every minute or so:

16:08:10:DssFileMgr=64101:30Oct2019 16:08:10 INFO: OracleDatabaseClient.close Closing database client and underlying data sources

16:08:15:DssFileMgr=64101:30Oct2019 16:08:15 INFO: RmiDbiWrapper.connectToDbi Connecting to DBI: //nnn.nnn.nnn.nnn:ppppp/DbiHandler