Hi, I have an ES output that bulk uploads to a cluster. The HTTP status code is 200 OK but the reply payload says that it failed the upload for a few of the items. But heka doesn't seem to care about the failed items. I looked at the code and it says:
https://github.com/mozilla-services/heka/blob/dev/plugins/elasticsearch/elasticsearch.go#L429 if response != nil { defer response.Body.Close() if response_body, err = ioutil.ReadAll(response.Body); err != nil { return fmt.Errorf("Can't read HTTP response body. Status: %s. Error: %s", response.Status, err.Error()), true } err = json.Unmarshal(response_body, &response_body_json) if err != nil { return fmt.Errorf("HTTP response didn't contain valid JSON. Status: %s. Body: %s", response.Status, string(response_body)), true } json_errors, ok := response_body_json["errors"].(bool) if ok && json_errors && response.StatusCode != 200 { return fmt.Errorf( "ElasticSearch server reported error within JSON. Status: %s. Body: %s", response.Status, string(response_body)), false } if response.StatusCode > 304 { return fmt.Errorf("HTTP response error. Status: %s. Body: %s", response.Status, string(response_body)), false } } 1- In my case I see a 200 OK with "errors = true" which does not seem to be caught, according to the code. 2- I don't see any logic for recovery based on individual items. Am I missing anything here? -- Ramin
_______________________________________________ Heka mailing list [email protected] https://mail.mozilla.org/listinfo/heka

