Hi Vu, I don't think it is required , I will check OpenSAF_extensions_PR.
-AVM On 7/8/2016 10:30 AM, Vu Minh Nguyen wrote: > Hi Mahesh, > > In the OpenSAF_extensions_PR, it stated clearly how to enable extended > SaNameT in application at 4.3 section. > I am wondering it is redundant to re-state such info in every services that > has Long DN support. > > Regards, Vu > >> -----Original Message----- >> From: A V Mahesh [mailto:mahesh.va...@oracle.com] >> Sent: Friday, July 8, 2016 11:42 AM >> To: Vu Minh Nguyen <vu.m.ngu...@dektech.com.au>; >> lennart.l...@ericsson.com >> Cc: opensaf-devel@lists.sourceforge.net >> Subject: Re: [PATCH 1 of 1] log: Readme file for long DN support [#1315] >> >> Hi Vu, >> >> It seems this README doesn't explained , how to enable >> SA_ENABLE_EXTENDED_NAMES on a node, >> >> if some application is creating an app stream ( NOT using saflogger tool >> ) DN is longer than 255 characters in length. >> >> -AVM >> >> On 7/4/2016 8:36 AM, Vu Minh Nguyen wrote: >>> 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. >>> + >>> +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. >>> + >>> + >>> +II) IMPLEMENTATION (#1315) >>> +============================== >>> + >>> +1) Update saflogger tool - Add One More Option `-f` >>> +------------------------------------------------- >>> +`-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. >>> + >>> +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 >>> + > ------------------------------------------------------------------------------ Attend Shape: An AT&T Tech Expo July 15-16. Meet us at AT&T Park in San Francisco, CA to explore cutting-edge tech and listen to tech luminaries present their vision of the future. This family event has something for everyone, including kids. Get more information and register today. http://sdm.link/attshape _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel