System can run out of stack space while processing DropOnCommit requests.
-------------------------------------------------------------------------
Key: DERBY-5624
URL: https://issues.apache.org/jira/browse/DERBY-5624
Project: Derby
Issue Type: Bug
Components: Store
Affects Versions: 10.8.2.2
Reporter: Mike Matrigali
Assignee: Mike Matrigali
The system currently recursively calls xact.notifyObservers() from
DropOnCommit.update(). It does this because in some cases
new observers can be added while processing the list of notifyObservers and
those were being missed before the change, causing
Assertions in the tests and possibly files not properly dropped on commit.
Multiple users on the Derby user list have had failures running
SYSCS_UTIL.SYSCS_COMPRESS_TABLE(), running out of stack track
with a heavily recursive stack trace of the form (see more detail from these
reports in subsequent comments):
Caused by: java.lang.StackOverflowError
at java.lang.ThreadLocal.get(ThreadLocal.java:125)
at java.lang.StringCoding.deref(StringCoding.java:46)
at java.lang.StringCoding.encode(StringCoding.java:258)
at java.lang.String.getBytes(String.java:946)
at java.io.UnixFileSystem.getBooleanAttributes0(Native Method)
at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:228)
at java.io.File.exists(File.java:733)
at org.apache.derby.impl.store.raw.data.StreamFileContainer.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.derby.impl.store.raw.data.StreamFileContainer.privExists(Unknown
Source)
at org.apache.derby.impl.store.raw.data.StreamFileContainer.open(Unknown Source)
at
org.apache.derby.impl.store.raw.data.BaseDataFileFactory.openStreamContainer(Unknown
Source)
at org.apache.derby.impl.store.raw.xact.Xact.openStreamContainer(Unknown Source)
at
org.apache.derby.impl.store.raw.data.BaseDataFileFactory.dropStreamContainer(Unknown
Source)
at org.apache.derby.impl.store.raw.xact.Xact.dropStreamContainer(Unknown Source)
at org.apache.derby.impl.store.raw.data.DropOnCommit.update(Unknown Source)
at java.util.Observable.notifyObservers(Observable.java:142)
at org.apache.derby.iapi.store.raw.xact.RawTransaction.notifyObservers(Unknown
Source)
at org.apache.derby.impl.store.raw.data.DropOnCommit.update(Unknown Source)
at java.util.Observable.notifyObservers(Observable.java:142)
at org.apache.derby.iapi.store.raw.xact.RawTransaction.notifyObservers(Unknown
Source)
at org.apache.derby.impl.store.raw.data.DropOnCommit.update(Unknown Source)
at java.util.Observable.notifyObservers(Observable.java:142)
at org.apache.derby.iapi.store.raw.xact.RawTransaction.notifyObservers(Unknown
Source)
at org.apache.derby.impl.store.raw.data.DropOnCommit.update(Unknown Source)
at java.util.Observable.notifyObservers(Observable.java:142)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira