Maven Wagon

Wagon HTTP Deadlocks under high load

Details

  • Type: Bug Bug
  • Status: Closed Closed
  • Priority: Major Major
  • Resolution: Fixed
  • Affects Version/s: 1.0-beta-3
  • Fix Version/s: 1.0-beta-6
  • Component/s: wagon-http
  • Labels:
    None
  • Number of attachments :
    4

Description

It seems that the MultiThreadedHttpConnectionManager deadlocks under high load.

See the attached thread dumps from Archiva for more information.

  1. 06130051-maven.txt
    15/Jun/08 7:21 PM
    116 kB
    James William Dumay
  2. maven.atlassian.com-log-20080612.txt
    15/Jun/08 7:21 PM
    1.21 MB
    James William Dumay
  3. maven.atlassian.com-threaddump-20080612_20:17.txt
    15/Jun/08 7:21 PM
    163 kB
    James William Dumay
  4. WAGON-220.patch
    15/Jun/08 8:08 PM
    10 kB
    James William Dumay

Activity

Hide
James William Dumay added a comment -

Initial patch. This releases the connection for the GetMethod back into the pool.

We should have some tests for the connection releasing.

Show
James William Dumay added a comment - Initial patch. This releases the connection for the GetMethod back into the pool. We should have some tests for the connection releasing.
Hide
John Casey added a comment -

Is this still an issue? I've added cleanupGetTransfer to the catch blocks of getInputStream(..) on the StreamWagon, to avoid problems there, but I'm not sure about releasing the connection from the get method just before we actually start reading from the InputStream resulting from that GET...not sure what the implications are for the connection maintenance, etc.

Show
John Casey added a comment - Is this still an issue? I've added cleanupGetTransfer to the catch blocks of getInputStream(..) on the StreamWagon, to avoid problems there, but I'm not sure about releasing the connection from the get method just before we actually start reading from the InputStream resulting from that GET...not sure what the implications are for the connection maintenance, etc.
Hide
John Casey added a comment -

I've added code to ensure the current get method instance releases its connection when an error occurs, but I'm not sure of the wisdom of releasing the connection before reading from the method's response body...I simply don't know the internals of httpclient that well.

I'm closing this based on the code I added...if it's still an issue, reopen it and we should start from a failing test case.

Show
John Casey added a comment - I've added code to ensure the current get method instance releases its connection when an error occurs, but I'm not sure of the wisdom of releasing the connection before reading from the method's response body...I simply don't know the internals of httpclient that well. I'm closing this based on the code I added...if it's still an issue, reopen it and we should start from a failing test case.

People

Vote (0)
Watch (1)

Dates

  • Created:
    Updated:
    Resolved: