db-derby-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mike Matrigali <mikem_...@sbcglobal.net>
Subject Re: Embedded thread taking 100% cpu
Date Fri, 18 May 2007 22:29:12 GMT
are you saying that if you stop your loop and do nothing then you
see the cpu spinning at 100% "forever".

The stack traces are what I would expect, and they may spin for
100% cpu for a short time depending on size of table and cache size
as they may require no I/O.  Anytime you delete all rows from a page
as it seems your step 4 does, then work is queued to be activated when
that transaction commits.  At step 5 the work is processed, it basically
reclaims the space freed by the committed deletes and makes it available
for future inserts into the table.

Adam Bovill wrote:
> Hello,
> 
> I seem to be having a problem with my embedded derby 
> "derby.rawStoreDeamon" thread where it takes up 100% of my CPU.  
> Everything else is still responsive, but this thread seems to be looping 
> through the following stack traces.  Also, as soon as I make any 
> additional action on the Database, it returns to normal, so it seems 
> that I have done something to get it into a strange state.
> 
> The following stack traces were taken by halting that thread multiple 
> times, they are not in any order.
> 
> So this happens after repeating the following multiple times:
> 
>  
> 
> 1. Add items to two tables. (3 items into one, 15 into the other)
> 
> 2. Set autocommit = false
> 
> 3. force commit
> 
> 4. attempt to delete all the items (and they are successfully deleted)
> 
> 5. force commit
> 
> 6. set autocommit = true
> 
>  
> 
> I set the autocommit to false so that I can roll back the changes if the 
> delete fails.
> 
>  
> 
> It seems to just sit there and spin doing nothing.  Have I done 
> something wrong with my commit logic?
> 
>  
> 
> Thanks,
> 
> Adam
> 
>  
> 
>  
> 
> Thread [derby.rawStoreDaemon] (Suspended)     
> 
>             LockControl.addLock(LockSet, Object, Object) line: not 
> available  
> 
>             LockSet.lockObject(Object, Lockable, Object, int, Latch) 
> line: not available           
> 
>             SinglePool.lockAnObject(Object, Object, Lockable, Object, 
> int, Latch) line: not available    
> 
>             SinglePool.lockObject(Object, Object, Lockable, Object, int) 
> line: not available      
> 
>             ContainerLocking3.lockContainer(Transaction, 
> ContainerHandle, boolean, boolean) line: not available           
> 
>             BaseContainerHandle.useContainer(boolean, boolean) line: not 
> available    
> 
>             BaseDataFileFactory.openContainer(RawTransaction, 
> ContainerKey, LockingPolicy, int, boolean) line: not available  
> 
>             BaseDataFileFactory.openContainer(RawTransaction, 
> ContainerKey, LockingPolicy, int) line: not available   
> 
>             InternalXact(Xact).openContainer(ContainerKey, 
> LockingPolicy, int) line: not available         
> 
>             OpenHeap(OpenConglomerate).init(ContainerHandle, 
> Conglomerate, int[], TransactionManager, Transaction, boolean, int, int, 
> LockingPolicy, DynamicCompiledOpenConglomInfo) line: not available 
> 
>             Heap.open(TransactionManager, Transaction, boolean, int, 
> int, LockingPolicy, StaticCompiledOpenConglomInfo, 
> DynamicCompiledOpenConglomInfo) line: not available     
> 
>             RAMTransaction.openConglomerate(Conglomerate, boolean, int, 
> int, int, StaticCompiledOpenConglomInfo, DynamicCompiledOpenConglomInfo) 
> line: not available     
> 
>             RAMTransaction.openConglomerate(long, boolean, int, int, 
> int) line: not available    
> 
>             B2I.lockTable(TransactionManager, int, int, int) line: not 
> available  
> 
>             BTreePostCommit.performWork(ContextManager) line: not 
> available          
> 
>             BasicDaemon.serviceClient(ServiceRecord) line: not 
> available       
> 
>             BasicDaemon.work(boolean) line: not available    
> 
>             BasicDaemon.run() line: not available      
> 
>             Thread.run() line: not available    
> 
>  
> 
>  
> 
>  
> 
>  
> 
> Thread [derby.rawStoreDaemon] (Suspended)     
> 
>             OpenHeap(OpenConglomerate).init(ContainerHandle, 
> Conglomerate, int[], TransactionManager, Transaction, boolean, int, int, 
> LockingPolicy, DynamicCompiledOpenConglomInfo) line: not available 
> 
>             Heap.open(TransactionManager, Transaction, boolean, int, 
> int, LockingPolicy, StaticCompiledOpenConglomInfo, 
> DynamicCompiledOpenConglomInfo) line: not available     
> 
>             RAMTransaction.openConglomerate(Conglomerate, boolean, int, 
> int, int, StaticCompiledOpenConglomInfo, DynamicCompiledOpenConglomInfo) 
> line: not available     
> 
>             RAMTransaction.openConglomerate(long, boolean, int, int, 
> int) line: not available    
> 
>             B2I.lockTable(TransactionManager, int, int, int) line: not 
> available  
> 
>             BTreePostCommit.performWork(ContextManager) line: not 
> available          
> 
>             BasicDaemon.serviceClient(ServiceRecord) line: not 
> available       
> 
>             BasicDaemon.work(boolean) line: not available    
> 
>             BasicDaemon.run() line: not available      
> 
>             Thread.run() line: not available    
> 
>  
> 
>  
> 
>  
> 
>  
> 
> Thread [derby.rawStoreDaemon] (Suspended)     
> 
>             BaseContainerHandle.useContainer(boolean, boolean) line: not 
> available    
> 
>             BaseDataFileFactory.openContainer(RawTransaction, 
> ContainerKey, LockingPolicy, int, boolean) line: not available  
> 
>             BaseDataFileFactory.openContainer(RawTransaction, 
> ContainerKey, LockingPolicy, int) line: not available   
> 
>             InternalXact(Xact).openContainer(ContainerKey, 
> LockingPolicy, int) line: not available         
> 
>             OpenHeap(OpenConglomerate).init(ContainerHandle, 
> Conglomerate, int[], TransactionManager, Transaction, boolean, int, int, 
> LockingPolicy, DynamicCompiledOpenConglomInfo) line: not available 
> 
>             Heap.open(TransactionManager, Transaction, boolean, int, 
> int, LockingPolicy, StaticCompiledOpenConglomInfo, 
> DynamicCompiledOpenConglomInfo) line: not available     
> 
>             RAMTransaction.openConglomerate(Conglomerate, boolean, int, 
> int, int, StaticCompiledOpenConglomInfo, DynamicCompiledOpenConglomInfo) 
> line: not available     
> 
>             RAMTransaction.openConglomerate(long, boolean, int, int, 
> int) line: not available    
> 
>             B2I.lockTable(TransactionManager, int, int, int) line: not 
> available  
> 
>             BTreePostCommit.performWork(ContextManager) line: not 
> available          
> 
>             BasicDaemon.serviceClient(ServiceRecord) line: not 
> available       
> 
>             BasicDaemon.work(boolean) line: not available    
> 
>             BasicDaemon.run() line: not available      
> 
>             Thread.run() line: not available    
> 
>  
> 
>  
> 
>  
> 
>  
> 
> Thread [derby.rawStoreDaemon] (Suspended)     
> 
>             LinkedList<E>.addBefore(E, Entry<E>) line: not available 
> 
>             LinkedList<E>.add(E) line: not available  
> 
>             LockControl.addWaiter(List, Lock, LockSet) line: not 
> available      
> 
>             LockControl.addLock(LockSet, Object, Object) line: not 
> available  
> 
>             LockSet.lockObject(Object, Lockable, Object, int, Latch) 
> line: not available           
> 
>             SinglePool.lockAnObject(Object, Object, Lockable, Object, 
> int, Latch) line: not available    
> 
>             SinglePool.lockObject(Object, Object, Lockable, Object, int) 
> line: not available      
> 
>             ContainerLocking3.lockContainer(Transaction, 
> ContainerHandle, boolean, boolean) line: not available           
> 
>             BaseContainerHandle.useContainer(boolean, boolean) line: not 
> available    
> 
>             BaseDataFileFactory.openContainer(RawTransaction, 
> ContainerKey, LockingPolicy, int, boolean) line: not available  
> 
>             BaseDataFileFactory.openContainer(RawTransaction, 
> ContainerKey, LockingPolicy, int) line: not available   
> 
>             InternalXact(Xact).openContainer(ContainerKey, 
> LockingPolicy, int) line: not available         
> 
>             OpenHeap(OpenConglomerate).init(ContainerHandle, 
> Conglomerate, int[], TransactionManager, Transaction, boolean, int, int, 
> LockingPolicy, DynamicCompiledOpenConglomInfo) line: not available 
> 
>             Heap.open(TransactionManager, Transaction, boolean, int, 
> int, LockingPolicy, StaticCompiledOpenConglomInfo, 
> DynamicCompiledOpenConglomInfo) line: not available     
> 
>             RAMTransaction.openConglomerate(Conglomerate, boolean, int, 
> int, int, StaticCompiledOpenConglomInfo, DynamicCompiledOpenConglomInfo) 
> line: not available     
> 
>             RAMTransaction.openConglomerate(long, boolean, int, int, 
> int) line: not available    
> 
>             B2I.lockTable(TransactionManager, int, int, int) line: not 
> available  
> 
>             BTreePostCommit.performWork(ContextManager) line: not 
> available          
> 
>             BasicDaemon.serviceClient(ServiceRecord) line: not 
> available       
> 
>             BasicDaemon.work(boolean) line: not available    
> 
>             BasicDaemon.run() line: not available      
> 
>             Thread.run() line: not available    
> 
>  
> 
>  
> 
>  
> 
>  
> 
> Thread [derby.rawStoreDaemon] (Suspended)     
> 
>             Thread.setPriority0(int) line: not available [native method]  
> 
>             Thread.setPriority(int) line: not available  
> 
>             FileMonitor(BaseMonitor).setThreadPriority(int) line: not 
> available  
> 
>             FileMonitor.run() line: not available          
> 
>             AccessController.doPrivileged(PrivilegedExceptionAction<T>) 
> line: not available [native method]      
> 
>             FileMonitor.setThreadPriority(int) line: not 
> available          
> 
>             BasicDaemon.yield() line: not available   
> 
>             BasicDaemon.work(boolean) line: not available    
> 
>             BasicDaemon.run() line: not available      
> 
>             Thread.run() line: not available    
> 
>  
> 
>  
> 
>  
> 
>  
> 
> Thread [derby.rawStoreDaemon] (Suspended)     
> 
>             TransactionTable.add(Xact, boolean) line: not available     
> 
>             XactFactory.add(Xact, boolean) line: not available
> 
>             XactFactory.pushTransactionContext(ContextManager, String, 
> Xact, boolean, RawStoreFactory, boolean) line: not available           
> 
>             XactFactory.startInternalTransaction(RawStoreFactory, 
> ContextManager) line: not available 
> 
>             RawStore.startInternalTransaction(ContextManager) line: not 
> available       
> 
>             RAMTransaction.getInternalTransaction() line: not 
> available           
> 
>             BTreePostCommit.performWork(ContextManager) line: not 
> available          
> 
>             BasicDaemon.serviceClient(ServiceRecord) line: not 
> available       
> 
>             BasicDaemon.work(boolean) line: not available    
> 
>             BasicDaemon.run() line: not available      
> 
>             Thread.run() line: not available    
> 
>  
> 
>  
> 
> Thread [derby.rawStoreDaemon] (Suspended)     
> 
>             BaseContainerHandle.useContainer(boolean, boolean) line: not 
> available    
> 
>             BaseDataFileFactory.openContainer(RawTransaction, 
> ContainerKey, LockingPolicy, int, boolean) line: not available  
> 
>             BaseDataFileFactory.openContainer(RawTransaction, 
> ContainerKey, LockingPolicy, int) line: not available   
> 
>             InternalXact(Xact).openContainer(ContainerKey, 
> LockingPolicy, int) line: not available         
> 
>             OpenHeap(OpenConglomerate).init(ContainerHandle, 
> Conglomerate, int[], TransactionManager, Transaction, boolean, int, int, 
> LockingPolicy, DynamicCompiledOpenConglomInfo) line: not available 
> 
>             Heap.open(TransactionManager, Transaction, boolean, int, 
> int, LockingPolicy, StaticCompiledOpenConglomInfo, 
> DynamicCompiledOpenConglomInfo) line: not available     
> 
>             RAMTransaction.openConglomerate(Conglomerate, boolean, int, 
> int, int, StaticCompiledOpenConglomInfo, DynamicCompiledOpenConglomInfo) 
> line: not available     
> 
>             RAMTransaction.openConglomerate(long, boolean, int, int, 
> int) line: not available    
> 
>             B2I.lockTable(TransactionManager, int, int, int) line: not 
> available  
> 
>             BTreePostCommit.performWork(ContextManager) line: not 
> available          
> 
>             BasicDaemon.serviceClient(ServiceRecord) line: not 
> available       
> 
>             BasicDaemon.work(boolean) line: not available    
> 
>             BasicDaemon.run() line: not available      
> 
>             Thread.run() line: not available    
> 
>  
> 
>  
> 
>  
> 
>  
> 
> Thread [derby.rawStoreDaemon] (Suspended)     
> 
>             LinkedList<E>.remove(Entry<E>) line: not available         
> 
>             LinkedList<E>.remove(Object) line: not available  
> 
>             LockControl.removeWaiter(List, Object, LockSet) line: not 
> available           
> 
>             LockControl.giveUpWait(Object, LockSet) line: not 
> available         
> 
>             LockSet.lockObject(Object, Lockable, Object, int, Latch) 
> line: not available           
> 
>             SinglePool.lockAnObject(Object, Object, Lockable, Object, 
> int, Latch) line: not available    
> 
>             SinglePool.lockObject(Object, Object, Lockable, Object, int) 
> line: not available      
> 
>             ContainerLocking3.lockContainer(Transaction, 
> ContainerHandle, boolean, boolean) line: not available           
> 
>             BaseContainerHandle.useContainer(boolean, boolean) line: not 
> available    
> 
>             BaseDataFileFactory.openContainer(RawTransaction, 
> ContainerKey, LockingPolicy, int, boolean) line: not available  
> 
>             BaseDataFileFactory.openContainer(RawTransaction, 
> ContainerKey, LockingPolicy, int) line: not available   
> 
>             InternalXact(Xact).openContainer(ContainerKey, 
> LockingPolicy, int) line: not available         
> 
>             OpenHeap(OpenConglomerate).init(ContainerHandle, 
> Conglomerate, int[], TransactionManager, Transaction, boolean, int, int, 
> LockingPolicy, DynamicCompiledOpenConglomInfo) line: not available 
> 
>             Heap.open(TransactionManager, Transaction, boolean, int, 
> int, LockingPolicy, StaticCompiledOpenConglomInfo, 
> DynamicCompiledOpenConglomInfo) line: not available     
> 
>             RAMTransaction.openConglomerate(Conglomerate, boolean, int, 
> int, int, StaticCompiledOpenConglomInfo, DynamicCompiledOpenConglomInfo) 
> line: not available     
> 
>             RAMTransaction.openConglomerate(long, boolean, int, int, 
> int) line: not available    
> 
>             B2I.lockTable(TransactionManager, int, int, int) line: not 
> available  
> 
>             BTreePostCommit.performWork(ContextManager) line: not 
> available          
> 
>             BasicDaemon.serviceClient(ServiceRecord) line: not 
> available       
> 
>             BasicDaemon.work(boolean) line: not available    
> 
>             BasicDaemon.run() line: not available      
> 
>             Thread.run() line: not available    
> 


Mime
View raw message