forked from TrueCloudLab/frostfs-node
[#273] service/audit: Add cache of head responses in PoR
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
This commit is contained in:
parent
9212864f42
commit
afb83c610c
2 changed files with 44 additions and 0 deletions
|
@ -34,6 +34,8 @@ type Context struct {
|
|||
}
|
||||
|
||||
cnrNodesNum int
|
||||
|
||||
headResponses map[string]shortHeader
|
||||
}
|
||||
|
||||
type pairMemberInfo struct {
|
||||
|
@ -48,6 +50,12 @@ type gamePair struct {
|
|||
id *object.ID
|
||||
}
|
||||
|
||||
type shortHeader struct {
|
||||
tzhash []byte
|
||||
|
||||
objectSize uint64
|
||||
}
|
||||
|
||||
// ContextPrm groups components required to conduct data audit checks.
|
||||
type ContextPrm struct {
|
||||
log *logger.Logger
|
||||
|
@ -114,6 +122,8 @@ func (c *Context) init() {
|
|||
|
||||
c.pairedNodes = make(map[uint64]pairMemberInfo)
|
||||
|
||||
c.headResponses = make(map[string]shortHeader)
|
||||
|
||||
c.log = c.log.With(
|
||||
zap.Stringer("container ID", c.task.ContainerID()),
|
||||
)
|
||||
|
@ -166,3 +176,34 @@ func (c *Context) buildPlacement(id *object.ID) ([]netmap.Nodes, error) {
|
|||
|
||||
return nn, nil
|
||||
}
|
||||
|
||||
func (c *Context) objectSize(id *object.ID) uint64 {
|
||||
strID := id.String()
|
||||
|
||||
if hdr, ok := c.headResponses[strID]; ok {
|
||||
return hdr.objectSize
|
||||
}
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
func (c *Context) objectHomoHash(id *object.ID) []byte {
|
||||
strID := id.String()
|
||||
|
||||
if hdr, ok := c.headResponses[strID]; ok {
|
||||
return hdr.tzhash
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *Context) updateHeadResponses(hdr *object.Object) {
|
||||
strID := hdr.ID().String()
|
||||
|
||||
if _, ok := c.headResponses[strID]; !ok {
|
||||
c.headResponses[strID] = shortHeader{
|
||||
tzhash: hdr.PayloadHomomorphicHash().Sum(),
|
||||
objectSize: hdr.PayloadSize(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -54,6 +54,9 @@ func (c *Context) checkStorageGroupPoR(ind int, sg *object.ID) {
|
|||
continue
|
||||
}
|
||||
|
||||
// update cache for PoR and PDP audit checks
|
||||
c.updateHeadResponses(hdr)
|
||||
|
||||
if len(tzHash) == 0 {
|
||||
tzHash = hdr.PayloadHomomorphicHash().Sum()
|
||||
} else {
|
||||
|
|
Loading…
Reference in a new issue