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

        

Reply via email to