Okay, first of all, thanks for the fix Mark. Now that I have it
working, can anyone explain why my performance just dropped about 20%
after turning on batch mode? I reason I wanted a fix is because i was
trying to get some better performance, not worsen then performance!
HELP!!!
On Thu, 2003-10-23 at 03:31, Mark Rowell wrote:
> Hi
>
>
>
> Sorry for the flurry of emails but changing == to .equals in the doExecute
> method of
> PreparedStatementInvocationHandler fixes this problem.
>
> Change line 214 in RC4 from
>
> if ( ((Method)_methods.get(i)) ==
> ADD_BATCH )
> {
> /**
> * we invoke on the platform
> and pass the stmt as an arg.
> */
> ((Method)
> _methods.get(i)).invoke(m_platform, new Object[] {stmt});
> }
> else
> {
> ((Method)
> _methods.get(i)).invoke(stmt, (Object[]) _params.get(i));
> }
>
>
> if ( ADD_BATCH.equals(
> _methods.get(i)) )
> {
> /**
> * we invoke on the platform
> and pass the stmt as an arg.
> */
> ((Method)
> _methods.get(i)).invoke(m_platform, new Object[] {stmt});
> }
> else
> {
> ((Method)
> _methods.get(i)).invoke(stmt, (Object[]) _params.get(i));
> }
>
> BTW the cast in the equality is unecessary.
>
> Regards
>
> Mark Rowell
>
> -----Original Message-----
> From: Mark Rowell [mailto:[EMAIL PROTECTED]
> Sent: 23 October 2003 10:27
> To: 'OJB Users List'
> Subject: RE: problems with batch-mode=true
>
>
> Hi
>
> As a follow on I checked the source for java.lang.reflect.Method and it has
> an implementation Of equals which could possibly indicate tat the equality
> operator (==) does not hold for methods.
>
> Mark
>
> -----Original Message-----
> From: Mark Rowell [mailto:[EMAIL PROTECTED]
> Sent: 23 October 2003 10:23
> To: 'OJB Users List'
> Subject: RE: problems with batch-mode=true
>
>
> Hi
>
> Regarding this issue it looks like (at least as far as RC4 is concerned)
> that in the doExecute method of PreparedStatementInvocationHandler.java the
> following line (223) gets invoked
>
> ((Method) _methods.get(i)).invoke(stmt, (Object[]) _params.get(i));
>
> In my case when using batched mode, and JSQLConnect on MSSqlServer I get a
> similar error to Bonnie (java.lang.IllegalArgumentException: object is not
> an instance of declaring class)
>
> The methods returned by _methods.get(i) is
>
> public void
> org.apache.ojb.broker.platforms.PlatformDefaultImpl.addBatch(java.sql.Prepar
> edStatement)
>
> And we are trying to executed it on the statement rather than passing the
> platform instance. I think the problem Is in the if statement in that it
> does an == rather than a .equals() call to determine whether we want to call
> the addBatch method. Now, I do not know whether within a single JVM that the
> following Returns true
>
> Method method1 = obj.getClass().getMethod("methodName", <args>); Method
> method2 = obj.getClass().getMethod("methodName", <args>); method1 ==
> method2; // is this gurantee dto be true like it is for instances of Class
> e.g.
>
> Obj.getClass() == Obj.getClass() is guranteed to be true?
>
> Regards,
>
> Mark Rowell
>
>
> -----Original Message-----
> From: Bonnie MacKellar [mailto:[EMAIL PROTECTED]
> Sent: 22 October 2003 14:02
> To: OJB Users List
> Subject: RE: problems with batch-mode=true
>
>
> Hi,
> Here is the code that I tested. You can
> see that setBatchMode is called before I start
> the tx.
> try
> {
> broker.serviceConnectionManager().setBatchMode(true);
> broker.beginTransaction();
> for (int i = 0; i < 100; i++)
> {
> CustomerInterface customer = new Customer();
> customer.setCustomerNumber("100" + i);
> customer.setFirstName("Big");
> customer.setLastName("Customer");
> customer.setCustomerName("BadCorporation");
> customer.setDeleteTag(Boolean.FALSE);
> broker.store(customer);
> }
> // conMan.executeBatch();
> broker.commitTransaction();
> }
> catch(Exception e)
> {
> e.printStackTrace();
> logger.error(e.getMessage());
> broker.abortTransaction();
> }
> finally
> {
> broker.close();
> }
>
> This chunk of code, exectued with batch-mode="true"
> in repository_database.xml, results in the following
> two exceptions :
> java.lang.IllegalArgumentException: object is not an instance of declaring
> class
> at java.lang.reflect.Method.invoke(Native Method)
> at
> org.apache.ojb.broker.util.batch.PreparedStatementInvocationHandler.doExecut
> e(Unknown Source)
> at
> org.apache.ojb.broker.util.batch.PreparedStatementInvocationHandler.invoke(U
> nknown Source)
> at $Proxy0.doExecute(Unknown Source)
> at
> org.apache.ojb.broker.util.batch.BatchConnection.executeBatch(Unknown
> Source)
> at org.apache.ojb.broker.util.batch.BatchConnection.commit(Unknown
> Source)
> at
> org.apache.ojb.broker.accesslayer.ConnectionManagerImpl.localCommit(Unknown
> Source)
> at
> org.apache.ojb.broker.core.PersistenceBrokerImpl.commitTransaction(Unknown
> Source)
> at
> org.apache.ojb.broker.core.DelegatingPersistenceBroker.commitTransaction(Unk
> nown Source)
> at
> org.apache.ojb.broker.core.DelegatingPersistenceBroker.commitTransaction(Unk
> nown Source)
> at
> com.mobius.activebill.dbmigrationutils.CustomerMigration.main(CustomerMigrat
> ion.java:69)
> 3425 ERROR [main] dbmigrationutils.CustomerMigration - object is not an
> instance of declaring class
> 3435 DEBUG [main] core.PersistenceBrokerImpl - PB.close was called:
> [EMAIL PROTECTED]
> org.apache.ojb.broker.TransactionNotInProgressException: ConnectionManager
> is NOT in transaction
> at
> org.apache.ojb.broker.core.PersistenceBrokerImpl.abortTransaction(Unknown
> Source)
> at
> org.apache.ojb.broker.core.DelegatingPersistenceBroker.abortTransaction(Unkn
> own Source)
> at
> org.apache.ojb.broker.core.DelegatingPersistenceBroker.abortTransaction(Unkn
> own Source)
> at
> com.mobius.activebill.dbmigrationutils.CustomerMigration.main(CustomerMigrat
> ion.java:75)
> Exception in thread "main"
>
>
> It looks like the persistence broker is being closed down before the call to
> abortTransaction
> is made. But that does not explain the first exception. This code works
> perfectly with
> batch-mode="false".
> And, if I call executeBatch, I don't get the second exception (the one about
> not being in
> a transaction), although I still get the first transaction.
> I am including my repository_database.xml as an attachment. It is always
> possible that
> I am doing something terribly wrong there. The relevant jcd-alias is
> "ActiveBillStandalone"
> thanks,
> Bonnie MacKellar
> software engineer
> Mobius Management Systems, Inc.
> [EMAIL PROTECTED]
>
>
>
> > -----Original Message-----
> > From: Armin Waibel [mailto:[EMAIL PROTECTED]
> > Sent: Tuesday, October 21, 2003 5:37 PM
> > To: OJB Users List
> > Subject: Re: problems with batch-mode=true
> >
> >
> > Hi,
> >
> > hmm, this should not happen.
> >
> > Please try to set broker.serviceConnectionManager.setBachMode(true);
> > before start the tx. Because the connection was
> > associated with PB instance on PB.beginTx, so setting
> > batch-mode after this may cause problems.
> >
> > I currently made some tests against sapDB
> > without any problems (using CVS head)
> >
> > regards,
> > Armin
> >
> >
>
>
> CreditTrade Limited is regulated by the FSA. (c) CreditTrade 2002. All
> rights reserved. The information and data contained in this email is
> provided for the information purposes of the addressee only and should not
> be reproduced and/or distributed to any other person. It is provided without
> any warranty whatsoever and unless stated otherwise consists purely of
> indicative market prices and other information.
>
> Any opinion or comments expressed or assumption made in association with the
> data or information provided in this email is a reflection of CreditTrades
> judgement at the time of compiling the data and is subject to change.
> CreditTrade hereby makes no representation and accepts no responsibility or
> liability as to the completeness or accuracy of this email.
>
> The content of this email is not intended as an offer or solicitation for,
> or recommendation of, the purchase or sale of any financial instrument, or
> as an official confirmation of any transaction, and should not be construed
> as investment advice.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
> CreditTrade Limited is regulated by the FSA. (c) CreditTrade 2002. All
> rights reserved. The information and data contained in this email is
> provided for the information purposes of the addressee only and should not
> be reproduced and/or distributed to any other person. It is provided without
> any warranty whatsoever and unless stated otherwise consists purely of
> indicative market prices and other information.
>
> Any opinion or comments expressed or assumption made in association with the
> data or information provided in this email is a reflection of CreditTrades
> judgement at the time of compiling the data and is subject to change.
> CreditTrade hereby makes no representation and accepts no responsibility or
> liability as to the completeness or accuracy of this email.
>
> The content of this email is not intended as an offer or solicitation for,
> or recommendation of, the purchase or sale of any financial instrument, or
> as an official confirmation of any transaction, and should not be construed
> as investment advice.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
> CreditTrade Limited is regulated by the FSA. (c) CreditTrade 2002. All rights
> reserved. The information and data contained in this email is provided for the
> information purposes of the addressee only and should not be reproduced and/or
> distributed to any other person. It is provided without any warranty whatsoever and
> unless stated otherwise consists purely of indicative market prices and other
> information.
>
> Any opinion or comments expressed or assumption made in association with the data or
> information provided in this email is a reflection of CreditTrades judgement at the
> time of compiling the data and is subject to change. CreditTrade hereby makes no
> representation and accepts no responsibility or liability as to the completeness or
> accuracy of this email.
>
> The content of this email is not intended as an offer or solicitation for, or
> recommendation of, the purchase or sale of any financial instrument, or as an
> official confirmation of any transaction, and should not be construed as investment
> advice.
>
> ---------------------------------------------------------------------
> 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]