[
https://issues.apache.org/jira/browse/THRIFT-3851?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Connor Gorman updated THRIFT-3851:
----------------------------------
Description:
{code}
func (p *THttpClient) Flush() error {
// Close any previous response body to avoid leaking connections.
p.closeResponse()
req, err := http.NewRequest("POST", p.url.String(), p.requestBuffer)
if err != nil {
return NewTTransportExceptionFromError(err)
}
p.header.Add("Content-Type", "application/x-thrift")
req.Header = p.header
response, err := p.client.Do(req)
if err != nil {
return NewTTransportExceptionFromError(err)
}
if response.StatusCode != http.StatusOK {
// Close the response to avoid leaking file descriptors.
closeResponse does
// more than just call Close(), so temporarily assign it and
reuse the logic.
p.response = response
p.closeResponse()
// TODO(pomack) log bad response
return NewTTransportException(UNKNOWN_TRANSPORT_EXCEPTION,
"HTTP Response code: "+strconv.Itoa(response.StatusCode))
}
p.response = response
return nil
}
{code}
{code} p.header.Add("Content-Type", "application/x-thrift") {code}
This adds the content-type to the httpClient which is then assigned to every
request. This causes the header to get larger and larger causing some servers
to reject requests due to header size
was:
{code}
func (p *THttpClient) Flush() error {
// Close any previous response body to avoid leaking connections.
p.closeResponse()
req, err := http.NewRequest("POST", p.url.String(), p.requestBuffer)
if err != nil {
return NewTTransportExceptionFromError(err)
}
p.header.Add("Content-Type", "application/x-thrift")
req.Header = p.header
response, err := p.client.Do(req)
if err != nil {
return NewTTransportExceptionFromError(err)
}
if response.StatusCode != http.StatusOK {
// Close the response to avoid leaking file descriptors.
closeResponse does
// more than just call Close(), so temporarily assign it and
reuse the logic.
p.response = response
p.closeResponse()
// TODO(pomack) log bad response
return NewTTransportException(UNKNOWN_TRANSPORT_EXCEPTION,
"HTTP Response code: "+strconv.Itoa(response.StatusCode))
}
p.response = response
return nil
}
{code}
{code} p.header.Add("Content-Type", "application/x-thrift") {code}
This adds the content-type to the httpClient which is then assigned to every
request. This causes the header to get larger and larger causing some servers
to reject requests after a certain amount of requests
> Golang thrift continually adds the x/thrift content type
> ---------------------------------------------------------
>
> Key: THRIFT-3851
> URL: https://issues.apache.org/jira/browse/THRIFT-3851
> Project: Thrift
> Issue Type: Bug
> Reporter: Connor Gorman
>
> {code}
> func (p *THttpClient) Flush() error {
> // Close any previous response body to avoid leaking connections.
> p.closeResponse()
> req, err := http.NewRequest("POST", p.url.String(), p.requestBuffer)
> if err != nil {
> return NewTTransportExceptionFromError(err)
> }
> p.header.Add("Content-Type", "application/x-thrift")
> req.Header = p.header
> response, err := p.client.Do(req)
> if err != nil {
> return NewTTransportExceptionFromError(err)
> }
> if response.StatusCode != http.StatusOK {
> // Close the response to avoid leaking file descriptors.
> closeResponse does
> // more than just call Close(), so temporarily assign it and
> reuse the logic.
> p.response = response
> p.closeResponse()
> // TODO(pomack) log bad response
> return NewTTransportException(UNKNOWN_TRANSPORT_EXCEPTION,
> "HTTP Response code: "+strconv.Itoa(response.StatusCode))
> }
> p.response = response
> return nil
> }
> {code}
> {code} p.header.Add("Content-Type", "application/x-thrift") {code}
> This adds the content-type to the httpClient which is then assigned to every
> request. This causes the header to get larger and larger causing some servers
> to reject requests due to header size
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)