[ https://issues.apache.org/jira/browse/DERBY-177?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kathey Marsden updated DERBY-177: --------------------------------- Derby Categories: [High Value Fix] > Unnecessary waiting within EmbedDatabaseMetaData.getIndexInfo() > --------------------------------------------------------------- > > Key: DERBY-177 > URL: https://issues.apache.org/jira/browse/DERBY-177 > Project: Derby > Issue Type: Bug > Components: Store > Affects Versions: 10.0.2.2 > Environment: Windows XP, JDK 1.4.2_07, derby embedded server > Reporter: Jörg von Frantzius > Attachments: tablelock.diff, testhang.diff > > > When setting up a new schema (creating tables, constraints and indexes), > using a JDO implementation's autocreate feature (JPOX JDO), the application > hangs for 20 seconds in a call to EmbedDatabaseMetaData.getIndexInfo(). The > stacktrace is: > Thread [main] (Suspended) > Object.wait(long) line: not available [native method] > ActiveLock.waitForGrant(int) line: not available > LockSet.lockObject(Object, Lockable, Object, int, Latch) line: not > available > SinglePool.zeroDurationlockObject(Object, Lockable, Object, int) line: > not available > RowLockingRR(RowLocking3).zeroDurationLockRecordForWrite(Transaction, > RecordHandle, boolean, boolean) line: not available > HeapController.lockRow(RecordHandle, int, boolean, int) line: not > available > HeapController.lockRow(RowLocation, int, boolean, int) line: not > available > B2IRowLocking3.lockRowOnPage(BTree, LeafControlRow, LeafControlRow, > int, boolean, FetchDescriptor, DataValueDescriptor[], RowLocation, int, int) > line: not available > B2IRowLocking3.lockNonScanPreviousRow(BTree, LeafControlRow, int, > FetchDescriptor, DataValueDescriptor[], RowLocation, OpenBTree, int, int) > line: not available > B2IController(BTreeController).doIns(DataValueDescriptor[]) line: not > available > B2IController(BTreeController).insert(DataValueDescriptor[]) line: not > available > B2IController.insert(DataValueDescriptor[]) line: not available > TabInfoImpl.insertRowListImpl(RowList, TransactionController, > RowLocation[], boolean) line: not available > TabInfoImpl.insertRow(ExecRow, TransactionController, boolean) line: > not available > DataDictionaryImpl.addDescriptorNow(TupleDescriptor, TupleDescriptor, > int, boolean, TransactionController, boolean) line: not available > DataDictionaryImpl.addSPSParams(SPSDescriptor, TransactionController, > boolean) line: not available > DataDictionaryImpl.updateSPS(SPSDescriptor, TransactionController, > boolean, boolean, boolean, boolean) line: not available > SPSDescriptor.updateSYSSTATEMENTS(LanguageConnectionContext, int, > TransactionController) line: not available > SPSDescriptor.getPreparedStatement(boolean) line: not available > SPSDescriptor.getPreparedStatement() line: not available > ExecSPSNode.generate(ByteArray) line: not available > GenericStatement.prepMinion(LanguageConnectionContext, boolean, > Object[], SchemaDescriptor, boolean) line: not available > GenericStatement.prepare(LanguageConnectionContext) line: not available > GenericLanguageConnectionContext.prepareInternalStatement(String) line: > not available > > EmbedPreparedStatement30(EmbedPreparedStatement).<init>(EmbedConnection, > String, boolean, int, int, int, int, int[], String[]) line: not available > > EmbedPreparedStatement30(EmbedPreparedStatement20).<init>(EmbedConnection, > String, boolean, int, int, int, int, int[], String[]) line: not available > EmbedPreparedStatement30.<init>(EmbedConnection, String, boolean, int, > int, int, int, int[], String[]) line: not available > Driver30.newEmbedPreparedStatement(EmbedConnection, String, boolean, > int, int, int, int, int[], String[]) line: not available > EmbedConnection30(EmbedConnection).prepareMetaDataStatement(String) > line: not available > EmbedDatabaseMetaData.prepareSPS(String, String) line: not available > EmbedDatabaseMetaData.getPreparedQuery(String) line: not available > EmbedDatabaseMetaData.getIndexInfo(String, String, String, boolean, > boolean) line: not available > [###### entry into Derby code ##########] > CloudscapeAdapter(DatabaseAdapter).getExistingIndexes(Connection, > DatabaseMetaData, String, String, String) line: 1257 > ClassTable(TableImpl).getExistingCandidateKeys(Connection) line: 839 > ClassTable(TableImpl).validateCandidateKeys(Connection, boolean) line: > 463 > ClassTable(TableImpl).validateConstraints(Connection, boolean) line: 293 > RDBMSManager$ClassAdder.addClassTablesAndValidate(String[], > ClassLoaderResolver) line: 2546 > RDBMSManager$ClassAdder.execute(Connection, ClassLoaderResolver) line: > 2108 > > RDBMSManager$ClassAdder(RDBMSManager$MgmtTransaction).execute(ClassLoaderResolver) > line: 1977 > RDBMSManager.addClasses(String[]) line: 469 > RDBMSManager.addClass(String) line: 481 > RDBMSManager(StoreManager).initialiseAutoStart() line: 333 > RDBMSManager.initialiseSchema(String, String, String, Connection) line: > 379 > RDBMSManager.<init>(ClassLoaderResolver, > AbstractPersistenceManagerFactory, String, String) line: 243 > RDBMSManagerFactory.getStoreManager(ClassLoaderResolver, > AbstractPersistenceManagerFactory, String, String) line: 59 > > PersistenceManagerImpl(AbstractPersistenceManager).<init>(AbstractPersistenceManagerFactory, > String, String) line: 179 > PersistenceManagerImpl.<init>(AbstractPersistenceManagerFactory, > String, String) line: 34 > PersistenceManagerFactoryImpl.getPersistenceManager(String, String) > line: 606 > PersistenceManagerFactoryImpl.getPersistenceManager() line: 582 > ManagedObjectManager.getJdoPm() line: 536 > DefaultLeihnehmerTypManager(ManagedObjectManager).queryAll() line: 425 > DefaultLeihnehmerTypManager(ManagedObjectManager).getAll() line: 402 > PictitImporter.importContents(EList) line: 91 > PictitImporter.run(Object) line: 651 > PlatformActivator$1.run(Object) line: 228 > EclipseStarter.run(Object) line: 333 > EclipseStarter.run(String[], Runnable) line: 150 > NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not > available [native method] > NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39 > DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25 > Method.invoke(Object, Object[]) line: 324 > Main.invokeFramework(String[], URL[]) line: 268 > Main.basicRun(String[]) line: 260 > Main.run(String[]) line: 887 > Main.main(String[]) line: 871 -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.