[#1062] node/object: Change the sequence of servers

In previous implementation ACL server was the 1st (except metric server
in some cases) server in pipeline of Object service servers. This led to
the fact that errors of this handler could not be reduced to status
responses.

Nest object ACL server into signature and response servers to support
common response format.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
Leonard Lyubich 2022-01-10 10:49:30 +03:00 committed by Alex Vanin
parent 287bfd28e0
commit e74ff7c15a

View file

@ -352,16 +352,6 @@ func initObjectService(c *cfg) {
}, },
) )
respSvc := objectService.NewResponseService(
splitSvc,
c.respSvc,
)
signSvc := objectService.NewSignService(
&c.key.PrivateKey,
respSvc,
)
aclSvc := acl.New( aclSvc := acl.New(
acl.WithSenderClassifier( acl.WithSenderClassifier(
acl.NewSenderClassifier( acl.NewSenderClassifier(
@ -373,7 +363,7 @@ func initObjectService(c *cfg) {
acl.WithContainerSource( acl.WithContainerSource(
c.cfgObject.cnrSource, c.cfgObject.cnrSource,
), ),
acl.WithNextService(signSvc), acl.WithNextService(splitSvc),
acl.WithLocalStorage(ls), acl.WithLocalStorage(ls),
acl.WithEACLValidatorOptions( acl.WithEACLValidatorOptions(
eacl.WithEACLSource(c.cfgObject.eaclSource), eacl.WithEACLSource(c.cfgObject.eaclSource),
@ -382,9 +372,19 @@ func initObjectService(c *cfg) {
acl.WithNetmapState(c.cfgNetmap.state), acl.WithNetmapState(c.cfgNetmap.state),
) )
var firstSvc objectService.ServiceServer = aclSvc respSvc := objectService.NewResponseService(
aclSvc,
c.respSvc,
)
signSvc := objectService.NewSignService(
&c.key.PrivateKey,
respSvc,
)
var firstSvc objectService.ServiceServer = signSvc
if c.metricsCollector != nil { if c.metricsCollector != nil {
firstSvc = objectService.NewMetricCollector(aclSvc, c.metricsCollector) firstSvc = objectService.NewMetricCollector(signSvc, c.metricsCollector)
} }
server := objectTransportGRPC.New(firstSvc) server := objectTransportGRPC.New(firstSvc)