Issues for Lightweight Log FTF
To comment on any of these issues, send email to lwlog-ftf@omg.org. (Please include the issue number in the Subject: header, thusly: [Issue ###].) To submit a new issue, send email to issues@omg.org.
List of issues (green=resolved, yellow=pending Board vote, red=unresolved)
Issue 5767: Adding some filtering capabilities to the Lightweight Logging Service
Issue 5884: LW Log Service IDL errors
Issue 5885: issue with section 2.4.2 retrieveById
Issue 5888: Page 43. In Section 4 The Complete Logging Service IDL
Issue 5889: Notation used in PIM
Issue 5890: Sponsoring Task Force
Issue 5908: InvalidParam exception
Issue 5913: current write operation
Issue 5914: Section 4 of the Specification -- the IDL
Issue 5915: LogRecordSequence
Issue 5916: Text of the Specification: (PIM)
Issue 5917: Text of the Specification: (PSM)
Issue 5920: use of IDL type string for data that's logged is not cross-language compati
Issue 5767: Adding some filtering capabilities to the Lightweight Logging Service (lwlog-ftf)
Click here for this issue's archive.
Source: THALES (Ms. Virginie Watine, virginie.watine(at)thalesgroup.com)
Nature: Uncategorized Issue
Severity:
Summary:
In order to add some possibilities to filter records, we would like methods
that retrieve log records according to the fields defined in struct
ProducerLogRecord (namely the level, producerId and producerName).
That would consist in the three following methods to be added on the
LogConsumer object.
That point has been discussed during the Yokohama meeting with the
supporters of this submission (in particular with Jeff Smith) and no
difficulty to add these methods was foreseen.
Resolution: see above
Revised Text: In the document Lightweight Log Service Specification - OMG Final Adopted Specification ptc/03/04/01
UPDATE figure 2-1 with the new/changed operations
REPLACE all occurrences of retrieve_by_id with retrieve_records
REPLACE all occurrences of retrieveById with retrieveRecords with the exception of Sections 2.4.1 and 3.3.2.1
Section 2.4.1 CHANGE
FROM:
The getRecordIdFromTime operation returns the record Id of the first record in the Log with a time stamp that is greater than, or equal to, the time specified in the fromTime parameter. If the Log does not contain a record that meets the criteria provided, then the RecordId returned corresponds to the next record that will be recorded in the future. In this way, if this "future" recordId is passed into the retrieveById operation, an empty record will be returned unless records have been recorded since the time specified. Note that if the time specified in the fromTime parameter is in the future, there is no guarantee that the resulting records returned by the retrieveById operation will have a time stamp after the fromTime parameter if the returned recordId from this invocation of the getRecordIdFromTime operation is subsequently used as input to the retrieveById operation.
TO:
The getRecordIdFromTime operation returns the record Id of the first record in the Log with a time stamp that is greater than, or equal to, the time specified in the fromTime parameter. If the Log does not contain a record that meets the criteria provided, then the RecordId returned corresponds to the next record that will be recorded in the future. In this way, if this "future" recordId is passed to a retrieval operation, an empty record will be returned unless records have been recorded since the time specified. Note that if the time specified in the fromTime parameter is in the future, there is no guarantee that the resulting records returned by a retrieval operation will have a time stamp after the fromTime parameter if the returned recordId from this invocation of the getRecordIdFromTime operation is subsequently used as input to a retrieval operation.
Section 3.3.2.1 CHANGE
FROM:
The get_record_id_from_time operation returns the record Id of the first record in the Log with a time stamp that is greater than, or equal to, the time specified in the fromTime parameter. If the Log does not contain a record that meets the criteria provided, then the RecordId returned corresponds to the next record that will be recorded in the future. In this way, if this "future" recordId is passed into the retrieveById operation, an empty record will be returned unless records have been recorded since the time specified. Note that if the time specified in the fromTime parameter is in the future, there is no guarantee that the resulting records returned by the retrieveById operation will have a time stamp after the fromTime parameter if the returned recordId from this invocation of the get_record_id_from_time operation is subsequently used as input to the retrieveById operation.
TO:
The get_record_id_from_time operation returns the record Id of the first record in the Log with a time stamp that is greater than, or equal to, the time specified in the fromTime parameter. If the Log does not contain a record that meets the criteria provided, then the RecordId returned corresponds to the next record that will be recorded in the future. In this way, if this "future" recordId is passed into a retrieval operation, an empty record will be returned unless records have been recorded since the time specified. Note that if the time specified in the fromTime parameter is in the future, there is no guarantee that the resulting records returned by a retrieval operation will have a time stamp after the fromTime parameter if the returned recordId from this invocation of the get_record_id_from_time operation is subsequently used as input to a retrieval operation.
Add new sections to the LogConsumer Interface Operations starting with 2.4.3
2.4.3 retrieveRecordsByLevel
Retrieves a specified number of records from the Log that correspond to the provided log levels.
Synopsis
+ retrieveRecordsByLevel (inout currentId : RecordId,
inout howMany : unsigned long,
in valueList : LogLevelSequence)
: LogRecordSequence
Parameters and Return
(ADD the Table with headings Parameter Type Description
currentId RecordId The ID of the starting record
howMany unsigned long The number of records to retrieve, will be updated to the number of records actually retrieved.
valueList LogLevelSequence The sequence of log levels that will be sought
<return> LogRecordSequence The sequence of retrieved records
)
Exceptions
This operation raises the InvalidParam exception if a supplied parameter is invalid.
Description
The retrieveRecordsByLevel operation returns a LogRecordSequence of records that correspond to the supplied LogLevels. Refer to section 2.2.2. The valueList parameter is composed of an undefined number of LogLevels. Candidate records for the LogRecordSequence begin with the record specified by the currentId parameter. The number of records in the LogRecordSequence returned by the retrieveRecordsByLevel operation is equal to the number of records specified by the howMany parameter, or the number of records available if the number of records specified by the howMany parameter cannot be met. The log will update howMany to indicate the number of records returned and will set currentId to either the id of the record following the last examined record or the next record that will be recorded in the future, if there are no further records available. If the record specified by currentId does not exist, but corresponds to the next record that will be recorded in the future, the retrieveRecordsByLevel operation returns an empty list of LogRecords, sets howMany to zero, and leaves the value of currentId unchanged. If the record specified by currentId does not exist and does not correspond to the next record that will be recorded in the future, or if the Log is empty, the retrieveRecordsByLevel operation returns an empty list of LogRecords, and sets both currentId and howMany to zero. Note that this operation does not guarantee a return of sequential records in Log and modifies the currentId value. Consequently, subsequent invocations of this operation with a different valueList or the other retrieval operations before reestablishing a record ID with the getRecordIdFromTime operation may result in the Log consumer not being able to obtain some of the records.
2.4.4 retrieveRecordsByProducerId
Retrieves a specified number of records from the Log that correspond to the provided producer IDs.
Synopsis
+ retrieveRecordsByProducerId (inout currentId : RecordId,
inout howMany : unsigned long,
in valueList : StringSequence)
: LogRecordSequence
Parameters and Return
(ADD the Table with headings Parameter Type Description
currentId RecordId The ID of the starting record
howMany unsigned long The number of records to retrieve, will be updated to the number of records actually retrieved.
valueList StringSequence The sequence of producer IDs that will be sought
<return> LogRecordSequence The sequence of retrieved records
)
Exceptions
This operation raises the InvalidParam exception if a supplied parameter is invalid.
Description
The retrieveRecordsByProducerId operation returns a LogRecordSequence of records that correspond to the supplied producerIds. Refer to section 2.2.11. The valueList parameter is composed of an undefined number of producerIds. Candidate records for the LogRecordSequence begin with the record specified by the currentId parameter. The number of records in the LogRecordSequence returned by the retrieveRecordsByProducerId operation is equal to the number of records specified by the howMany parameter, or the number of records available if the number of records specified by the howMany parameter cannot be met. The log will update howMany to indicate the number of records returned and will set currentId to either the id of the record following the last examined record or the next record that will be recorded in the future, if there are no further records available. If the record specified by currentId does not exist, but corresponds to the next record that will be recorded in the future, the retrieveRecordsByProducerId operation returns an empty list of LogRecords, sets howMany to zero, and leaves the value of currentId unchanged. If the record specified by currentId does not exist and does not correspond to the next record that will be recorded in the future, or if the Log is empty, the retrieveRecordsByProducerId operation returns an empty list of LogRecords, and sets both currentId and howMany to zero. Note that this operation does not guarantee a return of sequential records in Log and modifies the currentId value. Consequently, subsequent invocations of this operation with a different valueList or the other retrieval operations before reestablishing a record ID with the getRecordIdFromTime operation may result in the Log consumer not being able to obtain some of the records.
2.4.5 retrieveRecordsByProducerName
Retrieves a specified number of records from the Log that correspond to the provided producer names.
Synopsis
+ retrieveRecordsByProducerName (inout currentId : RecordId,
inout howMany : unsigned long,
in valueList : StringSequence)
: LogRecordSequence
Parameters and Return
(ADD the Table with headings Parameter Type Description
currentId RecordId The ID of the starting record
howMany unsigned long The number of records to retrieve, will be updated to the number of records actually retrieved.
valueList StringSequence The sequence of producer names that will be sought
<return> LogRecordSequence The sequence of retrieved records
)
Exceptions
This operation raises the InvalidParam exception if a supplied parameter is invalid.
Description
The retrieveRecordsByProducerName operation returns a LogRecordSequence of records that correspond to the supplied producerNames. Refer to section 2.2.11. The valueList parameter is composed of an undefined number of producerNames. Candidate records for the LogRecordSequence begin with the record specified by the currentId parameter. The number of records in the LogRecordSequence returned by the retrieveRecordsByProducerName operation is equal to the number of records specified by the howMany parameter, or the number of records available if the number of records specified by the howMany parameter cannot be met. The log will update howMany to indicate the number of records returned and will set currentId to either the id of the record following the last examined record or the next record that will be recorded in the future, if there are no further records available. If the record specified by currentId does not exist, but corresponds to the next record that will be recorded in the future, the retrieveRecordsByProducerName operation returns an empty list of LogRecords, sets howMany to zero, and leaves the value of currentId unchanged. If the record specified by currentId does not exist and does not correspond to the next record that will be recorded in the future, or if the Log is empty, the retrieveRecordsByProducerName operation returns an empty list of LogRecords, and sets both currentId and howMany to zero. Note that this operation does not guarantee a return of sequential records in Log and modifies the currentId value. Consequently, subsequent invocations of this operation with a different valueList or the other retrieval operations before reestablishing a record ID with the getRecordIdFromTime operation may result in the Log consumer not being able to obtain some of the records.
Modify the LogConsumer Interface Section 3.3.2
interface LogConsumer : LogStatus
{
RecordId
get_record_id_from_time (
in LogTime fromTime)
raises(InvalidParam);
LogRecordSequence
retrieve_records (
inout RecordId currentId,
inout unsigned long howMany)
raises(InvalidParam);
LogRecordSequence
retrieve_records_by_level(
inout RecordId currentId,
inout unsigned long howMany,
in LogLevelSequence valueList)
raises(InvalidParam);
LogRecordSequence
retrieve_records_by_producer_id(
inout RecordId currentId,
inout unsigned long howMany,
in StringSeq valueList)
raises(InvalidParam);
LogRecordSequence
retrieve_records_by_producer_name(
inout RecordId currentId,
inout unsigned long howMany,
in StringSeq valueList)
raises(InvalidParam);
};
Add new sections to the LogConsumer Interface PSM starting with 3.3.2.3
3.3.2.3 retrieve_records_by_level
Retrieves a specified number of records from the Log that correspond to the provided log levels.
Parameters and Return
(ADD the Table with headings Parameter Type Description
currentId RecordId The ID of the starting record.
howMany unsigned long The number of records to retrieve.
valueList LogLevelSequence The sequence of log levels that will be sought
<return> LogRecordSequence The sequence of retrieved records
)
Exceptions
This operation raises the InvalidParam exception if a supplied parameter is invalid.
Description
The retrieve_records_by_level operation returns a LogRecordSequence of records that correspond to the supplied LogLevels. Candidate records for the LogRecordSequence begin with the record specified by the currentId parameter. The number of records in the LogRecordSequence returned by the retrieve_records_by_level operation is equal to the number of records specified by the howMany parameter, or the number of records available if the number of records specified by the howMany parameter cannot be met. The log will update howMany to indicate the number of records returned and will set currentId to either the id of the record following the last examined record or the next record that will be recorded in the future, if there are no further records available. If the record specified by currentId does not exist, but corresponds to the next record that will be recorded in the future, the retrieve_records_by_level operation returns an empty list of LogRecords, sets howMany to zero, and leaves the value of currentId unchanged. If the record specified by currentId does not exist and does not correspond to the next record that will be recorded in the future, or if the Log is empty, the retrieve_records_by_level operation returns an empty list of LogRecords, and sets both currentId and howMany to zero. Note that this operation does not guarantee a return of sequential records in Log and modifies the currentId value. Consequently, subsequent invocations of this operation with a different valueList or the other retrieval operations before reestablishing a record ID with the get_record_id_from_time operation may result in the Log consumer not being able to obtain some of the records.
Mapping from the Platform Independent Model
This IDL operation definition is the result of a one-to-one mapping from operation
retrieveRecordsByLevel, defined in the UML class Log and made visible through interface LogConsumer in the PIM (See Section 2.4.3, "retrieveRecordsByLevel," on page 2-XXX). The spelling of the operation name has been changed to conform to the OMG IDL Style Guide.
Difference to the Telecom Log Service
This is a new operation, not available in the Telecom Log Service. It reflects the architectural and operational difference between the two services.
3.3.2.4 retrieve_records_by_producer_id
Retrieves a specified number of records from the Log that correspond to the provided producer IDs.
Parameters and Return
(ADD the Table with headings Parameter Type Description
currentId RecordId The ID of the starting record.
howMany unsigned long The number of records to retrieve.
valueList StringSeq The sequence of producer IDs that will be sought
<return> LogRecordSequence The sequence of retrieved records
)
Exceptions
This operation raises the InvalidParam exception if a supplied parameter is invalid.
Description
The retrieve_records_by_producer_id operation returns a LogRecordSequence of records that correspond to the supplied producerIds. Candidate records for the LogRecordSequence begin with the record specified by the currentId parameter. The number of records in the LogRecordSequence returned by the retrieve_records_by_producer_id operation is equal to the number of records specified by the howMany parameter, or the number of records available if the number of records specified by the howMany parameter cannot be met. The log will update howMany to indicate the number of records returned and will set currentId to either the id of the record following the last examined record or the next record that will be recorded in the future, if there are no further records available. If the record specified by currentId does not exist, but corresponds to the next record that will be recorded in the future, the retrieve_records_by_producer_id operation returns an empty list of LogRecords, sets howMany to zero, and leaves the value of currentId unchanged. If the record specified by currentId does not exist and does not correspond to the next record that will be recorded in the future, or if the Log is empty, the retrieve_records_by_producer_id operation returns an empty list of LogRecords, and sets both currentId and howMany to zero. Note that this operation does not guarantee a return of sequential records in Log and modifies the currentId value. Consequently, subsequent invocations of this operation with a different valueList or the other retrieval operations before reestablishing a record ID with the get_record_id_from_time operation may result in the Log consumer not being able to obtain some of the records.
Mapping from the Platform Independent Model
This IDL operation definition is the result of a one-to-one mapping from operation
retrieveRecordsByProducerId, defined in the UML class Log and made visible through interface LogConsumer in the PIM (See Section 2.4.4, "retrieveRecordsByProducerId," on page 2-XXX). The spelling of the operation name has been changed to conform to the OMG IDL Style Guide.
Difference to the Telecom Log Service
This is a new operation, not available in the Telecom Log Service. It reflects the architectural and operational difference between the two services.
3.3.2.5 retrieve_records_by_producer_name
Retrieves a specified number of records from the Log that correspond to the provided producer names.
Parameters and Return
(ADD the Table with headings Parameter Type Description
currentId RecordId The ID of the starting record.
howMany unsigned long The number of records to retrieve.
valueList StringSeq The sequence of producer names that will be sought
<return> LogRecordSequence The sequence of retrieved records
)
Exceptions
This operation raises the InvalidParam exception if a supplied parameter is invalid.
Description
The retrieve_records_by_producer_name operation returns a LogRecordSequence of records that correspond to the supplied producerNames. Candidate records for the LogRecordSequence begin with the record specified by the currentId parameter. The number of records in the LogRecordSequence returned by the retrieve_records_by_producer_name operation is equal to the number of records specified by the howMany parameter, or the number of records available if the number of records specified by the howMany parameter cannot be met. The log will update howMany to indicate the number of records returned and will set currentId to either the id of the record following the last examined record or the next record that will be recorded in the future, if there are no further records available. If the record specified by currentId does not exist, but corresponds to the next record that will be recorded in the future, the retrieve_records_by_producer_name operation returns an empty list of LogRecords, sets howMany to zero, and leaves the value of currentId unchanged. If the record specified by currentId does not exist and does not correspond to the next record that will be recorded in the future, or if the Log is empty, the retrieve_records_by_producer_name operation returns an empty list of LogRecords, and sets both currentId and howMany to zero. Note that this operation does not guarantee a return of sequential records in Log and modifies the currentId value. Consequently, subsequent invocations of this operation with a different valueList or the other retrieval operations before reestablishing a record ID with the get_record_id_from_time operation may result in the Log consumer not being able to obtain some of the records.
Mapping from the Platform Independent Model
This IDL operation definition is the result of a one-to-one mapping from operation
retrieveRecordsByProducerName, defined in the UML class Log and made visible through interface LogConsumer in the PIM (See Section 2.4.5, "retrieveRecordsByProducerName," on page 2-XXX). The spelling of the operation name has been changed to conform to the OMG IDL Style Guide.
Difference to the Telecom Log Service
This is a new operation, not available in the Telecom Log Service. It reflects the architectural and operational difference between the two services.
Add new operations to the Complete Logging Service IDL Section 4
After the producer log sequence typedef
typedef sequence<LogLevel> LogLevelSequence;
typedef sequence<string> StringSeq;
After the retrieve_by_id(records) operation
LogRecordSequence retrieve_records_by_level(
inout RecordId currentId,
inout unsigned long howMany,
in LogLevelSequence valueList)
raises(InvalidParam);
LogRecordSequence retrieve_records_by_producer_id(
inout RecordId currentId,
inout unsigned long howMany,
in StringSeq valueList)
raises(InvalidParam);
LogRecordSequence retrieve_records_by_producer_name(
inout RecordId currentId,
inout unsigned long howMany,
in StringSeq valueList)
raises(InvalidParam);
Actions taken:
November 26, 2002: received issue
November 6, 2003: closed issue
Discussion: Resolution:
Agreed to introduce filtering and modify the name of the retrieve by id operation to better align with the new operations
Issue 5884: LW Log Service IDL errors (lwlog-ftf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: The Lightweight Log draft adopted specification contains some errors in
its IDL.
There is a struct called ProducerLogRecord, which is being referred to
later on as LogProducerRecord in the LogProducer interface (page 56).
Furthermore, the LogFullAction enum is wrongly referred to as
LogFullActionType. The same goes for AdministrativeState which is being
referred to as AdministrativeStateType from the LogAdministrator
interface definition.
Resolution:
Revised Text:
Actions taken:
March 13, 2003: received issue
Issue 5885: issue with section 2.4.2 retrieveById (lwlog-ftf)
Click here for this issue's archive.
Source: Harris (Mr. Vincent J. Kovarik, Jr., Ph.D., vkovarik(at)harris.com)
Nature: Uncategorized Issue
Severity:
Summary: We have implemented the above service as part of our SCA Core Framework
implementation. However, we have an issue with section 2.4.2 retrieveById of
the document.
This section states (we have numbered the sentences in question):
S1: "The log will update howMany to indicate the number of records returned and
will set currentId to the id of the record following the last retrieved record.
S2: "If there are no further records available, currentId will be set to zero."
S3: "If the record specified by the currentId does not exist, or if the Log is
empty, the retrieveById operation returns an empty list of LogRecords, and sets
both, currentId and howMany to zero."
This behavior can create a problem as follows.
1) A log is operational with 10 records, Id 1 through 10.
2) An application issues a retrievById request for 5 logs starting at ID 6.
3) The log retrieves records 6 through 10, updates the howMany to 5, and sets
the currentId to 11, per S1 above
NOTE: At this point it is unclear if S2 applies. Certainly, at this point in
time, no more records are available but setting currentId to zero is in conflict
with S1 and doesn't appear to make sense. The following steps assume that S1 is
followed and S2 is ignored.
4) The log is still operational but has not written any additional records when
the same application issues a retrievById for 10 records starting at record id
11 (what it believes to be the next record).
5) The currentId of 11 does not exist in the log, so S3 applies. Consequently,
the log returns an empty set of LogRecords and sets both howMany and currentId
to zero.
6) The application now believes the currentId in the log has been reset to zero.
7) The log writes records 11 through 14.
At this point the application has lost a valid reference into the log to obtain
the next record by Id.
We would like to recommend the following changes to the retrieveById .
S1: No Change
S2: Strike from the paragraph.
S3: Strike as worded and add the following conditions:
S3.A) If the record specified by currentId does not exist AND the currentId
provided by the call is greater than the Id of the last record written by the
log, the retrieveById operation returns an empty list of LogRecords, sets
howMany to zero, and leaves the currentId unchanged.
S3.B) If the record specified by currentId does not exist AND the currentId
provided by the call is zero OR less than the first Id of the log, the
retrieveById operation returns an list of LogRecords starting with the first
available records, sets howMany to the number of records retrieved, and sets the
currentId to one past the last record retrieved.
S3.C) If the record specified by currentId does not exist and the Log is empty,
the retrieveById operation returns an empty list of LogRecords, sets hoMany to
zero, and sets the curentId to zero.
Change S3.A allows a client to request log records and leave the currentId
pointing the next log record in the eent that at the time of the retrievById
operation, there were no log records available but the log is operational and
just had not written any additional records since the applications last request.
Change S3.B addresses the scenarios where the client may have a Id reference
that has been written and cleared since it's last retrieveId request and the
first available log Id is greater than the Id requested. It also provides the
mechanism for allowing a client to issue a retrieveById without knowing the
current state of the log and obtain the first set of available log records.
Change S3.C identifies the empty log condition to the application as opposed to
simply no further records available at the time of the call.
Resolution:
Revised Text:
Actions taken:
March 19, 2003: received issue
Issue 5888: Page 43. In Section 4 The Complete Logging Service IDL (lwlog-ftf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity: Minor
Summary: Page 43. In Section 4 The Complete Logging Service IDL, the text incorrectly uses all capitol letters for PRAGMA. Therefore
Recommendation: Change #PRAGMA prefix "omg.org" to
#pragma prefix "omg.org".
Resolution:
Revised Text:
Actions taken:
April 16, 2003: received issue
Issue 5889: Notation used in PIM (lwlog-ftf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity: Minor
Summary: Throughout the PIM. "void" is used to indicate that no data is returned from the operation. The comment is about the PIM operations where void is specified for the return type. Recommend that "void" be removed from the PIM. Void is not conformant to UML PIM.
void is language (c, Java) specific
+ oper1 (in MyType, in MyType)
Resolution:
Revised Text:
Actions taken:
April 16, 2003: received issue
Discussion: Would this change require changes in the PSM as well, in order to specify "void"?
Issue 5890: Sponsoring Task Force (lwlog-ftf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity: Minor
Summary: The name of the sponsoring task force is Real-time, Embedded, and Specialized Systems (RTESS). Currently references do not consistently include the acronym.
Recommendation: Update page .8, Section .10 text and page 7, Section .8, both title and text to be:
Real-time, Embedded, and Specialized Systems (RTESS).
Resolution:
Revised Text:
Actions taken:
April 16, 2003: received isue
Issue 5908: InvalidParam exception (lwlog-ftf)
Click here for this issue's archive.
Source: Zuehlke Engineering (Mr. Frank Pilhofer, fpilhofer2008(at)gmail.com)
Nature: Uncategorized Issue
Severity:
Summary: Neither the PSM for CORBA nor the IDL mention the
InvalidParam exception. (The IDL uses the exception,
but does not define it.)
Resolution:
Revised Text:
Actions taken:
April 22, 2003: received issue
Issue 5913: current write operation (lwlog-ftf)
Click here for this issue's archive.
Source: THALES (Ms. Virginie Watine, virginie.watine(at)thalesgroup.com)
Nature: Uncategorized Issue
Severity:
Summary: The current write operation only has on parameter (ProducerLogRecordSequence) that allows a sequence of log records to be written.
add an additional write operation with a simple parameter that allows a single log record to be written and does not require a sequence.
Resolution:
Revised Text:
Actions taken:
April 23, 2003: received issue
Issue 5914: Section 4 of the Specification -- the IDL (lwlog-ftf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary:
"Complete Logging Service IDL"
* Names the raised exception "InvalidParam" without ever
declaring it. Add to the IDL, probably near the beginning,
the following declaration, or its equivalent:
exception InvalidParam {
string Details;
};
* Syntax error in:
enum LogFullAction (WRAP, HALT);
Change to:
enum LogFullAction {WRAP, HALT};
[Error above is also in the specification text, section 3.2.4]
* These types appear needed by the IDL but nowhere actually
defined in the IDL:
ProducerLogRecordSequence
LogProducerRecord
They are naming-confusion/consistency problems, and they
also appear in the text of the specification.
They involve writers' confusion between the interface
name ("LogProducer") and the type names ProducerLog...
It is correctable by changing the current defective declaration
from:
typedef sequence<LogProducerRecord
LogProducerRecordSequence;
to:
typedef sequence<ProducerLogRecord
ProducerLogRecordSequence;
The text of the specification in section 3.3.3 (page 3-15) should
also be corrected for these word inversion problems.
end 1st issue. These are IDL issues in addition to the ones identified in 5885.
Resolution:
Revised Text:
Actions taken:
April 23, 2003: received issue
Issue 5915: LogRecordSequence (lwlog-ftf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: * It is inconsistent to define LogRecordSequence outside of
the interface of its user LogConsumer
while attempting to define ProducerLogRecordSequence inside of
the interface of its user LogProducer.
Resolution:
Revised Text:
Actions taken:
April 23, 2003: received issue
Issue 5916: Text of the Specification: (PIM) (lwlog-ftf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: This is mostly sequential. There is considerable, coding-oriented
meat here. Forgive the initial attention to a few trivial
capitalization/editing problems noted.
Needs a consistent capitalization of RecordID/RecordId (recordId?),
starting with the table of contents and including every figure and
code example, as well as the text. (The IDL uses the former, but the specification text
uses both. (I understand that the CORBA is supposed to be
case-insensitive, but that will not be true of the generated
C++ or Java code.)
Page 2-5, section 2.2.2 ",do denote" should be ", to denote"
Page 2-7, section 2.2.9 "LogRecordType" should be "LogRecord type"
Page 2-15, near end of section 2.5 "unique record Id" should be
changed to "unique recordId" (join the separated words, and use
whatever consistent capitalization is selected).
Page 2-16, section 2.6.2 "Void" type in the parameters box should
be "void" for consistency.
Page 2-17, section 2.6.3 "Void" type in the parameters box should
be "void" for consistency.
Page 2-18, section 2.6.5, code snipet "Destroy () : void"
should be "destroy () : void" for consistency.
Resolution:
Revised Text:
Actions taken:
April 23, 2003: received issue
Issue 5917: Text of the Specification: (PSM) (lwlog-ftf)
Click here for this issue's archive.
Nature: Uncategorized Issue
Severity:
Summary: Page 3-2, Section 3.2 at the top omits any mapping to the
Platform Specific Model of the PIM section 2.2.1 InvalidParam
exception. The appropriate text needs to be added.
(Since the actual IDL is mostly derived from the Section 3.2
details, this omission apparently led to the omission of the
exception declaration from the IDL, cited above.)
Page 3-3, section 3.2.4, remove syntax error
from:
enum LogFullAction (WRAP, HALT);
to:
enum LogFullAction {WRAP, HALT};
Page 3-5, section 3.2.7 has a wrong-word problem in the PSM code.
change:
<ProducerLogRecordType
to:
<ProducerLogRecord
Page 3-5, section 3.2.7, the Description box for producerID has
some residual cut-and-paste text from the SCA that needs to be
removed or revised. The questionable text is:
"SCA Resource and Core Framework"
Page 3-6, section 3.2.9 has another code-level wrong word problem.
change:
<LogRecordType
to:
<LogRecord
Page 3-11, end of section 3.3.1.4, add the missing preposition.
change:
"signature the equivalent"
to:
"signature to the equivalent"
Page 3-15, section 3.3.3 contains two kinds of problems at the
code level.
(1) LogProducerRecord & LogProducerRecordSequence
are word-transposition misnomers for
ProducerLogRecord & ProducerLogRecordSequence
(2) The desired sequence has already been more properly defined
in section 3.2.7 earlier.
Page 3-19, section 3.3.4.3 needed to replace all the
full-upper-uppercase references to LOCKED & UNLOCKED by
their full-lower-case equivalents locked & unlocked, as per
section 3.2.2 and per the manner of usage in section 3.3.1.6
Resolution:
Revised Text:
Actions taken:
April 23, 2003: received issue
Issue 5920: use of IDL type string for data that's logged is not cross-language compati (lwlog-ftf)
Click here for this issue's archive.
Source: Objective Interface Systems (Mr. Victor Giddings, victor.giddings(at)mail.ois.com)
Nature: Uncategorized Issue
Severity:
Summary: Discussion:
The data that can be logged with the Lightweight Log service is an encoding of arbitrary binary data. The type used in the ProducerLogRecord for this data is "string" in both the PIM and the PSM. This is inappropriate, since strings are not considered to be arbitrary encodings. They are associated with particular (and different) character encodings in different technologies. This can be seen even within the CORBA PSM, where the Java language mapping transforms a string to sixteen-bit characters internally.
Proposed Resolution:
Change the type of the logData field in the ProducerLogRecord to OctetSeq
Resolution:
Revised Text:
Actions taken:
April 30, 2003: received issue
Discussion: use of the IDL type string for data that is logged is not give cross-language compatible