[OPUS]

Frequently Asked Questions


What's New in OPUS 3.2?



What's New in OPUS 3.2?


How does the OPUS release 3.2 differ from the last one?


What is a PR?

A PR is a Problem Report. The problem reporting system affects all components at the Space Telescope Science Institute and includes enhancements, change requests, as well as documentation updates. Not all of the 40,000+ problem reports have been filed against OPUS!


40803: Path re-direct syntax should be allowed in path file as well as resource files

Path re-direct syntax is allowed in path file as well as resource files. The archive processes were fixed so they can now use indirection in their archive resource items.


41174: TIME_str_2_YYYYDDDHHMMSS must not allow a value of 60 in the seconds field

The TIME_str_2_YYYYDDDHHMMSS function in the TIME_UTILS_PKG.C file was modified to ensure that respective tokens in a time string do not exceed their maximum values; i.e., that a seconds value < 60 , a minutes value < 60, an hours value < 24, and a day of year value < (365 or 366) dependent upon leap year.

** NOTE **

At the delivery of this OPR, the TIME_str_2_YYYYDDDHHMMSS function is used only by the CVTFOF Process in the OMS Data Receipt Pipeline. The CVTFOF Process uses the function to format time strings to be inserted into Subset File Header Records.


41522_02: Misc. bugs unconvered by Insure compile require fixes

This delivery contains minor code changes and bug fixes as suggested by an Insure build of the OAPI library and supporting utilities. The changes should not affect the end user except in these cases:


41927_01: Various OPUS utilities should support SSH in addition to RSH

OPUS now supports ssh/scp in addition to rsh/rcp (the default) for remote process startup and in the netcopy application. To use ssh/scp in place of rsh/rcp, change the definitions of OPUS_REMOTE_SHELL and OPUS_REMOTE_COPY in your opus_login.csh file to the appropriate paths. For example,

setenv OPUS_REMOTE_SHELL `which ssh`
setenv OPUS_REMOTE_COPY `which scp`

Your accounts and systems must be set up for ssh before making this change. OPUS expects the commands named by OPUS_REMOTE_SHELL and OPUS_REMOTE_COPY to be rsh-compatible.


42058: Trigger::poll does not free memory for internal events.

This SDN fixes a memory leak in the OAPI when processes are in a suspended state.


42486: Make archdate consistent on TRU64

DADS to OPUS archive interface testing uncovered the wrong time being used for the archdate on TRU64 for the POD file class. The SDN fixes the problem by making the TRU64 software use the st_mtime item returned in the stat structure for TRU64 processing.


40375_01: Portable, extensilbe, OAPI-compliant versions of the PMG & OMG are needed

The Java OMG and Java PMG replace their Motif counterparts. For installation of the new managers see the test notes below. For an explanation of how the new managers are used, see the FAQ at: http://www.dpt.stsci.edu/java/opusfaq.html


40614: Commonly used low-level routines should be placed in object libraries

This delivery contains a build change only, and does not impact the user. The STR_* and SYS_* shared functions now are placed in shared libraries instead of explicitly linked into OPUS applications.


40985: Duplicate process log names seen in opus_home_dir

Process log file names have been made unique across OPUS on UNIX platforms by encoding the process ID and node name, in addition to the start time, in the file name. For example, a process log file prior to this delivery might be named: pipect-39ec73a1.log

whereas with this delivery it might be named:

pipect-39ec73a1-odoalp-0020aa01.log

With this change, it is no longer necessary to add a random number to the process start time in order to reduce the chance of identical log file names when starting more than one instance of a process at the same time. However, process log file generation must be delayed until later in the process startup sequence, so less pre-startup logging is captured in the file (e.g., the user's UNIX login script output will no longer appear in process log files). The format of log information generated by OPUS tasks that execute both before and after the process was improved as well. A representative example of the new formatting is as follows:

ODCL: +++ odcl_run_process.csh started +++
ODCL:
ODCL: Pipeline Software Release OPUS 12.0A OPUS 12.0 SHARE 2.2A SHARE 2.2 ******
*** 24 Jul 2000 *********
ODCL:
ODCL: Input parameters:
ODCL:     PROCESS_NAME = pipect
ODCL:     PATH_FILE    = /info/devcl/pipe/wmiller/pipe/unix//g2f.path
ODCL:     TIME_STAMP   = 39ec9b11
ODCL:     PASSWORD? No
ODCL:
ODCL: Fetching TASK line from process resource file...(odcl_get_resource_command
)
ODCL:
ODCL:
ODCL: Task to be run: xpoll (/project/devcl/odosw1/wmiller/build1/bin/axp_unix//
xpoll)
ODCL:
ODCL:
ODCL: Creating process PSTAT...(odcl_create_psffile)
ODCL:

[...logging generated by odcl_create_psffile appears here...]

ODCL:
ODCL: Running the process...
ODCL:

[...logging generated by the process appears here...]

ODCL:
ODCL: Process exited. Cleaning up...(odcl_cleanup)
ODCL:

[...logging generated by odcl_cleanup appears here...]

No changes were made to VMS logging or process log file names, although the Motif PMG was updated to support the new log file names under UNIX.


41103: Opus_lock hierarchy in OAPI needs a get_locked_item member function

This delivery contains API and code changes for the OAPI only. There are no changes to application functionality.


42088_02: Msg and Bb_params_db OAPI classes should be made thread-safe

The OAPI Msg and Bb_params_db classes have been made thread-safe with this delivery.


42287_01: A larger PSTAT node length should be recognized by the PMG

The Motif PMG has been changed to use a 20 character PSTAT NODE size when run on a UNIX platform. This implies that the NODE size must be set to 20 in the file OPUS_DEFINITIONS_DIR:opus.env in order to use the Motif PMG, and that mixed VMS/UNIX pipelines are not allowed.


42299: OPUS Sample Pipeline erase message no longer needed

Event journaling used to produce a bogus error message stating that the journal file could not be found for time pollers after event processing completed and an attempt was made to delete the journal file. Time pollers do not produce an event journal, so it is not an error to not locate a journal file in this case. The code was modified to check for the existence of the journal before attempting to delete it.


42395: Remove MMLOG code from OPUS build tree

This OPR removes the VAX implementation of MMLOG from the OPUS and SHARE software. The MMLOG tool will no longer be available for use by Operations.


42873_08: New CORBA-based blackboards for the OAPI

This delivery partially supports a BETA release of the CORBA blackboards and server-side support of the new Java PMG and OMG (see 42874 also). The software in this delivery is considered a beta for the following reasons:

There is every indication that the system works and does not have major problems; however, use of the CORBA blackboards and Java managers is at the user's risk.

System Description:

The current OPUS system not only stores blackboard content on the file system, it also uses the file system services as a de facto OPUS server: requests for changes to and queries of blackboard content are made by each pipeline process, and the managers, directly to the file system. There is no centralized OPUS server that coordinates blackboard activity.

There are many advantages to such a system, but there are disadvantages too. One of the most troublesome is that file I/O scales with the number of concurrent OPUS processes and managers. Sometimes this feature undermines operating system robustness due to overloading of the file system. Because the file system functionality is generic, it cannot leverage intrinsic OPUS behavior that would reduce significantly the amount disk activity required of the system.

For example, much blackboard activity is read-only, so caching is a good way to reduce the number of physical reads off disk. Of course, most file systems incorporate some sort of caching, but they do not maximize the benefit specifically to the OPUS domain. An OPUS-aware caching blackboard server could do so, however.

Once a server is added to the OPUS system, the requirement that all blackboard activity be funneled through that server arises. Actually, this is not a new requirement: the network file system already fulfills it for the file system-based blackboards. The difference here is that the server becomes part of the OPUS system, and hence the need for a distributed object architecture like CORBA. Another benefit of bringing the server into the OPUS system is that it can be augmented at will unlike the vendor controlled file system.

One such major enhancement made to the server-side capability of OPUS is the introduction of an event channel over which blackboard changes are pushed to the new Java managers. Direct access to the OPUS file system is no longer required to run the managers because the servers cater to their information needs in a location-transparent way. Moreover, the manner in which this information is distributed places far less load on the file system.

The introduction of OPUS servers does not invalidate the present system, however. Any reasonable implementation of a caching server includes a persistent store to guard against information loss in the event of failure and to allow for server shutdown. Since OPUS already has an excellent mechanism for maintaining persistent state, it is advantageous to reuse that infrastructure in the server design. A notable side effect of doing so is that a backwards compatible system can be devised trivially. If the servers use the file system-based blackboards as their persistent store, and the format of the PSTATs and OSFs and their locations remain the same, then the user is free to switch between the two systems. That is the approach taken here.

The internal structure of the OAPI and its external configuration were designed for just such an extension. The file OPUS_DEFINITIONS_DIR:opus.env includes the key BB_TYPE for selecting the blackboard implementation type. Only the value FILE is supported to date; this delivery adds the option CORBA that switches the system to the caching approach using CORBA described above. Note, however, that by eliminating the restriction that the managers have access to the OPUS file system, it becomes necessary to always run the servers; the distinction between BB_TYPE FILE and CORBA is whether the pipeline applications also will use the CORBA servers or not.

If the traditional file system-based blackboard system is used (BB_TYPE = FILE in opus.env), then the servers will be used exclusively by the managers. As such, the servers are not witness to every change that happens on the blackboards (in fact, they are only aware of the manager initiated changes since the pipeline applications make changes through the file system). On the other hand, the managers still expect to see events posted so that they are able to update their displays (they are decoupled from any knowledge of which blackboard implementation is in use by OPUS).

The blackboard servers support the Java managers in this case by polling the entire blackboard contents at regular intervals, just like the Motif managers. Unlike the Motif managers, the Java managers do not perform the polling-- the servers do. Also unlike the Motif managers, the servers generate events based on consecutive polling results instead of sending the entire list to the Java managers. Note that although the Java managers function identically in either case, the information they receive potentially is less when BB_TYPE = FILE due to the discrete polling, just as with the Motif managers.

The CORBA blackboards and Java managers are not supported on the VMS platform-- the Motif managers and BB_TYPE = FILE must be used there. However, the Motif managers still can be run on UNIX systems, and they are compatible with the Java Managers, even when run simultaneously in the same environment. Note that the default node size in the PSTAT was increased to 20 characters on UNIX, so in order to use the Motif managers at all, this setting must be reverted back to the original 6 character limit (see the release notes for OPR 42874).

System Usage:

The CORBA blackboard system includes three distinct servers: a user context server (opus_env_server), a blackboard server (opus_bb_server) and an event channel (opus_event_service). The Java managers rely on opus_env_server to access user context information and to start pipeline processes. Only one instance of opus_env_server runs per OPUS user at any given time. In contrast, an instance of opus_bb_server and opus_event_server runs per blackboard (i.e., a pair for the PSTAT blackboard, and a pair per OSF blackboard). However, the user never starts any of these servers directly: opus_env_server is started as a consequence of running the utility opus_server_monitor (if it is not already running). The blackboard and event channel servers are started automatically as needed by the managers or pipeline applications.

Configuration Procedure:

These instructions must be followed before the Java managers or the CORBA blackboards can be used. There are additional steps that must be taken for the managers (consult the release notes for the Java managers). Of course, OPUS itself also must be configured properly.

  1. Modify your LD_LIBRARY_PATH environment variable to include the location of the CORBA shared libraries:

    (odocluster1) /store/devcl/odocache/wmiller/ACE_wrappers/ace
    (acdsdops)    /store/opscl/odocache/wmiller/ACE+TAO
    (Solaris)     /data/artichoke3/wmiller/ACE_wrappers/ace
    
  2. Create an empty file (you can use touch) called resource.locks in your OPUS_HOME_DIR.
  3. Create an empty file (you can use touch) called opus_iors in your OPUS_HOME_DIR, then change the permissions to user read/write only.
  4. Copy the OPUS_DEFINITIONS_DIR:opus_corba_objs.template file from the S/W tree into your own unix-specific branch of OPUS_DEFINITIONS_DIR, but drop the extension (i.e., name the copy opus_corba_objs).
  5. Edit opus_corba_objs to reflect how you want your servers to be started. The template contains information about the server command-line options.
  6. Once everything is set up, execute opus_server_monitor to start opus_env_server. At this point, the Java managers can be run and processes started.

Caveats & Notes:


42874_08: OAPI changes to support the OPUS CORBA blackboards are required

Some enhancements were made to the OAPI and supporting low-level routines in anticipation of the CORBA blackboards. The enhancements/modifications include:


42898_01: Stand-alone osf_delete task needed for CORBA-BB erase

A new command-line task "osf_delete" has been created to allow deletion of an OSF. The required parameters are the pathname and the dataset name. Futher selection parameters including data_id, particular OSF status column values, and dcf_number can be specified if the dataset name selection does not result in a single OSF match.

The osf_delete task can only delete a single OSF per invocation.

A help file can be found on the OPUS HELP page.


42246: automating the Q/S split repair

This OPR automates the merging of a Q/S split exposure. Once the exposure has been confirmed by the operator to be a Q/S split, an entry must be made in the DADS database table ARCH_DB:otfr_special_processing. This entry is used by the pipeline process FNDMRG to confirm that it is acceptable to begin automatic merging of this split exposure. Currently, a Perl command-line tool exists for making this database entry (merge_reqd.pl). You can supply the 8-character IPPPSSOO argument as the only parameter on the command line, or if not, the tool will prompt you for it.

In OPUS, it is not necessary for FNDMRG to always be running, since receiving Q/S splits is relatively rare. Operations could either have it running all the time, or only bring it up when a Q/S split has been identified by the operator.

These environment variables need to be available to FNDMRG and merge_reqd.pl when they run (place them in opus_login.csh or someplace similar):

   ARCH_SERVER - the archive database server (currently CATLOG)
   ARCH_DB     - the archive database        (currently dadsops)

Automatic merging is performed by the MRGSTI and MRGNIC processes for STIS and NICMOS, respectively. The merging occurs in a temporary directory (OPUS_TEMP_DIR resource), and the resultant files are moved back into the operational directory holding EDT files for this instrument (SIS_DIR resource). The merged files will overwrite the dataset whose OSF has the corresponding higher DCF number. The OSF for this dataset is then pushed down the pipeline. The OSF and EDT set of the dataset with the corresponding lower DCF number will remain in the pipeline, and will have to be cleaned by hand.

The database entry flagging the split will now serve as an indicator to any later OTFR request that this exposure needs to be merged on-the-fly.


42407: move STIS CFSTATUS population under OPUS control

This OPR moves the setting of the CFSTATUS keyword for STIS into the keyword rules. An initial value will still be filled in the DGX file from TRANS, but this will be overwritten with the value calculated from keyword rules.


42628: CRVAL positions in WFC1 and WFC2 are reversed

This release corrects the ACS world coordinate system keywords for the two chips. Previously they were in reverse order.


43140_01: Solaris enhancements to the OPUS CORBA servers

A long standing memory leak was patched in the message reporting code, and fixes were made to the CORBA server/client code where function arguments were incorrectly formatted. These changes will permit the Java managers and OPUS servers to run under Solaris.


43165_23: Deliver OTFR system

This is the initial release of the OTFR system. See the users guide (http://www.dpt.stsci.edu/opus/help/otfr_users_guide.html) for detailed information.


44005: Compaq C++ v6.3 requires new ACE/TAO CORBA version

This delivery contains changes to OPUS code in order to build against a new version of ACE/TAO. There are no functionality changes.


44041: OPUSBB interface to OAPI has status file contention problem

This delivery contains a fix to the old OPUSBB interface to the OAPI that resulted in failures to update and/or delete an OSF in pipelines where contention is an issue (i.e., where parallel processing is possible). It also corrects a potentially string overrun condition in pi_main.


41161: obsolete test driver cleanup

The following test drivers are obsolete and should not be built anymore:

The following are also obsolete, but as I don't see them under 11.1, I include them here only for completeness :)


42443_02: A Generic CLEAN task is required

This delivery contains two new generic OPUS tasks, osfdel and cldata.

The osfdel process deletes completed OSFs from the blackboard. The trigger criteria in the osfdel process resource file determines when an OSF is ready for deletion. This process can only be run as part of an OPUS pipeline. The configured resource file will delete all OSFs that have a "c" in the "CL" column.

The cleandata executable will allow OPUS users to delete data related to an OSF from either the command line or a pipeline process. The process resource files in the current path are used to determine the location and name of data files to delete for each OSF. The default is to read ALL the process resource files found in the current path. This behavior can be changed by using the keywords SYSTEM_GROUPINGnn and CLASS_GROUPINGnn where nn is a number between 00 and 99. When these keywords are present only process resource files with matching SYSTEM and CLASS keyword values will be selected from the path. Note the wildcard, "*", can be used to match any value.

Three new optional process resource file keywords, OUTPATH_FILTER, DATA_DELETE_FILTERnn, and DATA_DELETE_LOCATIONnn are introduced with this delivery to describe data files produced by a task. OUTPATH_FILTER and DATA_DELETE_FILTER describe the filename of related data files. OUTPATH and DATA_DELETE_LOCATION describe location of related files. See help file on cleandata or OPUS FAQ for more information. My suggestion is to wait for the archive rework delivery to encorporate this process into the operational OPUS pipeline.


43158: java managers could let user know when servers go away

This delivery enhances the Java managers to notify the users when the Servers throw an exception. The probable cause is that the opus_bb_server has for some reason crashed.


43342_11: Changes to SHARE software required for Linux build

This delivery contains modifications to SHARE source code required to build OPUS under RedHat Linux 6.1. Also included is an enhanced prototype of the OPUS CORBA blackboard server and caching blackboard as well as a security fix to the Java managers that hides the user's password if an exception is thrown during authentication.


43520_04: Changes to the OPUS FAQ and installation scripts are required for SHARE 3.2

This delivery contains some minor changes to CORBA server prototype code to make installation of the OPUS sample pipeline easier, and it has FAQ changes that cover use of the servers and installation of 3.2.


43668: Java Managers: Invoke sorting via MB1 click on table header.

This release of the new Java Managers adds four significant features requested by testing and operations, and fixes a JDK 1.3 problem. The following OPRs are closed by this release:


44037: Java OMG does not update all tabs on modify

This delivery resolves the problem of updating the OMG and PMG display when a modification is made to the data model. This should keep the displays current with the actual activity on the blackboards.

This delivery also resolves the problem of displaying the help webpages in a browser. This problem was restricted to non-Windows platforms.


44098: OPUS Solaris & Linux builds should use SGI STL

This delivery modifies the Solaris build of OPUS/SHARE to use the SGI Standard Template Library instead of the default GNU implementation (libstdc++ v2.x) for thread-safety. A change was made to an OAPI module to eliminate a troublesome library usage in favor of a simpler, equivalent approach.


Top of What's New FAQ

Top of OPUS FAQ