diff --git a/search/document_store.go b/search/document_store.go index 3e4c440d4c74116fcd106391939580f5ba80277d..d0437a4ef7daad902996c35e3d4a3a7ca5e9f0a8 100644 --- a/search/document_store.go +++ b/search/document_store.go @@ -107,6 +107,11 @@ func (ds *DocumentStore) Write(id string, data interface{}) error { indexName, // index name indexName, // document id strings.NewReader(string(ds.jsonSettings))) + defer func() { + if res != nil { + res.Body.Close() + } + }() if err != nil { return errors.Wrapf(err, "failed to create index(%s)", indexName) } diff --git a/search/time_series.go b/search/time_series.go index 8eb4d90eea38a5a41f326e17df33370e30c9501f..bf2022f84d1e61f0b86d6d0ed70fe23de64a822d 100644 --- a/search/time_series.go +++ b/search/time_series.go @@ -37,8 +37,11 @@ type TimeSeries struct { } // NewTimeSeries purpose: -// create a time series to write e.g. api api_logs +// +// create a time series to write e.g. api api_logs +// // parameters: +// // name must be the openSearch index name prefix without the date, e.g. "uafrica-v3-api-api_logs" // the actual indices in openSearch will be called "<indexName>-<ccyymmdd>" e.g. "uafrica-v3-api-api_logs-20210102" // tmpl must be your log data struct consisting of public fields as: @@ -225,6 +228,11 @@ func (ts *TimeSeries) Write(startTime, endTime time.Time, data interface{}) erro indexName, // index name also used for document id strings.NewReader(string(ts.jsonSettings)), ) + defer func() { + if res != nil { + res.Body.Close() + } + }() if err != nil { return errors.Wrapf(err, "failed to create index(%s)", indexName) } @@ -271,9 +279,12 @@ func (ts *TimeSeries) Write(startTime, endTime time.Time, data interface{}) erro } // DelOldTimeSeries parameters: -// indexName is index prefix before dash-date, e.g. "api-api_logs" then will look for "api-api_logs-<date>" +// +// indexName is index prefix before dash-date, e.g. "api-api_logs" then will look for "api-api_logs-<date>" +// // returns -// list of indices to delete with err==nil if deleted successfully +// +// list of indices to delete with err==nil if deleted successfully func (ts *TimeSeries) DelOldTimeSeries(olderThanDays int) ([]string, error) { if olderThanDays < 0 { return nil, errors.Errorf("invalid olderThanDays=%d < 0", olderThanDays) @@ -349,6 +360,7 @@ type IndexSettings struct { // Search returns docs indexed on OpenSearch document ID which cat be used in Get(id) // The docs value type is the same as that of tmpl specified when you created the TimeSeries(..., tmpl) // So you can safely type assert e.g. +// // type myType struct {...} // ts := search.TimeSeries(..., myType{}) // docs,totalCount,err := ts.Search(...) diff --git a/search/writer.go b/search/writer.go index 6ba69f8dd950cd73bf02808ac4a5f44cf2095dfc..7c2a798e21b023f78ed1f05e62a562656f7048f5 100644 --- a/search/writer.go +++ b/search/writer.go @@ -76,6 +76,11 @@ func (writer Writer) Write(indexName string, id string, doc interface{}) (*Index strings.NewReader(jsonDocStr), options..., ) + defer func() { + if indexResponse != nil { + indexResponse.Body.Close() + } + }() if err != nil { return nil, errors.Wrapf(err, "failed to index document") }