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.
Thanks,
Adam
-----Original Message-----
From: Mike Matrigali [mailto:[EMAIL PROTECTED]
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