Correction.
Perhaps not assert in all cases but the second locker always detects the 
failure (lock != 1) in pbeBEginTrans returns error
and the caller (PBE) aborts the transaction attempt.

/AndersBj

-----Original Message-----
From: Anders Björnerstedt [mailto:[email protected]] 
Sent: den 12 augusti 2015 17:25
To: Zoran Milinkovic; Neelakanta Reddy; [email protected]
Cc: [email protected]
Subject: Re: [devel] [PATCH 1 of 1] imm:Decrement sqliteTransLock when BEGIN 
EXCLUSIVE TRANSACTION fails [#1426]

If this happens then the second locker should exit assert.

/AndersBj

-----Original Message-----
From: Zoran Milinkovic
Sent: den 12 augusti 2015 14:51
To: Neelakanta Reddy; Anders Björnerstedt; [email protected]
Cc: [email protected]
Subject: RE: [PATCH 1 of 1] imm:Decrement sqliteTransLock when BEGIN EXCLUSIVE 
TRANSACTION fails [#1426]

Hi Neelakanta,

What will happen if there is a context-switch between thread1 and thread2 just 
after "while(sqliteTransLock) {" when sqliteTransLock == 0 ?
Then both thread1 and thread2 will pass 'while' loop and both threads will 
increase sqliteTransLock.

The likelihood that this happen is very very low, but I think that this case 
should also be covered.

Best regards,
Zoran

-----Original Message-----
From: Neelakanta Reddy [mailto:[email protected]]
Sent: Wednesday, August 12, 2015 8:48 AM
To: Zoran Milinkovic; Anders Björnerstedt; [email protected]
Cc: [email protected]
Subject: Re: [PATCH 1 of 1] imm:Decrement sqliteTransLock when BEGIN EXCLUSIVE 
TRANSACTION fails [#1426]

Hi zoran,

In the few line above there is check  to verify sqliteTransLock in " 
while(sqliteTransLock) {" .

Multiple threads are present only for 2PBE case. In the 2PBE case if a
thread1 is waiting for lock and got the lock released, then sqliteTransLock 
will be incremented. If in this time a context-switch happens then the thread2 
will be spinning in sqliteTransLock.

Decrementing of sqliteTransLock may not be required.

/Neel.


On Tuesday 11 August 2015 06:34 PM, Zoran Milinkovic wrote:
> Hi Neelakanta,
>
> Shouldn't sqliteTransLock be also decremented few lines above in " 
> if(sqliteTransLock != 1) {" statement ?
>
> Thanks,
> Zoran
>
> -----Original Message-----
> From: [email protected] [mailto:[email protected]]
> Sent: Thursday, July 30, 2015 3:47 PM
> To: Anders Björnerstedt; Zoran Milinkovic; [email protected]
> Cc: [email protected]
> Subject: [PATCH 1 of 1] imm:Decrement sqliteTransLock when BEGIN 
> EXCLUSIVE TRANSACTION fails [#1426]
>
>   osaf/libs/common/immsv/immpbe_dump.cc |  1 +
>   1 files changed, 1 insertions(+), 0 deletions(-)
>
>
> There is a chance that NFS/shared-storage may re-attach after few 
> seconds, and transaction is not yet started, so decrement the 
> sqliteTransLock in pbeBeginTrans which releases the lock
>
> diff --git a/osaf/libs/common/immsv/immpbe_dump.cc
> b/osaf/libs/common/immsv/immpbe_dump.cc
> --- a/osaf/libs/common/immsv/immpbe_dump.cc
> +++ b/osaf/libs/common/immsv/immpbe_dump.cc
> @@ -2909,6 +2909,7 @@ SaAisErrorT pbeBeginTrans(void* db_handl
>               LOG_ER("SQL statement ('BEGIN EXCLUSIVE TRANSACTION') failed 
> because:\n %s",
>                       execErr);
>               sqlite3_free(execErr);
> +             --sqliteTransLock;
>               return SA_AIS_ERR_FAILED_OPERATION;
>       }
>       return SA_AIS_OK;


------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to