Avoid overwrite of the abort cause.
This commit is contained in:
parent
dcbc0d9a21
commit
c705bb9480
|
@ -36,6 +36,7 @@ import java.util.concurrent.ExecutionException;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.TimeoutException;
|
import java.util.concurrent.TimeoutException;
|
||||||
import java.util.concurrent.atomic.AtomicLong;
|
import java.util.concurrent.atomic.AtomicLong;
|
||||||
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
|
||||||
import org.eclipse.jetty.client.api.ContentProvider;
|
import org.eclipse.jetty.client.api.ContentProvider;
|
||||||
import org.eclipse.jetty.client.api.ContentResponse;
|
import org.eclipse.jetty.client.api.ContentResponse;
|
||||||
|
@ -59,6 +60,7 @@ public class HttpRequest implements Request
|
||||||
private final Map<String, Object> attributes = new HashMap<>();
|
private final Map<String, Object> attributes = new HashMap<>();
|
||||||
private final List<RequestListener> requestListeners = new ArrayList<>();
|
private final List<RequestListener> requestListeners = new ArrayList<>();
|
||||||
private final List<Response.ResponseListener> responseListeners = new ArrayList<>();
|
private final List<Response.ResponseListener> responseListeners = new ArrayList<>();
|
||||||
|
private final AtomicReference<Throwable> aborted = new AtomicReference<>();
|
||||||
private final HttpClient client;
|
private final HttpClient client;
|
||||||
private final long conversation;
|
private final long conversation;
|
||||||
private final String host;
|
private final String host;
|
||||||
|
@ -73,7 +75,6 @@ public class HttpRequest implements Request
|
||||||
private long timeout;
|
private long timeout;
|
||||||
private ContentProvider content;
|
private ContentProvider content;
|
||||||
private boolean followRedirects;
|
private boolean followRedirects;
|
||||||
private volatile Throwable aborted;
|
|
||||||
|
|
||||||
public HttpRequest(HttpClient client, URI uri)
|
public HttpRequest(HttpClient client, URI uri)
|
||||||
{
|
{
|
||||||
|
@ -504,16 +505,19 @@ public class HttpRequest implements Request
|
||||||
@Override
|
@Override
|
||||||
public boolean abort(Throwable cause)
|
public boolean abort(Throwable cause)
|
||||||
{
|
{
|
||||||
aborted = Objects.requireNonNull(cause);
|
if (aborted.compareAndSet(null, Objects.requireNonNull(cause)))
|
||||||
|
{
|
||||||
// The conversation may be null if it is already completed
|
// The conversation may be null if it is already completed
|
||||||
HttpConversation conversation = client.getConversation(getConversationID(), false);
|
HttpConversation conversation = client.getConversation(getConversationID(), false);
|
||||||
return conversation != null && conversation.abort(cause);
|
return conversation != null && conversation.abort(cause);
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Throwable getAbortCause()
|
public Throwable getAbortCause()
|
||||||
{
|
{
|
||||||
return aborted;
|
return aborted.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
private String buildQuery()
|
private String buildQuery()
|
||||||
|
|
Loading…
Reference in New Issue