ODMA Incident Report

X000901: Session Lifecycle Management

Last updated 2000-10-09-08:55 -0700 (pdt)
The latest version of this information is available on the AIIM DMware ODMA site.

Category: Reliability - Concern Incident ID: X000901
Priority: 3 - Non-Critical Status: Investigation Pending
Component: Odma.dll, ODMA32.dll, versions 2.0.0
Repaired in: tbd
Related information:
Q000704: ODMA-Compliant DMS Integration Compatibility with Connection-Manager Versions
X000809: Down-level version support not implemented.
X000808: ODMRegisterApp Filters version incorrectly.
Assigned To: Dennis Hamilton Reported By: 
Dennis Hamilton (2000-09-10)
Date Opened: 2000-09-10 Date Closed: none

Summary (2000-09-11):

The ODMA Connection Manager creates a cache of loaded DMS integration DLLs and COM-object instances.  This allows DMS integrations to be kept "hot" after any use of a particular DMS is made during a session.  The initial session-creating ODMRegisterApp operation automatically initializes and caches the default DMS integration for the ODMA-aware application that's requesting the session.

There are a number of object and DLL-readiness lifecycle considerations to be maintained to ensure that (1) DLLs are not released out from underneath COM objects that they implement, (2) COM objects are not lost track of without being released, and (3) system resources are not held on too long or even seized indefinitely until the application terminates or Windows is shutdown.

There is no indication that there are any difficulties in this area.  Examination of the ODMA Connection Manager source codes as part of documentation and troubleshooting efforts does not suggest any problem.  However, this area has only been given cursory examination.  

It is important to assure that the code has been inspected for possible boundary cases that could lead to difficulties.  The most dangerous case is one that would cause the implementing code for a COM object to be released while interfaces to the object are still held by the Connection Manager and the application.  There are comments in the implementation of ODMQueryInterface that leave open the possibility of just this case.

This incident report is a placeholder for the absence of a complete audit and the concern that there may be an unrecognized, although probably unlikely, failure case in the current implementation.

Immediate resolution is a low priority, although it would be a source of confidence that the Connection Manager is well-behaved and merits user confidence because it employs robust lifecycle-management techniques.  It becomes more important to be satisfied that lifecycle-management is stable and resilient before considering changes and updates to the Connection Manager implementation.

Actions (2000-09-11):

The following actions are proposed:

  1. Create an identified project to carry the activity of completing an audit of the Connection Manager, especially its handling of lifecycle concerns. [2000-09-11: Project P000900 is logged.  It is not started.]
  2. To keep attention on this concern, register an incident report that brings to account the absence of any known audit and omission of a documented set of constraints used to ensure well-behaved lifecycle management in the Connection Manager implementation. [2000-09-11: accomplished with this incident report, X000901.]
  3. Update this incident report, and close it as appropriate, based on the outcome of the audit project.

Investigation (2000-10-09):

The project for auditing the Connection Manager's lifecycle-management methodology should pay attention to the following:

  1. The impact of an ODMSetDMS operation on already-established default DMS instances.
  2. The impact of instantiating DMS implementations that do not support all ODMA 2.0 interfaces.
  3. The impact of ODMQueryInterface operations and the existence of unreleased interfaces at the time of an ODMUnregisterApp operation.
  4. The rules for aggregation and the handling of IUnknown interfaces by the container of the aggregated object, especially when interfaces of the aggregated object are delivered as a consequence of ODMQueryInterface.

created 2000-09-11-05:40 -0700 (pdt) by orcmid
$$Author: Orcmid $
$$Date: 00-10-09 9:02 $
$$Revision: 5 $