Hi Canh,

I forgot to attach some comments I made in the code

Thanks
Lennart

From: Lennart Lund
Sent: den 2 augusti 2018 14:32
To: Canh Van Truong <canh.v.tru...@dektech.com.au>; Vu Minh Nguyen 
<vu.m.ngu...@dektech.com.au>
Cc: opensaf-devel@lists.sourceforge.net; Lennart Lund 
<lennart.l...@ericsson.com>
Subject: RE: [PATCH 0/1] Review Request for log: fix logtest 6 42 fail [#2903]

Hi Canh

Thanks for the information. See my comments below

Regards
Lennart

From: Canh Van Truong 
<canh.v.tru...@dektech.com.au<mailto:canh.v.tru...@dektech.com.au>>
Sent: den 2 augusti 2018 07:12
To: Lennart Lund <lennart.l...@ericsson.com<mailto:lennart.l...@ericsson.com>>; 
Vu Minh Nguyen <vu.m.ngu...@dektech.com.au<mailto:vu.m.ngu...@dektech.com.au>>
Cc: 
opensaf-devel@lists.sourceforge.net<mailto:opensaf-devel@lists.sourceforge.net>
Subject: RE: [PATCH 0/1] Review Request for log: fix logtest 6 42 fail [#2903]


Hi Lennart



Please see my reply inline



Thanks

Canh



-----Original Message-----
From: Lennart Lund <lennart.l...@ericsson.com<mailto:lennart.l...@ericsson.com>>
Sent: Wednesday, August 1, 2018 9:20 PM
To: Canh Van Truong 
<canh.v.tru...@dektech.com.au<mailto:canh.v.tru...@dektech.com.au>>; Vu Minh 
Nguyen <vu.m.ngu...@dektech.com.au<mailto:vu.m.ngu...@dektech.com.au>>
Cc: 
opensaf-devel@lists.sourceforge.net<mailto:opensaf-devel@lists.sourceforge.net>;
 Canh Van Truong 
<canh.v.tru...@dektech.com.au<mailto:canh.v.tru...@dektech.com.au>>; Lennart 
Lund <lennart.l...@ericsson.com<mailto:lennart.l...@ericsson.com>>
Subject: RE: [PATCH 0/1] Review Request for log: fix logtest 6 42 fail [#2903]



Hi Canh,



I am not sure this is a correct fix. Please answer my comments [Lennart]:



Test case logtest 2 49 creates some cfg app to test the limitation, then

deleting these stream at the end. But the deleting fails due to timeout for

waiting the implementer. After that test case logtest 6 42 need to create

some cfg app and take the same stream name. That causes the creattion fail

with SA_AIS_ERR_EXIST error.

[Lennart] This part will make it possible to run the second test case (6 42) if 
the first test case (2 49) fails to delete the log streams it creates. Before 
the fix the streams was given the same name in both test cases. However if you 
should try to run test (2 49) again it will fail for the same reason as test 
case (6 42) failed so the problem is actually not solved.

[Canh] I think the case you mention here is that you MANUALLY try to run test 
case (2 49) 2 times separately. To avoid it, you have to delete existed object 
manually before running second test case (2 49). The fix just solves when you 
run the whole test cases "logtest", each test case executed sequentially and we 
cannot involve to delete existed object.

[Lennart] Testing of the log service may be done on several nodes in the same 
test session. If for example logtest is run on node1 and this problem occurs 
the will continue. However, if logtest is done again on another node2 test 2 49 
will fail as above since in an automated test nobody will MANUALLY remove 
anything.



The purpose of both test cases is that test the limitation of number of app 
stream and it doesn't verify if deleting stream fail or not at the end of test 
cases.



In deep, lib function rename() return failure causes the retry is happened. 
From the second retry, it cannot find the old file due to file name is changed. 
Actually the file name is changed (check file name in directory "saflog/..."). 
This rarely happen (first time I see it). Maybe no way to fix this. How do you 
think about it?

[Lennart] I'm a little bit confused here, something with this seems wrong. Test 
2 49 and 6 46 is supposed to test the limitation of the number of APPLICATION 
streams (app streams) that shall be possible to create in a cluster and was 
introduced with ticket  "#1446 log: trouble when the number of existing app 
streams reaches limitation"
The header information for test case 2 49 says (and something similar for 6 42):

"/*

* Add test case for ticket #1446

* Verify that logsv failed to create runtime app stream  if number of app

* streams has reached the limitation

*

*/"
However, test 2 49 and 6 42 creates a number of CONFIGURATION streams and tests 
that no more than the number of streams set in IMM attribute 
logMaxApplicationStreams can be created. This is incorrect, there is no 
limitation for CONFIGURATION streams. The limitation set in 
logMaxApplicationStreams is only for APPLICATION streams!
When I look at the test cases there seems to be some confusion about the 
definitions of application stream and configuration stream and there properties.

  An APPLICATION stream is a stream that is always (and can only be) created in 
runtime using the log service API saLogStreamOpen_2(). The stream is created if 
in-parameter *logFileCreateAttributes is not set to NULL, shall be set to NULL 
if an existing stream shall be opened. An app stream is represented by a 
runtime object in the IMM model. An app stream is always automatically deleted 
when closed by all clients. There is a limitation for how many app streams that 
can exist in a cluster, the limitation is set in the log service configuration 
object attribute logMaxApplicationStreams.

  A CONFIGURATION stream can be defined in the configuration of the IMM model 
and is represented by a configuration object. Three such streams always exist 
(specified in AIS) which are the alarm stream, the notification stream and the 
system stream. User defined configuration streams can also be defined. A user 
defined configuration stream can be defined in the IMM model configuration 
file(s) so that it exists at installation time. It is also possible to create a 
configuration stream in runtime by creating a configuration object of class 
SaLogStreamConfig. A configuration stream can be opened by a client in the same 
way as an already existing application stream by using the log service API 
saLogStreamOpen_2() but cannot be created using that API. A configuration 
stream is not deleted when closed by all clients. A configuration stream is 
always created automatically when the cluster is started. It is possible to 
delete a user defined configuration stream by removing the corresponding 
configuration object and that can be done in runtime. Creation and deletion of 
configuration streams in runtime is done using IMM APIs for create or delete of 
configuration object.
NOTE1: There shall be no limitation of the number of configuration streams! If 
such a limitation exist it is DEFECT that should be fixed!

NOTE2: It is not logical that the log service shall check how many 
configuration streams there are in a cluster since the log service is not used 
to define them.


The TESTS:
A test that verifies that it is not possible to create more APPLICATION streams 
than given by the limit in logMaxApplicationStreams is valid to have but a test 
for validating a max number of CONFIGURATION streams is not.



- If a limitation of number of CONFIGURATION streams that may exist in a 
cluster is implemented in the log server it is a defect and a ticket should be 
written and fixed. The log service may in practice only be able to handle a 
limited number of log streams but in that case this should be a documented 
limitation.
If I remember correctly the code may be written in such a way that the memory 
allocated for log stream data (for all streams) is based on the value in 
logMaxApplicationStreams + 3 or something like that but that is internal bad 
code that could be fixed.

- The test cases should be changed to verify max number of APPLICATION streams.



The patch updates stream name of 2 test case and update the retry of

renaming file is 5s due to imm wait for implemeter 6s.

[Lennart] Why is this changed? This is not a change in the test code. 
Originally timeout for renaming files was 8 seconds and you have changed that 
to 5 seconds. I cannot see the meaning of that. I assume that the log service 
deletes the log stream using immcfg (only for cfg streams) after this timeout 
even if the file could not be renamed and that the thinking behind this is that 
log stream deletion shall be done before timeout in immcfg.

However, the immcfg tool is using immutil for handling try again loops and the 
timeout setting (see immutilWrapperProfile) is 60 seconds which is the 
recommended timeout time for

initializing an in this case OM handle (also for OI handle).

Note that changing the file renaming timeout may be considered NBC!



[Canh] -  Timeout setting (immutilWrapperProfile) is 60 second that isn't 
meaningful here. The timeout I mention is that timeout, imm wait for callback 
from implementer (I got from Vu is 6 seconds). So I changed timeout here to 5s.

Note that imm does not care how long ccb_app_callback execute. But if 
ccb_app_callback take a lot of time, it will impact to next ccb wait for 
implementer response (e.g ccb_completed_callback of next ccb doesn't execute 
because lgs hasn't completed the previous ccb_app_callback).

  *   From original code, it didn't use time clock to calculate the timeout 
(used variable "msecs_waited"). So actually the time to retry here is bigger 
8s. I update to use time clock instead variable.
  *   I am not sure why NBC?



[Lennart] Now I understand that the test is not testing APPLICATION streams and 
then the callback handling timeout makes some sense. However, Stream_close() is 
not used only when deleting CONFIGURATION streams. Shortening the timeout may 
be an NBC if the log service is running on a system with a file system that at 
least sometimes is a bit slow but the 8 sec timeout is enough but a new 6 sec 
timeout is not. This means that in such a system the log service starts to fail 
more often than before. This is NBC.



Thanks

Lennart



> -----Original Message-----

> From: Canh Van Truong 
> <canh.v.tru...@dektech.com.au<mailto:canh.v.tru...@dektech.com.au>>

> Sent: den 1 augusti 2018 05:15

> To: Lennart Lund 
> <lennart.l...@ericsson.com<mailto:lennart.l...@ericsson.com>>; Vu Minh Nguyen

> <vu.m.ngu...@dektech.com.au<mailto:vu.m.ngu...@dektech.com.au>>

> Cc: 
> opensaf-devel@lists.sourceforge.net<mailto:opensaf-devel@lists.sourceforge.net>;
>  Canh Van Truong

> <canh.v.tru...@dektech.com.au<mailto:canh.v.tru...@dektech.com.au>>

> Subject: [PATCH 0/1] Review Request for log: fix logtest 6 42 fail [#2903]

>

> Summary: log: fix logtest 6 42 fail [#2903]

> Review request for Ticket(s): 2903

> Peer Reviewer(s): Vu, Lennart

> Pull request to: *** LIST THE PERSON WITH PUSH ACCESS HERE ***

> Affected branch(es): develop,release

> Development branch: ticket-2903

> Base revision: 7f6f6c0531a0f5e4f2b0dc1abf4bab6962a3d1a9

> Personal repository: git://git.code.sf.net/u/canht32/review

>

> --------------------------------

> Impacted area       Impact y/n

> --------------------------------

>  Docs                    n

>  Build system            n

>  RPM/packaging           n

>  Configuration files     n

>  Startup scripts         n

>  SAF services            y

>  OpenSAF services        n

>  Core libraries          n

>  Samples                 n

>  Tests                   n

>  Other                   n

>

>

> Comments (indicate scope for each "y" above):

> ---------------------------------------------

> *** EXPLAIN/COMMENT THE PATCH SERIES HERE ***

>

> revision 7489c44113ac179020ba554b0c76eaf9750ef75f

> Author:             Canh Van Truong 
> <canh.v.tru...@dektech.com.au<mailto:canh.v.tru...@dektech.com.au>>

> Date: Wed, 1 Aug 2018 10:02:21 +0700

>

> log: fix logtest 6 42 fail [#2903]

>

> Test case logtest 2 49 creates some cfg app to test the limitation, then

> deleting these stream at the end. But the deleting fails due to timeout for

> waiting the implementer. After that test case logtest 6 42 need to create

> some cfg app and take the same stream name. That causes the creattion fail

> with SA_AIS_ERR_EXIST error.

>

> The patch updates stream name of 2 test case and update the retry of

> renaming

> file is 5s due to imm wait for implemeter 6s.

>

>

>

> Complete diffstat:

> ------------------

>  src/log/apitest/tet_LogOiOps.c          | 20 ++++++++++----------

>  src/log/apitest/tet_saLogStreamOpen_2.c | 10 +++++-----

>  src/log/logd/lgs_stream.cc              | 23 ++++++++++-------------

>  3 files changed, 25 insertions(+), 28 deletions(-)

>

>

> Testing Commands:

> -----------------

> *** LIST THE COMMAND LINE TOOLS/STEPS TO TEST YOUR CHANGES ***

>

>

> Testing, Expected Results:

> --------------------------

> *** PASTE COMMAND OUTPUTS / TEST RESULTS ***

>

>

> Conditions of Submission:

> -------------------------

> *** HOW MANY DAYS BEFORE PUSHING, CONSENSUS ETC ***

>

>

> Arch      Built     Started    Linux distro

> -------------------------------------------

> mips        n          n

> mips64      n          n

> x86         n          n

> x86_64      n          n

> powerpc     n          n

> powerpc64   n          n

>

>

> Reviewer Checklist:

> -------------------

> [Submitters: make sure that your review doesn't trigger any checkmarks!]

>

>

> Your checkin has not passed review because (see checked entries):

>

> ___ Your RR template is generally incomplete; it has too many blank entries

>     that need proper data filled in.

>

> ___ You have failed to nominate the proper persons for review and push.

>

> ___ Your patches do not have proper short+long header

>

> ___ You have grammar/spelling in your header that is unacceptable.

>

> ___ You have exceeded a sensible line length in your

> headers/comments/text.

>

> ___ You have failed to put in a proper Trac Ticket # into your commits.

>

> ___ You have incorrectly put/left internal data in your comments/files

>     (i.e. internal bug tracking tool IDs, product names etc)

>

> ___ You have not given any evidence of testing beyond basic build tests.

>     Demonstrate some level of runtime or other sanity testing.

>

> ___ You have ^M present in some of your files. These have to be removed.

>

> ___ You have needlessly changed whitespace or added whitespace crimes

>     like trailing spaces, or spaces before tabs.

>

> ___ You have mixed real technical changes with whitespace and other

>     cosmetic code cleanup changes. These have to be separate commits.

>

> ___ You need to refactor your submission into logical chunks; there is

>     too much content into a single commit.

>

> ___ You have extraneous garbage in your review (merge commits etc)

>

> ___ You have giant attachments which should never have been sent;

>     Instead you should place your content in a public tree to be pulled.

>

> ___ You have too many commits attached to an e-mail; resend as threaded

>     commits, or place in a public tree for a pull.

>

> ___ You have resent this content multiple times without a clear indication

>     of what has changed between each re-send.

>

> ___ You have failed to adequately and individually address all of the

>     comments and change requests that were proposed in the initial review.

>

> ___ You have a misconfigured ~/.gitconfig file (i.e. user.name, user.email

> etc)

>

> ___ Your computer have a badly configured date and time; confusing the

>     the threaded patch review.

>

> ___ Your changes affect IPC mechanism, and you don't present any results

>     for in-service upgradability test.

>

> ___ Your changes affect user manual and documentation, your patch series

>     do not contain the patch that updates the Doxygen manual.


Attachment: log_2903_Lennart_coments.diff
Description: log_2903_Lennart_coments.diff

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to