[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openldap-technical
Subject:    Re: Counter concurrency access
From:       Howard Chu <hyc () symas ! com>
Date:       2024-03-06 16:56:05
Message-ID: 85d6f50e-93a0-43c4-6fd5-3e23c159474c () symas ! com
[Download RAW message or body]

Howard Chu wrote:
> Pascal Jakobi wrote:
> > Hi there
> > 
> > I am creating a program that needs to increment a counter. Typically a serial \
> > number has to be incremented every time I create a certificate. 
> > The problem is to handle concurrent access. Fundamentally I need to 1/ read the \
> > counter 2/ increment it. Therefore no one must be provided access to the counter \
> > during these two operations. 
> > Therefore I need to set a lock before the read operation and release it after the \
> > update. Is there a way to do this with OL ? I am conscious of the ldapmodify \
> > features thanks to Clement, however, this will not lock the read.
> 
> You don't need to do any locking, just use the ldapmodify Increment operator and \
> the value will be incremented atomically. 
On re-reading, I see - you want to read the value and then separately do an increment \
on it.

In that case you just read the value, then do an ldapmodify with

delete: current value
-
add: new value
-

Then the op will only succeed if the value hasn't changed yet. If the value changed, \
someone else got in there between your read and your modify, and you'll have to retry \
the entire sequence until it succeeds.

-- 
  -- Howard Chu
  CTO, Symas Corp.           http://www.symas.com
  Director, Highland Sun     http://highlandsun.com/hyc/
  Chief Architect, OpenLDAP  http://www.openldap.org/project/


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic