Hi Lennart,

Please see my responses in line, started with [Vu].
I will create a new README file for saflogger tool and put the info related
to new test cases to `~/tests/logsv/README`.

Updated files are attached. Please have a look. Thanks.

Regards, Vu

> -----Original Message-----
> From: Lennart Lund [mailto:lennart.l...@ericsson.com]
> Sent: Wednesday, August 3, 2016 2:50 PM
> To: Vu Minh Nguyen <vu.m.ngu...@dektech.com.au>;
> mahesh.va...@oracle.com
> Cc: opensaf-devel@lists.sourceforge.net
> Subject: RE: [PATCH 1 of 1] log: Readme file for long DN support [#1315]
> 
> Hi Vu
> 
> In general this document should not be a document describing what to
> implement instead it should describe what is implemented and what in the
> log service that is affected by long DN and to some extent how it is
> implemented. See some comments/examples inline.
> To have information here about the saflogger tool I think is ok but maybe
it
> is a good idea to have a README file in the .../tools/saflog/ directory?
[Vu] Ok. I will create new README file for saflogger tool. The file content
is attached (README file)

> 
> Also some comments inline [Lennart]
> 
> Comments on the other patches will follow
> 
> Thanks
> Lennart
> 
> > -----Original Message-----
> > From: Vu Minh Nguyen [mailto:vu.m.ngu...@dektech.com.au]
> > Sent: den 4 juli 2016 05:07
> > To: mahesh.va...@oracle.com; Lennart Lund <lennart.l...@ericsson.com>
> > Cc: opensaf-devel@lists.sourceforge.net
> > Subject: [PATCH 1 of 1] log: Readme file for long DN support [#1315]
> >
> >  osaf/services/saf/logsv/README_LONGDN |  138
> > ++++++++++++++++++++++++++++++++++
> >  1 files changed, 138 insertions(+), 0 deletions(-)
> >
> >
> > Show changes for long DN, including:
> > 1) saflogger tool
> > 2) log agent
> > 3) log services
> > 4) test suite
> >
> > diff --git a/osaf/services/saf/logsv/README_LONGDN
> > b/osaf/services/saf/logsv/README_LONGDN
> > new file mode 100644
> > --- /dev/null
> > +++ b/osaf/services/saf/logsv/README_LONGDN
> > @@ -0,0 +1,138 @@
> > +#
> > +#      -*- OpenSAF  -*-
> > +#
> > +# (C) Copyright 2016 The OpenSAF Foundation
> > +#
> > +# This program is distributed in the hope that it will be useful, but
> > +# WITHOUT ANY WARRANTY; without even the implied warranty of
> > MERCHANTABILITY
> > +# or FITNESS FOR A PARTICULAR PURPOSE. This file and program are
> > licensed
> > +# under the GNU Lesser General Public License Version 2.1, February
> 1999.
> > +# The complete license can be accessed from the following location:
> > +# http://opensource.org/licenses/lgpl-license.php
> > +# See the Copying file included with the OpenSAF distribution for full
> > +# licensing terms.
> > +#
> > +# Author(s): Ericsson AB
> > +#
> > +
> > +I. GENERAL INFORMATION (#1315)
> > +==============================
> > +
> > +The SaNameT type, which is used to pass distinguished stream DNs name
> in
> > saLogStreamOpen_2() API,
> > +or in `logSvcUsrName`, `notificationObject` or `notifyingObject` which
> > belong to `SaLogRecordT`
> > +data structure passed to `saLogWriteLogAsync()` API, contains a
fixed-size
> > buffer that limits
> > +the string length to a maximum of 255 bytes.
> > +
> > +#1315 ticket was raised for LOG to support long DN. The use cases could
> be:
> > +UC1) Write log records using the long DN in @Sl, @No, @Ng tokens using
> > Log API.
> > +UC2) Create any long DN name stream using Log API.
> > +UC3) Write record to long DN app stream using saflogger tool.
> [Lennart] A stream name is not a DN. Please rephrase.
[Vu] I rephrased it.

> > +
> > +The implementation was split into following parts:
> > +1) Update saflogger tool - add one more option `-f`
> > +2) Update LOG agent (API) to support Long DN
> > +3) Update LOG service to support Long DN
> > +4) Create test cases
> > +
> > +Besides, README file and OpenSAF_LOG_PR.odt have to be updated.
> [Lennart] Remove this sentence
[Vu] Done.
> 
> > +
> > +
> > +II) IMPLEMENTATION (#1315)
> > +==============================
> > +
> > +1) Update saflogger tool - Add One More Option `-f`
> [Lennart] This document shall contain information for existing
> implementation not what to be implemented. This means that frases like
> Update saflogger... or Add one more... etc. should not be used. This
> comment applies also to the rest of the document
> This header could be changed to something like:
> 1) saflogger tool, '-f' option
[Vu] Done.
> > +-------------------------------------------------
> > +`-f` option is only applicable for application stream. Means it is only
valid
> > +when comes together with option `-a`. If no `-f` is provided, default
> > behavior is maintained.
> [Lennart] Consider refrasing to:
> Means it is only valid with option `-a`.
[Vu] Done
> 
> > +
> > +Why need to add new option `-f` to saflogger tool?
> > +When long DN is supported, user is able to put long DN name after
option
> `-
> > a`, and saflogger tool will
> > +use that long DN for log file name of that app stream. In that case,
the log
> > file name will be over 256 characters in length.
> > +As the result, logsv could get failed to create such long file name
(most
> Unix
> > system supports file name length up to 255 characters).
> > +
> > +
> > +2) Update LOG Agent (API) to Support Long DN
> > +---------------------------------------------
> > +All internal SaNameT will be replaced by SaConstStringT and functions
> > handling extended SaNameT are used.
> > +
> > +One point needs to be noticed is that, with extended SaNameT, data size
> > could be up to 2048 bytes (not limited to 256 bytes any more).
> > +As the result, several condition checking for max length size against
256
> > bytes will be updated to 2048 bytes (kOsafMaxDnLength).
> > +So, when supported long DN client (e.g: log client running on OpenSAF
5.1
> > or newer versions) sends an record containing long DN
> > +(e.g: `notificationObject` length > 256 bytes) to active Log service
not
> > support long DN (e.g: active log running on OpenSAF 5.0
> > +or older versions), that log client will get `SA_AIS_ERR_TRY_AGAIN`
> always
> > and make cause the log client hang.
> > +There is no problem with the opposite case (non-support long DN do
> > communicate with supported long DN).
> > +
> > +
> > +3) Update LOG Service to Support Long DN
> > +----------------------------------------
> > +In original code, logsv used NCS PATRICIA TREE as an database to hold
all
> > existing LOG streams in system,
> > +and taking stream DN as the keyword for searching/adding/deleting tree
> > elements.
> > +NCS PATRICIA TREE has a limitation with keyword size. It is only
supported
> > the key size up to 600 bytes.
> > +With long DN, stream DN could be up to 2024 bytes (kOsafMaxDnLength),
> > that tree is no longer valid.
> > +
> > +Besides, logsv is providing other database named `stream_array` which
is
> > used to hold all LOG existing streams.
> > +When there is any new stream created, `log_stream_t` holding
> information
> > of that stream, will be added to that database
> > +and when the stream is closed and no client connects to that stream, it
> will
> > be removed from the database.
> > +That database is a two-dimensional array with data format:
> > +   {
> > +           { <streamId1>, <pointer to `log_stream_t`> },
> > +           { <streamId2>, <pointer to `log_stream_t`> },
> > +           ...
> > +   }
> > +
> > +Logsv is able to query below infos from `stream_array` that logsv used
to
> do
> > so based on NCS PATRICIA TREE:
> > +- Is there any current log stream with specific DN in system?
> > +- Or what are the current log existing streams in system?
> > +Therefore, NCS PATRICIA TREE can be removed from logsv code.
> > `stream_array` database can play the same role as NCS_PATRICIA_TREE.
> > +
> > +More on `stream_array` database. All rooms in `stream_array` is
> clean/reset
> > at startup.
> > +First three rooms are reserved for well-known streams.
> > +At the moment (OpenSAF 5.1), there are total 67 rooms (64 for app
> streams
> > + 3 for well-known streams).
> > +Adding/deleting/searching items to/from this database is fast.
> > +
> > +In addition to above change, internal SaNameT will be replaced by
> > SaConstStringT or C++ strings and functions handling extended SaNameT
> are
> > used.
> > +
> > +NOTES:
> > +If active node is OpenSAF 5.1 or newer communicate with older versions
> > such as OpenSAF 5.0 (not support Long DN),
> > +then if there is operation on creating app stream with Long DN, standby
> > node will be crashed.
> > +This will happen because active node sends checkpoint data to standby
> > node, and there is copying data operation (strcpy)
> > +to SaNameT type. Make the data is overflowed. strcpy() should not be
> used
> > anywhere in code, but strncpy() instead.
> > +
> > +To avoid this happens, two options:
> > +a) During upgrade, make sure there is no long DN operation run until
the
> > upgrade is finished.
> > +b) Raise one ticket to fix all places using strcpy()
> > +
> > +
> > +4) Create Test Cases
> > +-----------------------------
> > +New test suite - suite #13 with ten test cases were created to cover
> > minimum requirement described at `GENERAL` section.
> > +Including five normal use cases and five abnormal use cases.
> > +
> > +Each test cases is done with following frame:
> > +a) Backup data such as current IMM attribute values, so that it can be
> > restored back after test run.
> > +b) Set up environment such as enabling long DN support in IMM, change
> log
> > stream attribute values
> > +c) Write log record containing long DN or creating streams with Long
DN.
> > +d) Verify the data if it contains what we expect to have such as log
file
> > contains long DN at specific token or not.
> > +e) Close all opened handles
> > +f) Restore the data back to original values.
> > +
> > +At verifying step, if the environment variable `LOGTEST_ENABLE_STDOUT`
> > is set, user will be able to see
> > +the verifying data such as long notifyingObj at specific log file name.
> > +And when running the test suite #13, user does not have to to take care
> > how to set up environment
> > +for long DN testing, all precondition are set to make sure the long DN
> work.
> > +
> > +Users can refer to these test cases to see how to pass long DN data to
> LOG
> > APIs,
> > +and what are precondition settings for using extended SaNameT.
> > +The tests are located in the file `~/tests/logsv/tet_log_longDN.c`
> > +
> > +Besides, some other tests/check have been done:
> > +a) Valgrind check
> > +b) Upgrade/downgrade test
> > +c) Cppcheck run
> > +
> > +
> > +III. REFERENCES
> > +=======================
> > +
> > +1) OpenSAF_Extensions_PR.odt
> > +

Attachment: README_LONGDN_R4
Description: Binary data

Attachment: README
Description: Binary data

------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to