[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