Look for X-Headers within metaheader origin before APE check #1597

Merged
fyrchik merged 1 commit from aarifullin/frostfs-node:fix/1243_xheaders into master 2025-01-13 12:07:28 +00:00
Member
  • X-Headers can be found in origin field of MetaHeader if the request has been forwarded from non-container node.

When a request is forwarded to container node, metaheader is filled like that:

f.OnceResign.Do(func() {
		// compose meta header of the local server
		metaHdr := new(session.RequestMetaHeader)
		metaHdr.SetTTL(f.Request.GetMetaHeader().GetTTL() - 1)
		// TODO: #1165 think how to set the other fields
		metaHdr.SetOrigin(f.Request.GetMetaHeader())
		writeCurrentVersion(metaHdr)
		f.Request.SetMetaHeader(metaHdr)
		err = signature.SignServiceMessage(f.Key, f.Request)
	})

So, we expect x-headers may be found within origin (see also neo-node#1165)

Close #1243

* X-Headers can be found in `origin` field of `MetaHeader` if the request has been forwarded from non-container node. When a request is forwarded to container node, metaheader is filled like [that](https://git.frostfs.info/TrueCloudLab/frostfs-node/src/branch/master/pkg/services/object/get/v2/get_forwarder.go#L45-L54): ```go f.OnceResign.Do(func() { // compose meta header of the local server metaHdr := new(session.RequestMetaHeader) metaHdr.SetTTL(f.Request.GetMetaHeader().GetTTL() - 1) // TODO: #1165 think how to set the other fields metaHdr.SetOrigin(f.Request.GetMetaHeader()) writeCurrentVersion(metaHdr) f.Request.SetMetaHeader(metaHdr) err = signature.SignServiceMessage(f.Key, f.Request) }) ``` So, we expect x-headers may be found within `origin` (see also [neo-node#1165](https://github.com/nspcc-dev/neofs-node/issues/1165#issuecomment-1034723865)) Close #1243
aarifullin added the
bug
label 2025-01-10 13:34:45 +00:00
requested reviews from storage-core-committers, storage-core-developers 2025-01-10 13:34:46 +00:00
acid-ant approved these changes 2025-01-10 14:20:43 +00:00
Dismissed
achuprov approved these changes 2025-01-13 06:36:19 +00:00
Dismissed
fyrchik approved these changes 2025-01-13 06:37:26 +00:00
Dismissed
@ -479,0 +484,4 @@
// getXHeaders retrieves x-headers from a request. If the request is being forwarded, then
// x-headers may be found within `origin` field of meta header.
func getXHeaders(mh metaHeaderProvider) (res []session.XHeader) {
Owner

Why have you decided to introduce an interface and use *Provider argument instead of getXHeaders(*session.RequestMetaHeader) []session.XHeader?

Why have you decided to introduce an interface and use `*Provider` argument instead of `getXHeaders(*session.RequestMetaHeader) []session.XHeader`?
Author
Member

The method is no longer actual as I used the approach suggested by @dstepanov-yadro

The method is no longer actual as I used the approach suggested by @dstepanov-yadro
dstepanov-yadro reviewed 2025-01-13 06:43:29 +00:00
@ -479,0 +486,4 @@
// x-headers may be found within `origin` field of meta header.
func getXHeaders(mh metaHeaderProvider) (res []session.XHeader) {
res = mh.GetMetaHeader().GetXHeaders()
if len(res) == 0 {

See

meta := req.GetMetaHeader()


I think it should be the same.

See https://git.frostfs.info/TrueCloudLab/frostfs-node/src/commit/a2485637bb91fcf976ce21cfa09af95f12c27c94/pkg/services/container/executor.go#L55 I think it should be the same.

The nesting can be more than 2 (theoretically).

The nesting can be more than 2 (theoretically).
Author
Member

It's very-very good point. Fixed!

It's very-very good point. Fixed!
Author
Member

The nesting can be more than 2 (theoretically).

Getting meta from origin (if it's present) should be enough for ape

> The nesting can be more than 2 (theoretically). Getting meta from origin (if it's present) should be enough for ape
aarifullin force-pushed fix/1243_xheaders from 50a4df4324 to 4091fb64fa 2025-01-13 09:45:04 +00:00 Compare
aarifullin dismissed acid-ant's review 2025-01-13 09:45:04 +00:00
Reason:

New commits pushed, approval review dismissed automatically according to repository settings

aarifullin dismissed achuprov's review 2025-01-13 09:45:04 +00:00
Reason:

New commits pushed, approval review dismissed automatically according to repository settings

aarifullin dismissed fyrchik's review 2025-01-13 09:45:04 +00:00
Reason:

New commits pushed, approval review dismissed automatically according to repository settings

dstepanov-yadro approved these changes 2025-01-13 10:13:58 +00:00
fyrchik approved these changes 2025-01-13 12:07:23 +00:00
fyrchik merged commit a9f27e074b into master 2025-01-13 12:07:28 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
5 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: TrueCloudLab/frostfs-node#1597
No description provided.