update golangci-lint to 1.43.0, fix found issues

This commit is contained in:
Dmitry Verkhoturov
2021-11-23 15:00:40 -06:00
committed by Umputun
parent 8e77acd908
commit 90e537358d
55 changed files with 290 additions and 307 deletions
+23 -23
View File
@@ -25,7 +25,7 @@ type MemData struct {
posts map[string][]store.Comment // key is siteID
metaUsers map[string]metaUser // key is userID
metaPosts map[store.Locator]metaPost // key is post's locator
sync.RWMutex
mu sync.RWMutex
}
type metaPost struct {
@@ -61,8 +61,8 @@ func (m *MemData) Create(comment store.Comment) (commentID string, err error) {
return "", errors.Errorf("post %s is read-only", comment.Locator.URL)
}
m.Lock()
defer m.Unlock()
m.mu.Lock()
defer m.mu.Unlock()
comments := m.posts[comment.Locator.SiteID]
for _, c := range comments { // don't allow duplicated IDs
if c.ID == comment.ID {
@@ -76,8 +76,8 @@ func (m *MemData) Create(comment store.Comment) (commentID string, err error) {
// Find returns all comments for post and sorts results
func (m *MemData) Find(req engine.FindRequest) (comments []store.Comment, err error) {
m.RLock()
defer m.RUnlock()
m.mu.RLock()
defer m.mu.RUnlock()
comments = []store.Comment{}
@@ -132,22 +132,22 @@ func (m *MemData) Find(req engine.FindRequest) (comments []store.Comment, err er
// Get returns comment for locator.URL and commentID string
func (m *MemData) Get(req engine.GetRequest) (comment store.Comment, err error) {
m.RLock()
defer m.RUnlock()
m.mu.RLock()
defer m.mu.RUnlock()
return m.get(req.Locator, req.CommentID)
}
// Update updates comment for locator.URL with mutable part of comment
func (m *MemData) Update(comment store.Comment) error {
m.Lock()
defer m.Unlock()
m.mu.Lock()
defer m.mu.Unlock()
return m.updateComment(comment)
}
// Count returns number of comments for post or user
func (m *MemData) Count(req engine.FindRequest) (count int, err error) {
m.RLock()
defer m.RUnlock()
m.mu.RLock()
defer m.mu.RUnlock()
switch {
case req.Locator.URL != "": // comment's count for post
@@ -167,8 +167,8 @@ func (m *MemData) Count(req engine.FindRequest) (count int, err error) {
// Info get post(s) meta info
func (m *MemData) Info(req engine.InfoRequest) (res []store.PostInfo, err error) {
m.RLock()
defer m.RUnlock()
m.mu.RLock()
defer m.mu.RUnlock()
res = []store.PostInfo{}
if req.Locator.URL != "" { // post info
@@ -240,8 +240,8 @@ func (m *MemData) Info(req engine.InfoRequest) (res []store.PostInfo, err error)
// Flag sets and gets flag values
func (m *MemData) Flag(req engine.FlagRequest) (val bool, err error) {
m.Lock()
defer m.Unlock()
m.mu.Lock()
defer m.mu.Unlock()
if req.Update == engine.FlagNonSet { // read flag value, no update requested
return m.checkFlag(req), nil
@@ -253,8 +253,8 @@ func (m *MemData) Flag(req engine.FlagRequest) (val bool, err error) {
// ListFlags get list of flagged keys, like blocked & verified user
// works for full locator (post flags) or with userID
func (m *MemData) ListFlags(req engine.FlagRequest) (res []interface{}, err error) {
m.RLock()
defer m.RUnlock()
m.mu.RLock()
defer m.mu.RUnlock()
res = []interface{}{}
@@ -290,8 +290,8 @@ func (m *MemData) UserDetail(req engine.UserDetailRequest) ([]engine.UserDetailE
return nil, errors.New("userid cannot be empty in request for single detail")
}
m.Lock()
defer m.Unlock()
m.mu.Lock()
defer m.mu.Unlock()
if req.Update == "" { // read detail value, no update requested
return m.getUserDetail(req)
@@ -302,8 +302,8 @@ func (m *MemData) UserDetail(req engine.UserDetailRequest) ([]engine.UserDetailE
// list of all details returned in case request is a read request
// (Update is not set) and does not have UserID or Detail set
if req.Update == "" && req.UserID == "" { // read list of all details
m.Lock()
defer m.Unlock()
m.mu.Lock()
defer m.mu.Unlock()
return m.listDetails(req.Locator)
}
return nil, errors.New("unsupported request with userdetail all")
@@ -315,8 +315,8 @@ func (m *MemData) UserDetail(req engine.UserDetailRequest) ([]engine.UserDetailE
// Delete post(s), user, comment, user details, or everything
func (m *MemData) Delete(req engine.DeleteRequest) error {
m.Lock()
defer m.Unlock()
m.mu.Lock()
defer m.mu.Unlock()
switch {
case req.UserDetail != "": // delete user detail
+17 -17
View File
@@ -22,7 +22,7 @@ type MemImage struct {
imagesStaging map[string][]byte
images map[string][]byte
insertTime map[string]time.Time
sync.RWMutex
mu sync.RWMutex
}
// NewMemImageStore makes admin Store in memory.
@@ -37,18 +37,18 @@ func NewMemImageStore() *MemImage {
// Save stores image with passed id to staging
func (m *MemImage) Save(id string, img []byte) error {
m.Lock()
m.mu.Lock()
m.imagesStaging[id] = img
m.insertTime[id] = time.Now()
m.Unlock()
m.mu.Unlock()
return nil
}
// ResetCleanupTimer resets cleanup timer for the image
func (m *MemImage) ResetCleanupTimer(id string) error {
m.Lock()
defer m.Unlock()
m.mu.Lock()
defer m.mu.Unlock()
if _, ok := m.insertTime[id]; ok {
m.insertTime[id] = time.Now()
return nil
@@ -58,12 +58,12 @@ func (m *MemImage) ResetCleanupTimer(id string) error {
// Load image by ID
func (m *MemImage) Load(id string) ([]byte, error) {
m.RLock()
m.mu.RLock()
img, ok := m.images[id]
if !ok {
img, ok = m.imagesStaging[id]
}
m.RUnlock()
m.mu.RUnlock()
if !ok {
return nil, errors.Errorf("image %s not found", id)
}
@@ -72,16 +72,16 @@ func (m *MemImage) Load(id string) ([]byte, error) {
// Commit moves image from staging to permanent
func (m *MemImage) Commit(id string) error {
m.RLock()
m.mu.RLock()
img, ok := m.imagesStaging[id]
m.RUnlock()
m.mu.RUnlock()
if !ok {
return errors.Errorf("failed to commit %s, not found in staging", id)
}
m.Lock()
m.mu.Lock()
m.images[id] = img
m.Unlock()
m.mu.Unlock()
return nil
}
@@ -90,7 +90,7 @@ func (m *MemImage) Commit(id string) error {
func (m *MemImage) Cleanup(_ context.Context, ttl time.Duration) error {
var idsToRemove []string
m.RLock()
m.mu.RLock()
for id, t := range m.insertTime {
age := time.Since(t)
if age > ttl {
@@ -98,27 +98,27 @@ func (m *MemImage) Cleanup(_ context.Context, ttl time.Duration) error {
idsToRemove = append(idsToRemove, id)
}
}
m.RUnlock()
m.mu.RUnlock()
m.Lock()
m.mu.Lock()
for _, id := range idsToRemove {
delete(m.insertTime, id)
delete(m.imagesStaging, id)
}
m.Unlock()
m.mu.Unlock()
return nil
}
// Info returns meta information about storage
func (m *MemImage) Info() (image.StoreInfo, error) {
var ts time.Time
m.RLock()
m.mu.RLock()
for _, t := range m.insertTime {
if ts.IsZero() || t.Before(ts) {
ts = t
}
}
m.RUnlock()
m.mu.RUnlock()
return image.StoreInfo{FirstStagingImageTS: ts}, nil
}
@@ -10,7 +10,6 @@ import (
"context"
"encoding/base64"
"io"
"io/ioutil"
"strings"
"testing"
"time"
@@ -43,7 +42,7 @@ func gopherPNG() io.Reader { return base64.NewDecoder(base64.StdEncoding, string
func TestMemImage_LoadAfterSave(t *testing.T) {
svc := NewMemImageStore()
gopher, err := ioutil.ReadAll(gopherPNG())
gopher, err := io.ReadAll(gopherPNG())
assert.NoError(t, err)
img, err := svc.Load("test_id")
@@ -85,7 +84,7 @@ func TestMemImage_Cleanup(t *testing.T) {
func TestMemImage_Info(t *testing.T) {
svc := NewMemImageStore()
gopher, err := ioutil.ReadAll(gopherPNG())
gopher, err := io.ReadAll(gopherPNG())
assert.NoError(t, err)
// get info on empty storage, should be zero
@@ -11,7 +11,6 @@ import (
"encoding/base64"
"fmt"
"io"
"io/ioutil"
"net/http"
"strings"
"testing"
@@ -46,7 +45,7 @@ const gopher = "iVBORw0KGgoAAAANSUhEUgAAAEsAAAA8CAAAAAALAhhPAAAFfUlEQVRYw62XeWwU
func gopherPNG() io.Reader { return base64.NewDecoder(base64.StdEncoding, strings.NewReader(gopher)) }
func gopherPNGBytes() []byte {
img, _ := ioutil.ReadAll(gopherPNG())
img, _ := io.ReadAll(gopherPNG())
return img
}