Hi Canh,

It seems Lennart already provide comments  please check.

-AVM


On 6/21/2016 12:07 PM, Canh Truong wrote:
> Hi Mahesh,
>
> Thanks for your comments. I will send new version after Lennart comments.
> I have checked your idea about multiple thread test case. The idea may be 
> same with patch that I sent it before.
>
> Regards,
> Canh.
>
> -----Original Message-----
> From: A V Mahesh [mailto:mahesh.va...@oracle.com]
> Sent: Tuesday, June 21, 2016 11:47 AM
> To: Canh Truong; vu.m.ngu...@dektech.com.au; lennart.l...@ericsson.com
> Cc: opensaf-devel@lists.sourceforge.net
> Subject: Re: [PATCH 1 of 1] log: fix issue with priority of messages adding 
> to mailbox in the server[1396]
>
> Hi Canh,
>
> It will be good to send V2 patch with Lennart comments and adding new test 
> cases.
>
> -AVM
> On 6/21/2016 9:46 AM, A V Mahesh wrote:
>> Hi Canh,
>>
>> Some how we were not able to open your attachment , so  my self
>> written
>>
>> a multi threaded test case ( attached `thread_LogInitializeFinalize.c`
>> ) and reviewed/tested it is working fine.
>>
>> ACK  from me with following :
>>
>> - Please add such as attached  multi threaded test case to logtest,
>> before pushing
>>
>> - add # before ticket number in commit message  #1396
>>
>> -AVM
>>
>>
>> On 6/14/2016 2:47 PM, Canh Truong wrote:
>>> Hi Mahesh,
>>>
>>> I have created new test case for multiple threads. Please help check
>>> new patch in attachment.
>>>
>>> Thanks,
>>> Canh.
>>>
>>> -----Original Message-----
>>> From: A V Mahesh [mailto:mahesh.va...@oracle.com]
>>> Sent: Tuesday, June 14, 2016 11:03 AM
>>> To: Canh Van Truong; vu.m.ngu...@dektech.com.au;
>>> lennart.l...@ericsson.com
>>> Cc: opensaf-devel@lists.sourceforge.net
>>> Subject: Re: [PATCH 1 of 1] log: fix issue with priority of messages
>>> adding to mailbox in the server[1396]
>>>
>>> Hi Canh Van Truong,
>>>
>>> I hope this patch will work for multiple threads doing
>>> saLogInitialize() , saLogStreamOpen_2()  and saLogFinalize()
>>> concurrently in a single process and reaches lga_use_count = 0 ,
>>> againg restarting
>>> saLogInitialize() , saLogStreamOpen_2()  and
>>> saLogFinalize()
>>> without process exist.
>>>
>>> If so let us have a  test case like for multiple threads doing
>>> saLogInitialize() , saLogStreamOpen_2()  and saLogFinalize()
>>> concurrently
>>>
>>> -AVM
>>>
>>>
>>> On 6/13/2016 12:37 PM, Canh Van Truong wrote:
>>>>     osaf/libs/agents/saf/lga/lga_api.c |   3 ++-
>>>>     osaf/libs/agents/saf/lga/lga_util.c |  21 ++++++++++++---------
>>>>     tests/logsv/logtest.h               |   1 +
>>>>     tests/logsv/tet_saLogStreamOpen_2.c |  29
>>>> +++++++++++++++++++++++++++++
>>>>     4 files changed, 44 insertions(+), 10 deletions(-)
>>>>
>>>>
>>>> Sometimes, Log service can handle LGSV_INITIALIZE_REQ before handle
>>>> LGSV_LGS_EVT_LGA_DOWN, although LGSV_LGS_EVT_LGA_DOWN was sent first
>>>> whenever
>>>> finalize() is call for last client. Because lgs can not distinguish
>>>> MDS address between new connection (initializing new client) and old
>>>> connection (finalizing last client before). This patch fixes to keep
>>>> MDS connection when last client finalized, and re-use it when next
>>> initialize() called.
>>>> diff --git a/osaf/libs/agents/saf/lga/lga_api.c
>>>> b/osaf/libs/agents/saf/lga/lga_api.c
>>>> --- a/osaf/libs/agents/saf/lga/lga_api.c
>>>> +++ b/osaf/libs/agents/saf/lga/lga_api.c
>>>> @@ -41,7 +41,8 @@
>>>>     /* The main controle block */
>>>>     lga_cb_t lga_cb = {
>>>>         .cb_lock = PTHREAD_MUTEX_INITIALIZER,
>>>> -    .lgs_state = LGS_START
>>>> +    .lgs_state = LGS_START,
>>>> +    .mds_hdl = 0
>>>>     };
>>>>        static bool is_well_know_stream(const char* dn) diff --git
>>>> a/osaf/libs/agents/saf/lga/lga_util.c
>>>> b/osaf/libs/agents/saf/lga/lga_util.c
>>>> --- a/osaf/libs/agents/saf/lga/lga_util.c
>>>> +++ b/osaf/libs/agents/saf/lga/lga_util.c
>>>> @@ -308,21 +308,17 @@ unsigned int lga_startup(lga_cb_t *cb)
>>>>         osaf_mutex_lock_ordie(&lga_lock);
>>>>            TRACE_ENTER2("lga_use_count: %u", lga_use_count);
>>>> -    if (lga_use_count > 0) {
>>>> -        /* Already created, just increment the use_count */
>>>> -        lga_use_count++;
>>>> -        goto done;
>>>> -    } else {
>>>> +
>>>> +    if (cb->mds_hdl == 0) {
>>>>             if ((rc = ncs_agents_startup()) != NCSCC_RC_SUCCESS) {
>>>>                 TRACE("ncs_agents_startup FAILED");
>>>>                 goto done;
>>>>             }
>>>>                if ((rc = lga_create()) != NCSCC_RC_SUCCESS) {
>>>> +                cb->mds_hdl = 0;
>>>>                 ncs_agents_shutdown();
>>>>                 goto done;
>>>> -        } else {
>>>> -            lga_use_count = 1;
>>>>             }
>>>>                /* Agent has successfully been started including
>>> communication @@
>>>> -331,6 +327,9 @@ unsigned int lga_startup(lga_cb_t *cb)
>>>>             set_lga_state(LGA_NORMAL);
>>>>         }
>>>>     +    /* Increase the use_count */
>>>> +    lga_use_count++;
>>>> +
>>>>      done:
>>>>         osaf_mutex_unlock_ordie(&lga_lock);
>>>>     @@ -361,8 +360,12 @@ unsigned int lga_shutdown_after_last_cli
>>>>             /* Users still exist, just decrement the use count */
>>>>             lga_use_count--;
>>>>         } else if (lga_use_count == 1) {
>>>> -        lga_destroy();
>>>> -        rc = ncs_agents_shutdown();
>>>> +        /*
>>>> +         * Disable MDS_UNINSTALL and ncs agent shutdown to keep MDS
>>> connection.
>>>> +         * Fix ticket 1396. Msg NCSMDS_DOWN and Initialize are out
>>> of order in Mbx.
>>>> +         */
>>>> +        /* lga_destroy(); */
>>>> +        /* rc = ncs_agents_shutdown(); */
>>>>             lga_use_count = 0;
>>>>         }
>>>>     diff --git a/tests/logsv/logtest.h b/tests/logsv/logtest.h
>>>> --- a/tests/logsv/logtest.h
>>>> +++ b/tests/logsv/logtest.h
>>>> @@ -27,6 +27,7 @@
>>>>     #include <utest.h>
>>>>     #include <util.h>
>>>>     #include <sys/wait.h>
>>>> +#include <unistd.h>
>>>>        #include <osaf_time.h>
>>>>     #include <logtrace.h>
>>>> diff --git a/tests/logsv/tet_saLogStreamOpen_2.c
>>>> b/tests/logsv/tet_saLogStreamOpen_2.c
>>>> --- a/tests/logsv/tet_saLogStreamOpen_2.c
>>>> +++ b/tests/logsv/tet_saLogStreamOpen_2.c
>>>> @@ -704,6 +704,34 @@ done:
>>>>         }
>>>>     }
>>>>     +/*
>>>> + * Ticket 1396
>>>> + * Verify that saLogInitialize() then saLogFinalize() multiple time
>>>> +OK  */ void saLogMultipleInitialize(void) {
>>>> +        SaLogStreamHandleT logStreamHandle1;
>>>> +        int count = 100;
>>>> +        SaAisErrorT rc = SA_AIS_OK;
>>>> +
>>>> +        while (count--) {
>>>> +                rc = saLogInitialize(&logHandle, &logCallbacks,
>>> &logVersion);
>>>> +                if (rc != SA_AIS_OK)
>>>> +                  break;
>>>> +
>>>> +                rc = saLogStreamOpen_2(logHandle, &app1StreamName,
>>> &appStream1LogFileCreateAttributes,
>>>> + SA_LOG_STREAM_CREATE,
>>> SA_TIME_ONE_SECOND, &logStreamHandle1);
>>>> +                safassert(rc, SA_AIS_OK);
>>>> +
>>>> +                rc = saLogFinalize(logHandle);
>>>> +                if (rc != SA_AIS_OK)
>>>> +                  break;
>>>> +
>>>> +        }
>>>> +        test_validate(rc, SA_AIS_OK);
>>>> +
>>>> +}
>>>> +
>>>>     extern void saLogStreamOpenAsync_2_01(void);
>>>>     extern void saLogStreamOpenCallbackT_01(void);
>>>>     extern void saLogWriteLog_01(void); @@ -790,5 +818,6 @@ extern
>>>> void saLogStreamClose_01(void);
>>>>         test_case_add(2, verFixLogRec_Max_Err, "saLogStreamOpen_2
>>>> with
>>> maxLogRecordSize > MAX_RECSIZE, ERR");
>>>>         test_case_add(2, verFixLogRec_Min_Err, "saLogStreamOpen_2
>>>> with
>>> maxLogRecordSize < 150, ERR");
>>>>         test_case_add(2, saLogStreamOpen_2_50, "saLogStreamOpen_2
>>>> with stream number out of the limitation, ERR");
>>>> +    test_case_add(2, saLogMultipleInitialize, "saLogInitialize()
>>>> + then
>>>> + saLogFinalize() multiple time. keep MDS connection, OK");
>>>>     }


------------------------------------------------------------------------------
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

Reply via email to