Hi,

I just had the same exception with mysql for a totally different reason. When I updated from 4.1.1-alpha to 4.1.2-alpha in Windows without changing the db, OJB couldn't read the ojb_hl_seq table causing inserts violating the primary key constraint and thus failing to generate pks. The reason was that the primary key index of the ojb_hl_seq table had to be rebuild before selects started to work.

This has nothing to do with OJB, queries from other clients failed as well and to some other indexed tables, too (but not all, which took me some time to figure out what was wrong).

Just to inform you and others who might meet the same problem.

-- Ilkka


Christian Eugster wrote:
Hi Armin

I think I got it. There are three threads that tryed to insert the same
data. I hat put the grabSize to one and that seemed to make troubles. I
think, that the number using in grabSize has to be set to a number
corresponding to the number of threads?

Thank you for your answer!

Christian


-----Ursprungliche Nachricht-----
Von: Armin Waibel [mailto:[EMAIL PROTECTED]
Gesendet: Dienstag, 8. Juni 2004 12:14
An: OJB Users List
Betreff: Re: Can not init Identity for given object


Hi Christian,

seems expected behaviour. SequenceManagerHighLowImpl use optimistic
locking to guarantee unique HighLowSequence objects. In current
implementation SequenceManagerHighLowImpl try five times to get next
sequence object. If all calls fails the last OptimisticLockingException
was thrown:

> Caused by:
org.apache.ojb.broker.util.sequence.SequenceManagerException:
> Can't build new sequence
...
> Caused by: org.apache.ojb.broker.OptimisticLockException:
Object has been
> modified by someone else

How many threads try to insert the same data?

regards,
Armin

Christian Eugster wrote:

Hi!

I meet a problem using ojb 1.0rc5 and mysql (innodb): when i

try to insert

an object with some children  in a concurrent environment a
ClassNotPersistenceCapableException is thrown if some other clients are
doing the same (See the stacktrace below).

What am I doing wrong? Has anybody experienced the same and

solved it (and:

how)?

Thank you for answering?

Stacktrace:
INFO: Beleg wird gespeichert...
08.06.2004 08:14:16 ch.eugster.pos.db.Table describeError
SCHWERWIEGEND: Can not init Identity for given object
[EMAIL PROTECTED]


org.apache.ojb.broker.metadata.ClassNotPersistenceCapableException : Can not

init Identity for given
object [EMAIL PROTECTED]
       at org.apache.ojb.broker.Identity.init(Unknown Source)
       at org.apache.ojb.broker.Identity.<init>(Unknown Source)
       at

org.apache.ojb.broker.core.PersistenceBrokerImpl.store(Unknown

Source)
       at


org.apache.ojb.broker.core.PersistenceBrokerImpl.storeCollectionOb ject(Unkno

wn Source)
       at


org.apache.ojb.broker.core.PersistenceBrokerImpl.storeCollections(Unknown

Source)
       at


org.apache.ojb.broker.core.PersistenceBrokerImpl.storeToDb(Unknown Source)

at

org.apache.ojb.broker.core.PersistenceBrokerImpl.store(Unknown

Source)
       at

org.apache.ojb.broker.core.PersistenceBrokerImpl.store(Unknown

Source)
       at


org.apache.ojb.broker.core.DelegatingPersistenceBroker.store(Unkno wn Source)

       at


org.apache.ojb.broker.core.DelegatingPersistenceBroker.store(Unkno wn Source)

       at ch.eugster.pos.db.Table.store(Table.java:119)
       at ch.eugster.pos.db.Table.store(Table.java:215)
       at


ch.eugster.pos.client.model.ReceiptModel.storeReceipt(ReceiptModel .java:313)

       at


ch.eugster.pos.client.model.ReceiptModel.posEventPerformed(Receipt Model.java

:210)
       at
ch.eugster.pos.client.event.Action.actionPerformed(Action.java:114)
       at


ch.eugster.pos.client.event.StoreReceiptAction.actionPerformed(Sto reReceiptA

ction.java:85
)
       at


ch.eugster.pos.client.event.ExpressStoreReceiptAction.actionPerfor med(Expres

sStoreReceipt
Action.java:99)
       at

javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

       at
javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(Unknown
Source)
       at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown
Source)
       at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
       at

javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown

Source)
       at java.awt.Component.processMouseEvent(Unknown Source)
       at java.awt.Component.processEvent(Unknown Source)
       at java.awt.Container.processEvent(Unknown Source)
       at java.awt.Component.dispatchEventImpl(Unknown Source)
       at java.awt.Container.dispatchEventImpl(Unknown Source)
       at java.awt.Component.dispatchEvent(Unknown Source)
       at

java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)

at

java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)

       at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
       at java.awt.Container.dispatchEventImpl(Unknown Source)
       at java.awt.Window.dispatchEventImpl(Unknown Source)
       at java.awt.Component.dispatchEvent(Unknown Source)
       at java.awt.EventQueue.dispatchEvent(Unknown Source)
       at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown
Source)
       at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown
Source)
       at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
       at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
       at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: org.apache.ojb.broker.PersistenceBrokerException:

Could not get

key value
       at
org.apache.ojb.broker.util.BrokerHelper.getAutoIncrementValue(Unknown
Source)
       at


org.apache.ojb.broker.util.BrokerHelper.getValuesForObject(Unknown Source)

       at org.apache.ojb.broker.util.BrokerHelper.getKeyValues(Unknown
Source)
       ... 40 more
Caused by: org.apache.ojb.broker.util.sequence.SequenceManagerException:
Can't build new sequence
       at


org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl.get Sequence(U

nknown Source
)
       at


org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl.get UniqueLong

(Unknown Sour
ce)
       at


org.apache.ojb.broker.util.sequence.AbstractSequenceManager.getUni queValue(U

nknown Source
)
       ... 43 more
Caused by: org.apache.ojb.broker.OptimisticLockException:

Object has been

modified by someone else
       at
org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeUpdate(Unknown
Source)
       at


org.apache.ojb.broker.core.PersistenceBrokerImpl.storeToDb(Unknown Source)

at

org.apache.ojb.broker.core.PersistenceBrokerImpl.store(Unknown

Source)
       at

org.apache.ojb.broker.core.PersistenceBrokerImpl.store(Unknown

Source)
       at


org.apache.ojb.broker.core.DelegatingPersistenceBroker.store(Unkno wn Source)

       at


org.apache.ojb.broker.core.DelegatingPersistenceBroker.store(Unkno wn Source)

       at


org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl.loo kupStoreSe

quence(Unknow
n Source)
       at


org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl.loo kupStoreSe

quence(Unknow
n Source)
       at


org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl.loo kupStoreSe

quence(Unknow
n Source)
       at


org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl.loo kupStoreSe

quence(Unknow
n Source)
       at


org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl.loo kupStoreSe

quence(Unknow
n Source)
       at


org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl.loo kupStoreSe

quence(Unknow
n Source)
       ... 46 more


the used classes are (class-descriptors) Receipt: <class-descriptor class="ch.eugster.pos.db.Receipt" table="pos_receipt" isolation-level="read-uncommitted" accept-locks="true" refresh="false"> <field-descriptor name="id" column="id" jdbc-type="BIGINT" primarykey="true" indexed="true" access="readwrite" autoincrement="true" nullable="true" locking="false" update-lock="true"

default-fetch="false" />

   <field-descriptor name="timestamp" column="timestamp"
jdbc-type="TIMESTAMP" primarykey="false" nullable="true" indexed="false"
autoincrement="false" locking="false" update-lock="true"
default-fetch="false" access="readwrite" />
   <field-descriptor name="number" column="number" indexed="true"
jdbc-type="VARCHAR" length="25" primarykey="false" nullable="true"
autoincrement="false" locking="false" update-lock="true"
default-fetch="false" access="readwrite" />
   <field-descriptor name="transactionId" column="transaction_id"
jdbc-type="BIGINT" primarykey="false" indexed="true" access="readwrite"
autoincrement="false" nullable="false" locking="false"

update-lock="true"

default-fetch="false" />
   <field-descriptor name="bookingId" column="booking_id"
jdbc-type="BIGINT" primarykey="false" indexed="true" access="readwrite"
autoincrement="false" nullable="false" locking="false"

update-lock="true"

default-fetch="false" />
   <field-descriptor name="salespointId" column="salespoint_id"
jdbc-type="BIGINT" primarykey="false" nullable="true" indexed="false"
autoincrement="false" locking="false" update-lock="true"
default-fetch="false" access="readwrite" />
   <field-descriptor name="userId" column="user_id" jdbc-type="BIGINT"
primarykey="false" nullable="true" indexed="false" autoincrement="false"
locking="false" update-lock="true" default-fetch="false"

access="readwrite"

/>
   <field-descriptor name="foreignCurrencyId"

column="foreign_currency_id"

jdbc-type="BIGINT" primarykey="false" nullable="true" indexed="false"
autoincrement="false" locking="false" update-lock="true"
default-fetch="false" access="readwrite" />
   <field-descriptor name="status" column="status" jdbc-type="INTEGER"
primarykey="false" nullable="true" indexed="false" autoincrement="false"
locking="false" update-lock="true" default-fetch="false"

access="readwrite"

/>
   <field-descriptor name="settlement" column="settlement"
jdbc-type="BIGINT" primarykey="false" indexed="true" nullable="false"
autoincrement="false" locking="false" update-lock="true"
default-fetch="false" access="readwrite" />
   <field-descriptor name="amount" column="amount" jdbc-type="DOUBLE"
primarykey="false" nullable="true" indexed="false" autoincrement="false"
locking="false" update-lock="true" default-fetch="false"

access="readwrite"

/>
   <field-descriptor name="payment" column="payment" jdbc-type="DOUBLE"
primarykey="false" nullable="true" indexed="false" autoincrement="false"
locking="false" update-lock="true" default-fetch="false"

access="readwrite"

/>
   <field-descriptor name="paymentFC" column="payment_fc"
jdbc-type="DOUBLE" primarykey="false" nullable="true" indexed="false"
autoincrement="false" locking="false" update-lock="true"
default-fetch="false" access="readwrite" />

   <reference-descriptor name="salespoint"
class-ref="ch.eugster.pos.db.Salespoint" proxy="false" refresh="false"
auto-retrieve="true" auto-update="false" auto-delete="false"
otm-dependent="false">
                <foreignkey field-ref="salespointId" />
   </reference-descriptor>

   <reference-descriptor name="user" class-ref="ch.eugster.pos.db.User"
proxy="false" refresh="false" auto-retrieve="true" auto-update="false"
auto-delete="false" otm-dependent="false">
                <foreignkey field-ref="userId" />
   </reference-descriptor>

   <reference-descriptor name="foreignCurrency"
class-ref="ch.eugster.pos.db.ForeignCurrency" proxy="false"

refresh="false"

auto-retrieve="true" auto-update="false" auto-delete="false"
otm-dependent="false">
                <foreignkey field-ref="foreignCurrencyId" />
   </reference-descriptor>

   <collection-descriptor name="positions"
element-class-ref="ch.eugster.pos.db.Position" auto-retrieve="true"
auto-update="true" auto-delete="true" sort="ASC" proxy="false"
refresh="false" otm-dependent="false">
                <orderby name="id" sort="ASC" />
        <inverse-foreignkey field-ref="receiptId" />
   </collection-descriptor>

   <collection-descriptor name="payments"
element-class-ref="ch.eugster.pos.db.Payment" auto-retrieve="true"
auto-update="true" auto-delete="true" sort="ASC" proxy="false"
refresh="false" otm-dependent="false">
                <orderby name="id" sort="ASC" />
                <inverse-foreignkey field-ref="receiptId" />
   </collection-descriptor>
</class-descriptor>

Position:
<class-descriptor class="ch.eugster.pos.db.Position"

table="pos_position"

isolation-level="read-uncommitted" accept-locks="true" refresh="false">
   <field-descriptor name="id" column="id" jdbc-type="BIGINT"
primarykey="true" indexed="true" access="readwrite" autoincrement="true"
nullable="true" locking="false" update-lock="true"

default-fetch="false" />

   <field-descriptor name="receiptId" column="receipt_id"
jdbc-type="BIGINT" primarykey="false" nullable="true" indexed="false"
autoincrement="false" locking="false" update-lock="true"
default-fetch="false" access="readwrite" />
   <field-descriptor name="productId" column="product_id"
jdbc-type="VARCHAR" length="50" primarykey="false" nullable="true"
indexed="false" autoincrement="false" locking="false" update-lock="true"
default-fetch="false" access="readwrite" />
   <field-descriptor name="productGroupId" column="product_group_id"
jdbc-type="BIGINT" primarykey="false" nullable="true" indexed="false"
autoincrement="false" locking="false" update-lock="true"
default-fetch="false" access="readwrite" />
   <field-descriptor name="currentTaxId" column="current_tax_id"
jdbc-type="BIGINT" primarykey="false" nullable="true" indexed="false"
autoincrement="false" locking="false" update-lock="true"
default-fetch="false" access="readwrite" />
   <field-descriptor name="quantity" column="quantity"

jdbc-type="INTEGER"

primarykey="false" nullable="true" indexed="false" autoincrement="false"
locking="false" update-lock="true" default-fetch="false"

access="readwrite"

/>
   <field-descriptor name="price" column="price" jdbc-type="DOUBLE"
primarykey="false" nullable="true" indexed="false" autoincrement="false"
locking="false" update-lock="true" default-fetch="false"

access="readwrite"

/>
   <field-descriptor name="discount" column="discount"

jdbc-type="DOUBLE"

primarykey="false" nullable="true" indexed="false" autoincrement="false"
locking="false" update-lock="true" default-fetch="false"

access="readwrite"

/>
   <field-descriptor name="expense" column="expense" jdbc-type="BIT"
primarykey="false" nullable="true" indexed="false" autoincrement="false"
locking="false" update-lock="true" default-fetch="false"

access="readwrite"

/>
   <field-descriptor name="galileoBook" column="galileo_book"
jdbc-type="BIT" primarykey="false" nullable="true" indexed="false"
autoincrement="false" locking="false" update-lock="true"
default-fetch="false" access="readwrite" />
   <field-descriptor name="galileoBooked" column="galileo_booked"
jdbc-type="BIT" primarykey="false" nullable="true" indexed="false"
autoincrement="false" locking="false" update-lock="true"
default-fetch="false" access="readwrite" />
   <field-descriptor name="optCode" column="opt_code" jdbc-type="CHAR"
length="1" primarykey="false" nullable="true" indexed="false"
autoincrement="false" locking="false" update-lock="true"
default-fetch="false" access="readwrite" />
   <field-descriptor name="author" column="author" jdbc-type="VARCHAR"
length="100" primarykey="false" nullable="true" indexed="false"
autoincrement="false" locking="false" update-lock="true"
default-fetch="false" access="readwrite" />
   <field-descriptor name="title" column="title" jdbc-type="VARCHAR"
length="100" primarykey="false" nullable="true" indexed="false"
autoincrement="false" locking="false" update-lock="true"
default-fetch="false" access="readwrite" />
   <field-descriptor name="publisher" column="publisher"
jdbc-type="VARCHAR" length="100" primarykey="false" nullable="true"
indexed="false" autoincrement="false" locking="false" update-lock="true"
default-fetch="false" access="readwrite" />
   <field-descriptor name="isbn" column="isbn" jdbc-type="VARCHAR"
length="13" primarykey="false" nullable="true" indexed="false"
autoincrement="false" locking="false" update-lock="true"
default-fetch="false" access="readwrite" />
   <field-descriptor name="bznr" column="bznr" jdbc-type="VARCHAR"
length="10" primarykey="false" nullable="true" indexed="false"
autoincrement="false" locking="false" update-lock="true"
default-fetch="false" access="readwrite" />
   <field-descriptor name="productNumber" column="product_number"
jdbc-type="VARCHAR" length="100" primarykey="false" nullable="true"
indexed="false" autoincrement="false" locking="false" update-lock="true"
default-fetch="false" access="readwrite" />
   <field-descriptor name="ordered" column="ordered" jdbc-type="BIT"
primarykey="false" nullable="true" indexed="false" autoincrement="false"
locking="false" update-lock="true" default-fetch="false"

access="readwrite"

/>
   <field-descriptor name="orderId" column="order_id"

jdbc-type="VARCHAR"

length="100" primarykey="false" nullable="true" indexed="false"
autoincrement="false" locking="false" update-lock="true"
default-fetch="false" access="readwrite" />

   <reference-descriptor name="receipt"
class-ref="ch.eugster.pos.db.Receipt" proxy="false" refresh="false"
auto-retrieve="true" auto-update="false" auto-delete="false"
otm-dependent="false">
                <foreignkey field-ref="receiptId" />
   </reference-descriptor>

   <reference-descriptor name="productGroup"
class-ref="ch.eugster.pos.db.ProductGroup" proxy="false" refresh="false"
auto-retrieve="true" auto-update="false" auto-delete="false"
otm-dependent="false">
                <foreignkey field-ref="productGroupId" />
   </reference-descriptor>

   <reference-descriptor name="currentTax"
class-ref="ch.eugster.pos.db.CurrentTax" proxy="false" refresh="false"
auto-retrieve="true" auto-update="false" auto-delete="false"
otm-dependent="false">
                <foreignkey field-ref="currentTaxId" />
   </reference-descriptor>

</class-descriptor>

Payment:
<class-descriptor class="ch.eugster.pos.db.Payment" table="pos_payment"
isolation-level="read-uncommitted" accept-locks="true" refresh="false">
   <field-descriptor name="id" column="id" jdbc-type="BIGINT"
primarykey="true" indexed="true" access="readwrite" autoincrement="true"
nullable="true" locking="false" update-lock="true"

default-fetch="false" />

   <field-descriptor name="receiptId" column="receipt_id"
jdbc-type="BIGINT" primarykey="false" nullable="true" indexed="false"
autoincrement="false" locking="false" update-lock="true"
default-fetch="false" access="readwrite" />
   <field-descriptor name="paymentTypeId" column="payment_type_id"
jdbc-type="BIGINT" primarykey="false" nullable="true" indexed="false"
autoincrement="false" locking="false" update-lock="true"
default-fetch="false" access="readwrite" />
   <field-descriptor name="foreignCurrencyId"

column="foreign_currency_id"

jdbc-type="BIGINT" primarykey="false" nullable="true" indexed="false"
autoincrement="false" locking="false" update-lock="true"
default-fetch="false" access="readwrite" />
   <field-descriptor name="quotation" column="quotation"

jdbc-type="DOUBLE"

primarykey="false" nullable="true" indexed="false" autoincrement="false"
locking="false" update-lock="true" default-fetch="false"

access="readwrite"

/>
   <field-descriptor name="amount" column="amount" jdbc-type="DOUBLE"
primarykey="false" nullable="true" indexed="false" autoincrement="false"
locking="false" update-lock="true" default-fetch="false"

access="readwrite"

/>
   <field-descriptor name="amountFC" column="amount_fc"

jdbc-type="DOUBLE"

primarykey="false" nullable="true" indexed="false" autoincrement="false"
locking="false" update-lock="true" default-fetch="false"

access="readwrite"

/>
   <field-descriptor name="roundFactor" column="round_factor"
jdbc-type="DOUBLE" primarykey="false" nullable="true" indexed="false"
autoincrement="false" locking="false" update-lock="true"
default-fetch="false" access="readwrite" />
   <field-descriptor name="roundFactorFC" column="round_factor_fc"
jdbc-type="DOUBLE" primarykey="false" nullable="true" indexed="false"
autoincrement="false" locking="false" update-lock="true"
default-fetch="false" access="readwrite" />

   <reference-descriptor name="receipt"
class-ref="ch.eugster.pos.db.Receipt" proxy="false" refresh="false"
auto-retrieve="true" auto-update="false" auto-delete="false"
otm-dependent="false">
                <foreignkey field-ref="receiptId" />
   </reference-descriptor>

   <reference-descriptor name="paymentType"
class-ref="ch.eugster.pos.db.PaymentType" proxy="false" refresh="false"
auto-retrieve="true" auto-update="false" auto-delete="false"
otm-dependent="false">
                <foreignkey field-ref="paymentTypeId" />
   </reference-descriptor>

   <reference-descriptor name="foreignCurrency"
class-ref="ch.eugster.pos.db.ForeignCurrency" proxy="false"

refresh="false"

auto-retrieve="true" auto-update="false" auto-delete="false"
otm-dependent="false">
                <foreignkey field-ref="foreignCurrencyId" />
   </reference-descriptor>

</class-descriptor>


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]




--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]




--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]

.



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to