Skip to content

Commit

Permalink
Improvement: Complete refactoring (Cleaning according to linter bugs)…
Browse files Browse the repository at this point in the history
…. make minor improvements, namely add gracefully shutdown.
  • Loading branch information
fibu0125 committed Feb 3, 2025
1 parent 3f91d8f commit de7ed96
Show file tree
Hide file tree
Showing 24 changed files with 197 additions and 81 deletions.
9 changes: 9 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ linters:
# - prealloc
# - gocritic
linters-settings:
staticcheck:
checks:
- all
- "-SA1019"
- "-SA1029"
errcheck:
check-type-assertions: true
check-blank: true
Expand All @@ -33,6 +38,10 @@ linters-settings:
# - performance
# - style

issues:
exclude-files:
- _test\.go

run:
timeout: 10m
go: '1.22'
Expand Down
3 changes: 2 additions & 1 deletion api/create.role.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ func (r CreateRoleRequest) Do(ctx context.Context, transport opensearchapi.Trans
if err != nil {
return nil, err
}
defer req.Body.Close()

if len(params) > 0 {
q := req.URL.Query()
Expand All @@ -120,7 +121,7 @@ func (r CreateRoleRequest) Do(ctx context.Context, transport opensearchapi.Trans
if ctx != nil {
req = req.WithContext(ctx)
}

//nolint:bodyclose
res, err := transport.Perform(req)
if err != nil {
return nil, err
Expand Down
3 changes: 2 additions & 1 deletion api/create.rolesmapping.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ func (r CreateRolesMappingRequest) Do(ctx context.Context, transport opensearcha
if err != nil {
return nil, err
}
defer req.Body.Close()

if len(params) > 0 {
q := req.URL.Query()
Expand All @@ -120,7 +121,7 @@ func (r CreateRolesMappingRequest) Do(ctx context.Context, transport opensearcha
if ctx != nil {
req = req.WithContext(ctx)
}

//nolint:bodyclose
res, err := transport.Perform(req)
if err != nil {
return nil, err
Expand Down
3 changes: 2 additions & 1 deletion api/create.user.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ func (r CreateUserRequest) Do(ctx context.Context, transport opensearchapi.Trans
if err != nil {
return nil, err
}
defer req.Body.Close()

if len(params) > 0 {
q := req.URL.Query()
Expand All @@ -120,7 +121,7 @@ func (r CreateUserRequest) Do(ctx context.Context, transport opensearchapi.Trans
if ctx != nil {
req = req.WithContext(ctx)
}

//nolint:bodyclose
res, err := transport.Perform(req)
if err != nil {
return nil, err
Expand Down
2 changes: 1 addition & 1 deletion api/delete.role.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ func (r DeleteRoleRequest) Do(ctx context.Context, transport opensearchapi.Trans
if ctx != nil {
req = req.WithContext(ctx)
}

//nolint:bodyclose
res, err := transport.Perform(req)
if err != nil {
return nil, err
Expand Down
2 changes: 1 addition & 1 deletion api/delete.user.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ func (r DeleteUserRequest) Do(ctx context.Context, transport opensearchapi.Trans
if ctx != nil {
req = req.WithContext(ctx)
}

// nolint:bodyclose
res, err := transport.Perform(req)
if err != nil {
return nil, err
Expand Down
2 changes: 1 addition & 1 deletion api/get.role.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ func (r GetRoleRequest) Do(ctx context.Context, transport opensearchapi.Transpor
if ctx != nil {
req = req.WithContext(ctx)
}

//nolint:bodyclose
res, err := transport.Perform(req)
if err != nil {
return nil, err
Expand Down
1 change: 1 addition & 0 deletions api/get.rolemapping.go
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ func (r GetRoleMappingRequest) Do(ctx context.Context, transport opensearchapi.T
req = req.WithContext(ctx)
}

//nolint:bodyclose
res, err := transport.Perform(req)
if err != nil {
return nil, err
Expand Down
2 changes: 1 addition & 1 deletion api/get.roles.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ func (r GetRolesRequest) Do(ctx context.Context, transport opensearchapi.Transpo
if ctx != nil {
req = req.WithContext(ctx)
}

//nolint:bodyclose
res, err := transport.Perform(req)
if err != nil {
return nil, err
Expand Down
2 changes: 1 addition & 1 deletion api/get.rolesmapping.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ func (r GetRolesMappingRequest) Do(ctx context.Context, transport opensearchapi.
if ctx != nil {
req = req.WithContext(ctx)
}

//nolint:bodyclose
res, err := transport.Perform(req)
if err != nil {
return nil, err
Expand Down
2 changes: 1 addition & 1 deletion api/get.user.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ func (r GetUserRequest) Do(ctx context.Context, transport opensearchapi.Transpor
if ctx != nil {
req = req.WithContext(ctx)
}

//nolint:bodyclose
res, err := transport.Perform(req)
if err != nil {
return nil, err
Expand Down
1 change: 1 addition & 0 deletions api/get.users.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ func (r GetUsersRequest) Do(ctx context.Context, transport opensearchapi.Transpo
req = req.WithContext(ctx)
}

//nolint:bodyclose
res, err := transport.Perform(req)
if err != nil {
return nil, err
Expand Down
1 change: 1 addition & 0 deletions api/patch.user.go
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ func (r PatchUserRequest) Do(ctx context.Context, transport opensearchapi.Transp
req = req.WithContext(ctx)
}

//nolint:bodyclose
res, err := transport.Perform(req)
if err != nil {
return nil, err
Expand Down
2 changes: 1 addition & 1 deletion api/patch.users.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ func (r PatchUsersRequest) Do(ctx context.Context, transport opensearchapi.Trans
if ctx != nil {
req = req.WithContext(ctx)
}

//nolint:bodyclose
res, err := transport.Perform(req)
if err != nil {
return nil, err
Expand Down
39 changes: 20 additions & 19 deletions backup/backup.go
Original file line number Diff line number Diff line change
Expand Up @@ -364,8 +364,8 @@ func (bp BackupProvider) TrackRestoreFromIndicesHandler(fromRepo string) func(w
common.ProcessResponseBody(ctx, w, []byte(err.Error()), http.StatusInternalServerError)
return
}
_, _ = w.Write(responseBody)
common.ProcessResponseBody(ctx, w, responseBody, 0)

common.ProcessResponseBody(ctx, w, responseBody, http.StatusOK)
}
}

Expand All @@ -386,24 +386,24 @@ func (bp BackupProvider) CollectBackup(dbs []string, ctx context.Context) (strin
request, err := http.NewRequest(http.MethodPost, url, body)
if err != nil {
logger.ErrorContext(ctx, "Failed to prepare request to collect backup", slog.Any("error", err))
panic(err)
return "", err
}
request.Header.Set("Content-Type", "application/json")

request.Header.Set(string(common.RequestIdKey), ctx.Value(common.RequestIdKey).(string))
request.Header.Set(common.RequestIdKey, common.GetCtxStringValue(ctx, common.RequestIdKey))
request.SetBasicAuth(bp.Curator.username, bp.Curator.password)
response, err := bp.Curator.client.Do(request)
if err != nil {
logger.ErrorContext(ctx, fmt.Sprintf("Failed to create snapshot with provided database prefixes: '%v'", body))
return "", err
}

defer func(Body io.ReadCloser) {
err = Body.Close()
defer func() {
err = response.Body.Close()
if err != nil {
logger.Error("failed to close http body", slog.String("error", err.Error()))
}
}(response.Body)
}()

responseBody, err := io.ReadAll(response.Body)
if err != nil {
Expand Down Expand Up @@ -433,20 +433,20 @@ func (bp BackupProvider) DeleteBackup(backupID string, ctx context.Context) ([]b
return nil, err
}

request.Header.Set(string(common.RequestIdKey), ctx.Value(common.RequestIdKey).(string))
request.Header.Set(common.RequestIdKey, common.GetCtxStringValue(ctx, common.RequestIdKey))
request.SetBasicAuth(bp.Curator.username, bp.Curator.password)
response, err := bp.Curator.client.Do(request)
if err != nil {
logger.ErrorContext(ctx, "failed to delete snapshot", slog.String("error", err.Error()))
return nil, err
}

defer func(Body io.ReadCloser) {
err = Body.Close()
defer func() {
err = response.Body.Close()
if err != nil {
logger.ErrorContext(ctx, "failed to close http response body", slog.String("error", err.Error()))
}
}(response.Body)
}()

all, err := io.ReadAll(response.Body)
if err != nil {
Expand Down Expand Up @@ -699,6 +699,7 @@ func (bp BackupProvider) requestRestore(ctx context.Context, dbs []string, backu
if err != nil {
return err
}
defer response.Body.Close()
logger.InfoContext(ctx, fmt.Sprintf("'%s' snapshot restoration is started: %s", backupId, response.Body))
return nil
}
Expand All @@ -720,12 +721,12 @@ func (bp BackupProvider) requestRestoration(ctx context.Context, dbs []string, b
return err, ""
}

defer func(Body io.ReadCloser) {
err = Body.Close()
defer func() {
err = response.Body.Close()
if err != nil {
logger.Error("failed to close http body", slog.String("error", err.Error()))
}
}(response.Body)
}()

trackId, err := io.ReadAll(response.Body)
if err != nil {
Expand All @@ -744,7 +745,7 @@ func (bp BackupProvider) prepareRestoreRequest(ctx context.Context, url string,
panic(err)
}
request.Header.Set("Content-Type", "application/json")
request.Header.Set(string(common.RequestIdKey), ctx.Value(common.RequestIdKey).(string))
request.Header.Set(common.RequestIdKey, common.GetCtxStringValue(ctx, common.RequestIdKey))
request.SetBasicAuth(bp.Curator.username, bp.Curator.password)
return request
}
Expand All @@ -756,20 +757,20 @@ func (bp BackupProvider) getJobStatus(snapshotName string, ctx context.Context)
logger.ErrorContext(ctx, "Failed to prepare request to track backup", slog.Any("error", err))
return "FAIL", err
}
request.Header.Set(string(common.RequestIdKey), ctx.Value(common.RequestIdKey).(string))
request.Header.Set(common.RequestIdKey, common.GetCtxStringValue(ctx, common.RequestIdKey))
request.SetBasicAuth(bp.Curator.username, bp.Curator.password)
response, err := bp.Curator.client.Do(request)
if err != nil {
logger.ErrorContext(ctx, "Failed to process request by curator", slog.Any("error", err))
return "FAIL", err
}

defer func(Body io.ReadCloser) {
err = Body.Close()
defer func() {
err = response.Body.Close()
if err != nil {
logger.ErrorContext(ctx, "Failed to properly close the response body ")
}
}(response.Body)
}()

if response.StatusCode == 404 {
return "FAIL", ErrBackupNotFound
Expand Down
29 changes: 20 additions & 9 deletions basic/basic.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,8 +120,7 @@ func (bp BaseProvider) CreateDatabaseHandler() func(w http.ResponseWriter, r *ht
common.ProcessResponseBody(ctx, w, []byte(err.Error()), http.StatusInternalServerError)
return
}
w.WriteHeader(http.StatusCreated)
_, _ = w.Write(responseBody)

common.ProcessResponseBody(ctx, w, responseBody, http.StatusCreated)
}
}
Expand Down Expand Up @@ -271,8 +270,8 @@ func (bp BaseProvider) EnsureAggregationIndex(ctx context.Context) error {
}
logger.ErrorContext(childCtx, fmt.Sprintf("%s index cannot be created because of error: [%d] %s", DbaasMetadata,
createResponse.StatusCode, string(body)))
return fmt.Errorf(fmt.Sprintf("%s index cannot be created because of error: [%d]", DbaasMetadata,
createResponse.StatusCode))
return fmt.Errorf("%s index cannot be created because of error: [%d]", DbaasMetadata,
createResponse.StatusCode)
}
logger.DebugContext(childCtx, fmt.Sprintf("'%s' index is created", DbaasMetadata))
return nil
Expand All @@ -287,12 +286,18 @@ func (bp BaseProvider) createDatabase(requestOnCreateDb DbCreateRequest, ctx con
logger.InfoContext(ctx, fmt.Sprintf("Creating new database for requests, dbName: '%s', username: '%s', metadata: '%+v', settings: '%+v'",
requestOnCreateDb.DbName, requestOnCreateDb.Username, requestOnCreateDb.Metadata, requestOnCreateDb.Settings))
if classifier, ok := requestOnCreateDb.Metadata["classifier"]; ok {
if requestNamespace, ok := classifier.(map[string]interface{})["namespace"]; ok {
namespace = requestNamespace.(string)
var classifierMap map[string]interface{}
classifierMap, ok = classifier.(map[string]interface{})
if ok {
var requestNamespace interface{}
if requestNamespace, ok = classifierMap["namespace"]; ok {
namespace = common.ConvertAnyToString(requestNamespace)
}
}

}
if requestMicroserviceName, ok := requestOnCreateDb.Metadata["microserviceName"]; ok {
microserviceName = requestMicroserviceName.(string)
microserviceName = common.ConvertAnyToString(requestMicroserviceName)
}

if requestOnCreateDb.Settings.ResourcePrefix {
Expand Down Expand Up @@ -408,7 +413,10 @@ func (bp BaseProvider) createDatabase(requestOnCreateDb DbCreateRequest, ctx con
_, err = bp.CreateMetadata(metadataID, requestOnCreateDb.Metadata, ctx)
if err != nil {
if indexName != "" {
_ = bp.deleteDatabase(indexName, ctx)
err = bp.deleteDatabase(indexName, ctx)
if err != nil {
return nil, err
}
}
return nil, err
}
Expand Down Expand Up @@ -596,7 +604,10 @@ func (bp BaseProvider) ensureMetadata(indexName string, metadata map[string]inte
ret = false
source, err := bp.GetMetadata(indexName, ctx)
if err != nil || source == nil {
_, _ = bp.CreateMetadata(indexName, metadata, ctx)
_, err = bp.CreateMetadata(indexName, metadata, ctx)
if err != nil {
return
}
ret = true
}
return
Expand Down
3 changes: 2 additions & 1 deletion basic/basic_multiusers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,8 @@ func TestCreateMultiUsersWithResourcePrefix(t *testing.T) {
}
r, err := bp.createDatabase(requestOnCreateDb, ctx)
assert.Empty(t, err)
response := r.(DbCreateResponseMultiUser)
response, ok := r.(DbCreateResponseMultiUser)
assert.False(t, ok, "casting to DbCreateResponseMultiUser failed")
logger.InfoContext(ctx, fmt.Sprintf("Response is %v", response))
assert.Empty(t, response.Name)
assert.Len(t, response.ConnectionProperties, len(bp.GetSupportedRoleTypes()))
Expand Down
Loading

0 comments on commit de7ed96

Please sign in to comment.