MM-56876: Redis: first introduction (#27752)
```release-note NONE ``` --------- Co-authored-by: Jesús Espino <jespinog@gmail.com> Co-authored-by: Mattermost Build <build@mattermost.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
c3ed07e679
Коммит
540febd866
@@ -10,7 +10,9 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/mattermost/mattermost/server/public/model"
|
||||
"github.com/mattermost/mattermost/server/public/shared/mlog"
|
||||
"github.com/mattermost/mattermost/server/v8/channels/store"
|
||||
"github.com/mattermost/mattermost/server/v8/platform/services/cache"
|
||||
)
|
||||
|
||||
type LocalCacheRoleStore struct {
|
||||
@@ -60,15 +62,32 @@ func (s LocalCacheRoleStore) GetByNames(names []string) ([]*model.Role, error) {
|
||||
var foundRoles []*model.Role
|
||||
var rolesToQuery []string
|
||||
|
||||
for _, roleName := range names {
|
||||
toPass := make([]any, 0, len(names))
|
||||
for i := 0; i < len(names); i++ {
|
||||
var role *model.Role
|
||||
if err := s.rootStore.doStandardReadCache(s.rootStore.roleCache, roleName, &role); err == nil {
|
||||
foundRoles = append(foundRoles, role)
|
||||
toPass = append(toPass, &role)
|
||||
}
|
||||
errs := s.rootStore.doMultiReadCache(s.rootStore.roleCache, names, toPass)
|
||||
for i, err := range errs {
|
||||
if err != nil {
|
||||
if err != cache.ErrKeyNotFound {
|
||||
s.rootStore.logger.Warn("Error in Rolestore.GetByNames: ", mlog.Err(err))
|
||||
}
|
||||
rolesToQuery = append(rolesToQuery, names[i])
|
||||
} else {
|
||||
rolesToQuery = append(rolesToQuery, roleName)
|
||||
gotRole := *(toPass[i].(**model.Role))
|
||||
if gotRole != nil {
|
||||
foundRoles = append(foundRoles, gotRole)
|
||||
} else {
|
||||
s.rootStore.logger.Warn("Found nil role in GetByNames. This is not expected")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if len(rolesToQuery) == 0 {
|
||||
return foundRoles, nil
|
||||
}
|
||||
|
||||
roles, err := s.RoleStore.GetByNames(rolesToQuery)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
Ссылка в новой задаче
Block a user