db-derby-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Adam Bovill" <abov...@fnfr.com>
Subject RE: Embedded thread taking 100% cpu
Date Wed, 23 May 2007 16:36:07 GMT
Hello,

 

I am still experiencing these problems.  As an experiment, I removed all
control over the Autocommit, so it is always set to true and there are
not extra calls to commit and/or roll back. This did not stop the derby
thread from taking 100% of the cpu.

 

I have included the derby.log and queries.txt files.  The queries.txt
file is just the log file, with only the query statement lines and some
of the repetitive information removed (and Execute Prepared Statement
changed to EPS).  I have also included the schema that I'm using.

 

Basically, the program runs those commands over and over and over again.
At some point the derby thread starts to spin.

 

Thanks,

Adam

 

 

________________________________

From: Francois Orsini [mailto:francois.orsini@gmail.com] 
Sent: Friday, May 18, 2007 7:49 PM
To: Derby Discussion
Subject: Re: Embedded thread taking 100% cpu

 

 

On 5/18/07, Adam Bovill <abovill@fnfr.com> wrote:

Well, I cannot attest to forever, but they have been running at 100% for
the last 8 hours.  It happens after repeating these steps for 2-4 hours.


Is there a way to trace all of the actual commands that are sent to the 
db?  I can also provide my schema if that helps.  These are two separate
tables, with no foreign keys.


Yes, use can set the derby.language.logStatementText property for that:
http://db.apache.org/derby/docs/dev/tuning/tuning-single.html#rtunproper
43517

	 

	Thanks,
	Adam
	
	-----Original Message-----
	From: Mike Matrigali [mailto:mikem_app@sbcglobal.net]
	Sent: Friday, May 18, 2007 3:29 PM
	To: Derby Discussion
	Subject: Re: Embedded thread taking 100% cpu 
	
	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