Return-Path: Delivered-To: apmail-db-ojb-dev-archive@www.apache.org Received: (qmail 49396 invoked from network); 16 Sep 2004 11:10:58 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur-2.apache.org with SMTP; 16 Sep 2004 11:10:58 -0000 Received: (qmail 95250 invoked by uid 500); 16 Sep 2004 11:10:58 -0000 Delivered-To: apmail-db-ojb-dev-archive@db.apache.org Received: (qmail 95033 invoked by uid 500); 16 Sep 2004 11:10:54 -0000 Mailing-List: contact ojb-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "OJB Developers List" Reply-To: "OJB Developers List" Delivered-To: mailing list ojb-dev@db.apache.org Received: (qmail 95018 invoked by uid 500); 16 Sep 2004 11:10:54 -0000 Received: (qmail 95010 invoked by uid 99); 16 Sep 2004 11:10:54 -0000 X-ASF-Spam-Status: No, hits=-10.0 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.28) with SMTP; Thu, 16 Sep 2004 04:10:54 -0700 Received: (qmail 49362 invoked by uid 1510); 16 Sep 2004 11:10:53 -0000 Date: 16 Sep 2004 11:10:53 -0000 Message-ID: <20040916111053.49361.qmail@minotaur.apache.org> From: arminw@apache.org To: db-ojb-cvs@apache.org Subject: cvs commit: db-ojb/src/java/org/apache/ojb/broker/util/sequence SequenceManagerNativeImpl.java X-Virus-Checked: Checked X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N arminw 2004/09/16 04:10:52 Modified: src/java/org/apache/ojb/broker/util/sequence Tag: OJB_1_0_RELEASE SequenceManagerNativeImpl.java Log: use keyword 'volatile' to make decrement of static long counter an atomic operation Revision Changes Path No revision No revision 1.18.2.2 +9 -13 db-ojb/src/java/org/apache/ojb/broker/util/sequence/SequenceManagerNativeImpl.java Index: SequenceManagerNativeImpl.java =================================================================== RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/util/sequence/SequenceManagerNativeImpl.java,v retrieving revision 1.18.2.1 retrieving revision 1.18.2.2 diff -u -r1.18.2.1 -r1.18.2.2 --- SequenceManagerNativeImpl.java 8 Sep 2004 22:08:50 -0000 1.18.2.1 +++ SequenceManagerNativeImpl.java 16 Sep 2004 11:10:52 -0000 1.18.2.2 @@ -98,9 +98,11 @@ 2. Problem is that generated oid (by Identity column) must not begin with 0. + + Use keyword 'volatile' to make decrement of a long value an + atomic operation */ - private static long tempKey = -1; - private static Object dummy = new Object(); + private static volatile long tempKey = -1; public SequenceManagerNativeImpl(PersistenceBroker broker) { @@ -280,16 +282,10 @@ { /* arminw: - AFAIK, when using primitive long it's not guaranteed that "--value" is an atomic - operation in JVM, so synchronize it + workaround for locking problems of new objects + We need unique 'dummy keys' for new objects before storing. + Variable 'tempKey' is declared volatile, thus decrement should be atomic */ - synchronized(dummy) - { - /* - workaround for locking problems of new objects - We need unique 'dummy keys' for new objects before storing - */ - return --tempKey; - } + return --tempKey; } } --------------------------------------------------------------------- To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org For additional commands, e-mail: ojb-dev-help@db.apache.org