Policer drops tombstones from backup container SN #1507

Open
opened 2025-12-28 17:35:40 +00:00 by sami · 0 comments
Owner

Originally created by @cthulhu-rider on GitHub (Sep 19, 2025).

both TOMBSTONE (T) and LOCK (L) are broadcast on PUT

nspcc-dev/neofs-node@eb3ee42f1b/pkg/services/object/put/distributed.go (L177)

then, if there are more container SN than REP rule, Policer on each backup SN detects the redundancy and removes T

unlike T, L is kept (634792077e)

Expected Behavior

L and T behave the same way, i.e. T are kept on all container SN

Current Behavior

T behaves like REGULAR object, i.e. dropped on REP rule excess

Possible Solution

make Policer to handle T like L

Steps to Reproduce (for bugs)

  1. run devenv
  2. create container REP 2
  3. PUT object into it
  4. DELETE the object
  5. see SN log
info	log/log.go:12	local object storage operation	{"shard_id": "2g2djqWgsfayAMWJLt9sBZ", "address": "3XdN8zuk712P53RqNCgh1vN6M6XdpmqjEmtcymPRdQ3c/HPy78BLzFagshQvg859DSYrQfAemqin8fycyPf6FnnaL", "op": "PUT"}
info	log/log.go:12	local object storage operation	{"shard_id": "2g2djqWgsfayAMWJLt9sBZ", "address": "3XdN8zuk712P53RqNCgh1vN6M6XdpmqjEmtcymPRdQ3c/HPy78BLzFagshQvg859DSYrQfAemqin8fycyPf6FnnaL", "op": "metabase PUT"}
info	log/log.go:12	local object storage operation	{"shard_id": "2g2djqWgsfayAMWJLt9sBZ", "address": "3XdN8zuk712P53RqNCgh1vN6M6XdpmqjEmtcymPRdQ3c/4HmW3MbpUnByx3vYb75QzhEvBnNUTjgXoskrdHQSKU3q", "op": "PUT"}
info	log/log.go:12	local object storage operation	{"shard_id": "2g2djqWgsfayAMWJLt9sBZ", "address": "3XdN8zuk712P53RqNCgh1vN6M6XdpmqjEmtcymPRdQ3c/4HmW3MbpUnByx3vYb75QzhEvBnNUTjgXoskrdHQSKU3q", "op": "metabase PUT"}
info	policer/check.go:194	local replica of the object is redundant in the container, removing...	{"component": "Object Policer", "object": "3XdN8zuk712P53RqNCgh1vN6M6XdpmqjEmtcymPRdQ3c/4HmW3MbpUnByx3vYb75QzhEvBnNUTjgXoskrdHQSKU3q"}
info	log/log.go:12	local object storage operation	{"shard_id": "2g2djqWgsfayAMWJLt9sBZ", "address": "3XdN8zuk712P53RqNCgh1vN6M6XdpmqjEmtcymPRdQ3c/4HmW3MbpUnByx3vYb75QzhEvBnNUTjgXoskrdHQSKU3q", "op": "metabase DELETE"}
info	log/log.go:12	local object storage operation	{"shard_id": "2g2djqWgsfayAMWJLt9sBZ", "address": "3XdN8zuk712P53RqNCgh1vN6M6XdpmqjEmtcymPRdQ3c/HPy78BLzFagshQvg859DSYrQfAemqin8fycyPf6FnnaL", "op": "metabase DELETE"}
info	log/log.go:12	local object storage operation	{"shard_id": "2g2djqWgsfayAMWJLt9sBZ", "address": "3XdN8zuk712P53RqNCgh1vN6M6XdpmqjEmtcymPRdQ3c/4HmW3MbpUnByx3vYb75QzhEvBnNUTjgXoskrdHQSKU3q", "op": "DELETE"}
info	log/log.go:12	local object storage operation	{"shard_id": "2g2djqWgsfayAMWJLt9sBZ", "address": "3XdN8zuk712P53RqNCgh1vN6M6XdpmqjEmtcymPRdQ3c/HPy78BLzFagshQvg859DSYrQfAemqin8fycyPf6FnnaL", "op": "DELETE"}

Context

#526

Regression

no

Your Environment

Originally created by @cthulhu-rider on GitHub (Sep 19, 2025). both TOMBSTONE (T) and LOCK (L) are broadcast on PUT https://github.com/nspcc-dev/neofs-node/blob/eb3ee42f1b7acdc372a8929b200947e5c3896ab9/pkg/services/object/put/distributed.go#L177 then, if there are more container SN than REP rule, Policer on each backup SN detects the redundancy and removes T unlike T, L is kept (634792077e74190daec8f5167a12df8668c796e5) ## Expected Behavior L and T behave the same way, i.e. T are kept on all container SN ## Current Behavior T behaves like REGULAR object, i.e. dropped on REP rule excess ## Possible Solution make Policer to handle T like L ## Steps to Reproduce (for bugs) 1. run devenv 2. create container `REP 2` 3. PUT object into it 4. DELETE the object 5. see SN log ```zap info log/log.go:12 local object storage operation {"shard_id": "2g2djqWgsfayAMWJLt9sBZ", "address": "3XdN8zuk712P53RqNCgh1vN6M6XdpmqjEmtcymPRdQ3c/HPy78BLzFagshQvg859DSYrQfAemqin8fycyPf6FnnaL", "op": "PUT"} info log/log.go:12 local object storage operation {"shard_id": "2g2djqWgsfayAMWJLt9sBZ", "address": "3XdN8zuk712P53RqNCgh1vN6M6XdpmqjEmtcymPRdQ3c/HPy78BLzFagshQvg859DSYrQfAemqin8fycyPf6FnnaL", "op": "metabase PUT"} info log/log.go:12 local object storage operation {"shard_id": "2g2djqWgsfayAMWJLt9sBZ", "address": "3XdN8zuk712P53RqNCgh1vN6M6XdpmqjEmtcymPRdQ3c/4HmW3MbpUnByx3vYb75QzhEvBnNUTjgXoskrdHQSKU3q", "op": "PUT"} info log/log.go:12 local object storage operation {"shard_id": "2g2djqWgsfayAMWJLt9sBZ", "address": "3XdN8zuk712P53RqNCgh1vN6M6XdpmqjEmtcymPRdQ3c/4HmW3MbpUnByx3vYb75QzhEvBnNUTjgXoskrdHQSKU3q", "op": "metabase PUT"} info policer/check.go:194 local replica of the object is redundant in the container, removing... {"component": "Object Policer", "object": "3XdN8zuk712P53RqNCgh1vN6M6XdpmqjEmtcymPRdQ3c/4HmW3MbpUnByx3vYb75QzhEvBnNUTjgXoskrdHQSKU3q"} info log/log.go:12 local object storage operation {"shard_id": "2g2djqWgsfayAMWJLt9sBZ", "address": "3XdN8zuk712P53RqNCgh1vN6M6XdpmqjEmtcymPRdQ3c/4HmW3MbpUnByx3vYb75QzhEvBnNUTjgXoskrdHQSKU3q", "op": "metabase DELETE"} info log/log.go:12 local object storage operation {"shard_id": "2g2djqWgsfayAMWJLt9sBZ", "address": "3XdN8zuk712P53RqNCgh1vN6M6XdpmqjEmtcymPRdQ3c/HPy78BLzFagshQvg859DSYrQfAemqin8fycyPf6FnnaL", "op": "metabase DELETE"} info log/log.go:12 local object storage operation {"shard_id": "2g2djqWgsfayAMWJLt9sBZ", "address": "3XdN8zuk712P53RqNCgh1vN6M6XdpmqjEmtcymPRdQ3c/4HmW3MbpUnByx3vYb75QzhEvBnNUTjgXoskrdHQSKU3q", "op": "DELETE"} info log/log.go:12 local object storage operation {"shard_id": "2g2djqWgsfayAMWJLt9sBZ", "address": "3XdN8zuk712P53RqNCgh1vN6M6XdpmqjEmtcymPRdQ3c/HPy78BLzFagshQvg859DSYrQfAemqin8fycyPf6FnnaL", "op": "DELETE"} ``` ## Context #526 ## Regression no ## Your Environment * Version used: https://github.com/nspcc-dev/neofs-node/releases/tag/v0.48.3
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
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
nspcc-dev/neofs-node#1507
No description provided.