Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[platform-webdav-dev] Q about thread safety of Eclipse WebDAV




Is org.eclipse.webdav.client.RemoteDAVClient supposed to be thread-safe?

When I call methods on the same instance of RemoteDAVClient from different
threads, I've been getting java.io.IOException: Malformed status line.:

   java.io.IOException: Malformed status line.
      at
   org.eclipse.webdav.http.client.HttpConnection.readServerResponse(HttpConnection.java:1139)
      at
   org.eclipse.webdav.http.client.HttpConnection.access$4(HttpConnection.java:1133)
      at
   org.eclipse.webdav.http.client.HttpConnection$CachedOutputStream.close(HttpConnection.java:594)
      at
   org.eclipse.webdav.http.client.HttpClient.invoke2(HttpClient.java:912)
      at
   org.eclipse.webdav.http.client.HttpClient.invoke1(HttpClient.java:769)
      at
   org.eclipse.webdav.http.client.HttpClient.invoke1(HttpClient.java:826)
      at
   org.eclipse.webdav.http.client.HttpClient.invoke(HttpClient.java:752)
      at
   org.eclipse.webdav.client.RemoteDAVClient.proppatch(RemoteDAVClient.java:465)
      at
   MalformedStatusLineBug.createContact(MalformedStatusLineBug.java:138)
      at MalformedStatusLineBug.run(MalformedStatusLineBug.java:46)

Also, many assertions fail.  I'm attaching the entire output of a sample
run:

      (See attached file: MalformedStatusLineOutput.txt)

Attached is a simple program that reproduces the exception:

      (See attached file: MalformedStatusLineException.java)

The program takes a single command-line argument specifying the number of
threads to be created.  If only 1 thread is created, everything works fine.
However, if more than 1 thread is created, the exception usually occurs.

I've also seen the exception occur with a (slightly) different call stack,
but I don't have a simple standalone test case that replicates that exact
version of the problem.  In this case, the exception also occurs in the
readServerResponse() method of the
org.eclipse.webdav.http.client.HttpConnection class.  Here is the entire
call stack of that thread:

   Thread [Connections Recycler] (Suspended (exception IOException))
      HttpConnection.readServerResponse() line: 1139
      HttpConnection.access$4(HttpConnection) line: 1133
      HttpConnection$CachedOutputStream.close() line: 594
      HttpConnection.endRequest() line: 730
      HttpConnection.close() line: 674
      HttpClient$ConnectionsRecycler.recycle() line: 334
      HttpClient$ConnectionsRecycler.run() line: 350

Attachment: MalformedStatusLineOutput.txt
Description: Binary data

Attachment: MalformedStatusLineException.java
Description: Binary data


Back to the top