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.storeCollectionObject(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(Unknown Source)
        at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.store(Unknown 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(ReceiptModel.java
:210)
        at
ch.eugster.pos.client.event.Action.actionPerformed(Action.java:114)
        at
ch.eugster.pos.client.event.StoreReceiptAction.actionPerformed(StoreReceiptA
ction.java:85
)
        at
ch.eugster.pos.client.event.ExpressStoreReceiptAction.actionPerformed(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.getSequence(U
nknown Source
)
        at
org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl.getUniqueLong
(Unknown Sour
ce)
        at
org.apache.ojb.broker.util.sequence.AbstractSequenceManager.getUniqueValue(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(Unknown Source)
        at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.store(Unknown Source)
        at
org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl.lookupStoreSe
quence(Unknow
n Source)
        at
org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl.lookupStoreSe
quence(Unknow
n Source)
        at
org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl.lookupStoreSe
quence(Unknow
n Source)
        at
org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl.lookupStoreSe
quence(Unknow
n Source)
        at
org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl.lookupStoreSe
quence(Unknow
n Source)
        at
org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl.lookupStoreSe
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]



Reply via email to