[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