Sergey Zhemzhitsky created CXF-4342:
---------------------------------------

             Summary: NullPointerException in CachedOutputStream
                 Key: CXF-4342
                 URL: https://issues.apache.org/jira/browse/CXF-4342
             Project: CXF
          Issue Type: Bug
    Affects Versions: 2.4.2
            Reporter: Sergey Zhemzhitsky


The following error occurs from time to time in the CachedOutputStream

{code}
java.lang.NullPointerException
        at 
org.apache.cxf.io.CachedOutputStream.maybeDeleteTempFile(CachedOutputStream.java:487)[85:org.apache.cxf.bundle:2.4.2]
        at 
org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:187)[85:org.apache.cxf.bundle:2.4.2]
        at 
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1561)[85:org.apache.cxf.bundle:2.4.2]
        at 
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream$1.run(HTTPConduit.java:1494)[85:org.apache.cxf.bundle:2.4.2]
        at 
org.apache.cxf.workqueue.AutomaticWorkQueueImpl$2.run(AutomaticWorkQueueImpl.java:353)[85:org.apache.cxf.bundle:2.4.2]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)[:1.6.0_29]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)[:1.6.0_29]
        at java.lang.Thread.run(Thread.java:662)[:1.6.0_29]
{code}

The problem is in the following method
{code}
private void maybeDeleteTempFile(Object stream) {
    streamList.remove(stream);
    if (!inmem && tempFile != null && streamList.isEmpty() && 
allowDeleteOfFile) {
        if (currentStream != null) {
            try {
                currentStream.close();
                postClose();
            } catch (Exception e) {
                //ignore
            }
        }
        tempFile.delete();
        tempFile = null;
        currentStream = new LoadingByteArrayOutputStream(1024);
        inmem = true;
    }
}
{code}

NPE occurs executing the following code *tempFile.delete();*, so we can 
conclude that exception is connected with multithreading because before 
deleting the file there is a check *tempFile != null*



--
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