Category: Reliability - Concern Incident ID: X000901 Priority: 3 - Non-Critical Status: Investigation Pending Component: Odma.dll
,ODMA32.dll
, versions 2.0.0Assigned To: Dennis Hamilton Reported By:
Dennis Hamilton (2000-09-10)Date Opened: 2000-09-10 Date Closed: none
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.
The following actions are proposed:
- 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.]
- 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.]
- Update this incident report, and close it as appropriate, based on the outcome of the audit project.
The project for auditing the Connection Manager's lifecycle-management methodology should pay attention to the following:
- The impact of an
ODMSetDMS
operation on already-established default DMS instances.- The impact of instantiating DMS implementations that do not support all ODMA 2.0 interfaces.
- The impact of
ODMQueryInterface
operations and the existence of unreleased interfaces at the time of anODMUnregisterApp
operation.- 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 ofODMQueryInterface
.
created 2000-09-11-05:40 -0700 (pdt) by orcmid
$$Author: Orcmid $
$$Date: 00-10-09 9:02 $
$$Revision: 5 $