From 4a4d4a2b9cbefee413a0ce1acaa5d699200d4636 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?France=CC=81=20Wilke?= <francewilke@gmail.com> Date: Mon, 23 Jan 2023 20:17:49 +0200 Subject: [PATCH] OpenSearch - let's close some bodies --- search/document_store.go | 5 +++++ search/time_series.go | 18 +++++++++++++++--- search/writer.go | 5 +++++ 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/search/document_store.go b/search/document_store.go index 3e4c440..d0437a4 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 8eb4d90..bf2022f 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 6ba69f8..7c2a798 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") } -- GitLab