[ 
https://issues.apache.org/jira/browse/VFS-849?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gary D. Gregory resolved VFS-849.
---------------------------------
    Fix Version/s: 2.10.0
       Resolution: Fixed

> HttpConnection resources not properly cleaned up in webdav request
> ------------------------------------------------------------------
>
>                 Key: VFS-849
>                 URL: https://issues.apache.org/jira/browse/VFS-849
>             Project: Commons VFS
>          Issue Type: Bug
>    Affects Versions: 2.10.0
>            Reporter: Thorsten Beise
>            Priority: Blocker
>             Fix For: 2.10.0
>
>
> In the 2 cases where we decide to throw an exception from 
> {code:java}
> Webdav4FileObject.executeRequest(final HttpUriRequest request){code}
> the outer try-with-resource statements cannot cleanup the connection resource 
> properly, because no request is returned and instead an exception is thrown.
> After some webdav operations the connections are not returned to the 
> underlying connection pool which results in a deadlock situation.
> The following exception is forced via Thread.interrupt(...) from another 
> monitoring thread.
> {code:java}
> org.apache.commons.vfs2.FileSystemException: Could not create file 
> "webdav4s://localhost/webdav/myFile8".
>     at 
> org.apache.commons.vfs2.provider.AbstractFileObject.createFile(AbstractFileObject.java:335)
>     at org.apache.commons.vfs2.FileObject$createFile.call(Unknown Source)
>     at 
> de.bwinvest.esb.jbi.bc.file.test.Webdav4sConnectionTest$_testWebdav4sConnection_closure1.doCall(Webdav4sConnectionTest.groovy:94)
>     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native 
> Method)
>     at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     at java.base/java.lang.reflect.Method.invoke(Method.java:566)
>     at 
> org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:101)
>     at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
>     at 
> org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:263)
>     at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1041)
>     at 
> org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:37)
>     at 
> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
>     at 
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
>     at 
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:127)
>     at 
> de.bwinvest.esb.jbi.bc.file.component.util.VFSFileSystemManagerFactory.process(VFSFileSystemManagerFactory.groovy:48)
>     at 
> de.bwinvest.esb.jbi.bc.file.component.util.VFSFileSystemManagerFactory$process.call(Unknown
>  Source)
>     at 
> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
>     at 
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
>     at 
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:135)
>     at 
> de.bwinvest.esb.jbi.bc.file.test.Webdav4sConnectionTest.testWebdav4sConnection(Webdav4sConnectionTest.groovy:77)
>     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native 
> Method)
>     at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     at java.base/java.lang.reflect.Method.invoke(Method.java:566)
>     at 
> org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
>     at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
>     at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
>     at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
>     at 
> org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
>     at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
>     at org.testng.TestRunner.privateRun(TestRunner.java:767)
>     at org.testng.TestRunner.run(TestRunner.java:617)
>     at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
>     at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
>     at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
>     at org.testng.SuiteRunner.run(SuiteRunner.java:240)
>     at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
>     at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
>     at org.testng.TestNG.runSuitesSequentially(TestNG.java:1198)
>     at org.testng.TestNG.runSuitesLocally(TestNG.java:1123)
>     at org.testng.TestNG.run(TestNG.java:1031)
>     at 
> org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:155)
>     at 
> org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeSingleClass(TestNGDirectoryTestSuite.java:102)
>     at 
> org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:91)
>     at 
> org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:137)
>     at 
> org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
>     at 
> org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
>     at 
> org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
>     at 
> org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
> Caused by: org.apache.commons.vfs2.FileSystemException: Could not determine 
> the type of file "webdav4s://localhost/webdav".
>     at 
> org.apache.commons.vfs2.provider.AbstractFileObject.getType(AbstractFileObject.java:1390)
>     at 
> org.apache.commons.vfs2.provider.AbstractFileObject.createFolder(AbstractFileObject.java:349)
>     at 
> org.apache.commons.vfs2.provider.AbstractFileObject.getOutputStream(AbstractFileObject.java:1277)
>     at 
> org.apache.commons.vfs2.provider.DefaultFileContent.buildOutputStream(DefaultFileContent.java:293)
>     at 
> org.apache.commons.vfs2.provider.DefaultFileContent.getOutputStream(DefaultFileContent.java:583)
>     at 
> org.apache.commons.vfs2.provider.DefaultFileContent.getOutputStream(DefaultFileContent.java:571)
>     at 
> org.apache.commons.vfs2.provider.AbstractFileObject.createFile(AbstractFileObject.java:326)
>     ... 49 more
> Caused by: org.apache.commons.vfs2.FileSystemException: Unknown message with 
> code "Request aborted".
>     at 
> org.apache.commons.vfs2.provider.webdav4.Webdav4FileObject.executeRequest(Webdav4FileObject.java:501)
>     at 
> org.apache.commons.vfs2.provider.webdav4.Webdav4FileObject.getProperties(Webdav4FileObject.java:526)
>     at 
> org.apache.commons.vfs2.provider.webdav4.Webdav4FileObject.getProperties(Webdav4FileObject.java:518)
>     at 
> org.apache.commons.vfs2.provider.webdav4.Webdav4FileObject.getProperty(Webdav4FileObject.java:552)
>     at 
> org.apache.commons.vfs2.provider.webdav4.Webdav4FileObject.getProperty(Webdav4FileObject.java:557)
>     at 
> org.apache.commons.vfs2.provider.webdav4.Webdav4FileObject.isDirectory(Webdav4FileObject.java:590)
>     at 
> org.apache.commons.vfs2.provider.webdav4.Webdav4FileObject.doGetType(Webdav4FileObject.java:364)
>     at 
> org.apache.commons.vfs2.provider.AbstractFileObject.getType(AbstractFileObject.java:1384)
>     ... 55 more
> Caused by: org.apache.http.impl.execchain.RequestAbortedException: Request 
> aborted
>     at 
> org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:193)
>     at 
> org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
>     at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
>     at 
> org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
>     at 
> org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
>     at 
> org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
>     at 
> org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)
>     at 
> org.apache.commons.vfs2.provider.http4.Http4FileObject.executeHttpUriRequest(Http4FileObject.java:191)
>     at 
> org.apache.commons.vfs2.provider.webdav4.Webdav4FileObject.executeRequest(Webdav4FileObject.java:487)
>     ... 62 more
> Caused by: java.lang.InterruptedException
>     at 
> java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2076)
>     at 
> org.apache.http.pool.AbstractConnPool.getPoolEntryBlocking(AbstractConnPool.java:391)
>     at 
> org.apache.http.pool.AbstractConnPool.access$300(AbstractConnPool.java:70)
>     at org.apache.http.pool.AbstractConnPool$2.get(AbstractConnPool.java:253)
>     at org.apache.http.pool.AbstractConnPool$2.get(AbstractConnPool.java:198)
>     at 
> org.apache.http.impl.conn.PoolingHttpClientConnectionManager.leaseConnection(PoolingHttpClientConnectionManager.java:306)
>     at 
> org.apache.http.impl.conn.PoolingHttpClientConnectionManager$1.get(PoolingHttpClientConnectionManager.java:282)
>     at 
> org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:190)
>     ... 70 more{code}
> I can not reproduce this behaviour with the webdav server which is part of 
> the testcases.
> Fix is underway.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to