Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release/v0.43.0 #2920

Merged
merged 4 commits into from
Aug 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 18 additions & 7 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,20 @@ Changelog for NeoFS Node

## [Unreleased]

### Added

### Fixed

### Changed

### Removed

### Updated

### Updating from v0.43.0

## [0.43.0] - 2024-08-20 - Jukdo

### Added
- Indexes inspection command to neofs-lens (#2882)
- Add objects sanity checker to neofs-lens (#2506)
Expand All @@ -15,23 +29,19 @@ Changelog for NeoFS Node
- Control service's Drop call does not clean metabase (#2822)
- It was impossible to specify memory amount as "1b" (one byte) in config, default was used instead (#2899)
- Container session token's lifetime was not checked (#2898)
- ACL checks for split objects could be forced by a node than might lack access (#2909)
- ACL checks for split objects could be forced by a node than might lack access (#2909)

### Changed
- neofs-cli allows several objects deletion at a time (#2774)
- `ObjectService.Put` server of in-container node places objects using new `ObjectService.Replicate` RPC (#2802)
- `ObjectService`'s `Put` and `Replicate` RPC handlers cache up to 1000 lists of container nodes (#2892)
- `ObjectService`'s `Search` and `Replicate` RPC handlers cache up to 1000 lists of container nodes (#2892)
- Default max_traceable_blocks Morph setting lowered to 17280 from 2102400 (#2897)
- `ObjectService`'s `Get`/`Head`/`GetRange` RPC handlers cache up to 10K lists of per-object sorted container nodes (#2896)

### Removed

### Updated
- neofs-contract dependency to 0.20.0 (#2872)
- NeoGo dependency to 0.106.3 (#2872)

### Updating from v0.42.1

## [0.42.1] - 2024-06-13

A tiny update that adds compatibility with the Neo N3 Domovoi hardfork.
Expand Down Expand Up @@ -2059,7 +2069,8 @@ NeoFS-API v2.0 support and updated brand-new storage node application.

First public review release.

[Unreleased]: https://github.com/nspcc-dev/neofs-node/compare/v0.42.1...master
[Unreleased]: https://github.com/nspcc-dev/neofs-node/compare/v0.43.0...master
[0.43.0]: https://github.com/nspcc-dev/neofs-node/compare/v0.42.1...v0.43.0
[0.42.1]: https://github.com/nspcc-dev/neofs-node/compare/v0.42.0...v0.42.1
[0.42.0]: https://github.com/nspcc-dev/neofs-node/compare/v0.41.1...v0.42.0
[0.41.1]: https://github.com/nspcc-dev/neofs-node/compare/v0.41.0...v0.41.1
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.42.1
0.43.0
10 changes: 5 additions & 5 deletions pkg/innerring/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -305,17 +305,17 @@ func parseConfigUint64Condition(v *viper.Viper, key, desc string, cond func(uint
return res, nil
}

func parseConfigUint64Range(v *viper.Viper, key, desc string, min, max uint64) (uint64, error) {
func parseConfigUint64Range(v *viper.Viper, key, desc string, minV, maxV uint64) (uint64, error) {
return parseConfigUint64Condition(v, key, desc, func(val uint64) error {
if val < min || val > max {
return fmt.Errorf("out of allowable range [%d:%d]", min, max)
if val < minV || val > maxV {
return fmt.Errorf("out of allowable range [%d:%d]", minV, maxV)
}
return nil
})
}

func parseConfigUint64Max(v *viper.Viper, key, desc string, max uint64) (uint64, error) {
return parseConfigUint64Range(v, key, desc, 0, max)
func parseConfigUint64Max(v *viper.Viper, key, desc string, maxV uint64) (uint64, error) {
return parseConfigUint64Range(v, key, desc, 0, maxV)
}

func parseConfigDurationCondition(v *viper.Viper, key, desc string, cond func(time.Duration) error) (time.Duration, error) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,21 +25,21 @@ type objectDesc struct {
storageID []byte
}

func TestAll(t *testing.T, cons Constructor, min, max uint64) {
func TestAll(t *testing.T, cons Constructor, minSize, maxSize uint64) {
t.Run("get", func(t *testing.T) {
TestGet(t, cons, min, max)
TestGet(t, cons, minSize, maxSize)
})
t.Run("get range", func(t *testing.T) {
TestGetRange(t, cons, min, max)
TestGetRange(t, cons, minSize, maxSize)
})
t.Run("delete", func(t *testing.T) {
TestDelete(t, cons, min, max)
TestDelete(t, cons, minSize, maxSize)
})
t.Run("exists", func(t *testing.T) {
TestExists(t, cons, min, max)
TestExists(t, cons, minSize, maxSize)
})
t.Run("iterate", func(t *testing.T) {
TestIterate(t, cons, min, max)
TestIterate(t, cons, minSize, maxSize)
})
}

Expand All @@ -49,11 +49,11 @@ func TestInfo(t *testing.T, cons Constructor, expectedType string, expectedPath
require.Equal(t, expectedPath, s.Path())
}

func prepare(t *testing.T, count int, s common.Storage, min, max uint64) []objectDesc {
func prepare(t *testing.T, count int, s common.Storage, minSize, maxSize uint64) []objectDesc {
objects := make([]objectDesc, count)

for i := range objects {
objects[i].obj = NewObject(min + uint64(rand.Intn(int(max-min+1)))) // not too large
objects[i].obj = NewObject(minSize + uint64(rand.Intn(int(maxSize-minSize+1)))) // not too large
objects[i].addr = objectCore.AddressOf(objects[i].obj)
objects[i].raw = objects[i].obj.Marshal()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@ import (

// TestControl checks correctness of a read-only mode.
// cons must return a storage which is NOT opened.
func TestControl(t *testing.T, cons Constructor, min, max uint64) {
func TestControl(t *testing.T, cons Constructor, minSize, maxSize uint64) {
s := cons(t)
require.NoError(t, s.Open(false))
require.NoError(t, s.Init())

objects := prepare(t, 10, s, min, max)
objects := prepare(t, 10, s, minSize, maxSize)
require.NoError(t, s.Close())

require.NoError(t, s.Open(true))
Expand All @@ -32,7 +32,7 @@ func TestControl(t *testing.T, cons Constructor, min, max uint64) {

t.Run("put fails", func(t *testing.T) {
var prm common.PutPrm
prm.Object = NewObject(min + uint64(rand.Intn(int(max-min+1))))
prm.Object = NewObject(minSize + uint64(rand.Intn(int(maxSize-minSize+1))))
prm.Address = objectCore.AddressOf(prm.Object)

_, err := s.Put(prm)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ import (
"github.com/stretchr/testify/require"
)

func TestDelete(t *testing.T, cons Constructor, min, max uint64) {
func TestDelete(t *testing.T, cons Constructor, minSize, maxSize uint64) {
s := cons(t)
require.NoError(t, s.Open(false))
require.NoError(t, s.Init())
t.Cleanup(func() { require.NoError(t, s.Close()) })

objects := prepare(t, 4, s, min, max)
objects := prepare(t, 4, s, minSize, maxSize)

t.Run("delete non-existent", func(t *testing.T) {
var prm common.DeletePrm
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ import (
"github.com/stretchr/testify/require"
)

func TestExists(t *testing.T, cons Constructor, min, max uint64) {
func TestExists(t *testing.T, cons Constructor, minSize, maxSize uint64) {
s := cons(t)
require.NoError(t, s.Open(false))
require.NoError(t, s.Init())
t.Cleanup(func() { require.NoError(t, s.Close()) })

objects := prepare(t, 1, s, min, max)
objects := prepare(t, 1, s, minSize, maxSize)

t.Run("missing object", func(t *testing.T) {
prm := common.ExistsPrm{Address: oidtest.Address()}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ import (
"github.com/stretchr/testify/require"
)

func TestGet(t *testing.T, cons Constructor, min, max uint64) {
func TestGet(t *testing.T, cons Constructor, minSize, maxSize uint64) {
s := cons(t)
require.NoError(t, s.Open(false))
require.NoError(t, s.Init())
t.Cleanup(func() { require.NoError(t, s.Close()) })

objects := prepare(t, 2, s, min, max)
objects := prepare(t, 2, s, minSize, maxSize)

t.Run("missing object", func(t *testing.T) {
gPrm := common.GetPrm{Address: oidtest.Address()}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ import (
"github.com/stretchr/testify/require"
)

func TestGetRange(t *testing.T, cons Constructor, min, max uint64) {
func TestGetRange(t *testing.T, cons Constructor, minSize, maxSize uint64) {
s := cons(t)
require.NoError(t, s.Open(false))
require.NoError(t, s.Init())
t.Cleanup(func() { require.NoError(t, s.Close()) })

objects := prepare(t, 1, s, min, max)
objects := prepare(t, 1, s, minSize, maxSize)

t.Run("missing object", func(t *testing.T) {
gPrm := common.GetRangePrm{Address: oidtest.Address()}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ import (
"github.com/stretchr/testify/require"
)

func TestIterate(t *testing.T, cons Constructor, min, max uint64) {
func TestIterate(t *testing.T, cons Constructor, minSize, maxSize uint64) {
s := cons(t)
require.NoError(t, s.Open(false))
require.NoError(t, s.Init())
t.Cleanup(func() { require.NoError(t, s.Close()) })

objects := prepare(t, 10, s, min, max)
objects := prepare(t, 10, s, minSize, maxSize)

// Delete random object to ensure it is not iterated over.
const delID = 2
Expand Down
4 changes: 2 additions & 2 deletions pkg/local_object_storage/engine/evacuate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -128,10 +128,10 @@ func TestEvacuateShard(t *testing.T) {
func TestEvacuateNetwork(t *testing.T) {
var errReplication = errors.New("handler error")

acceptOneOf := func(objects []*objectSDK.Object, max int) func(oid.Address, *objectSDK.Object) error {
acceptOneOf := func(objects []*objectSDK.Object, maxIter int) func(oid.Address, *objectSDK.Object) error {
var n int
return func(addr oid.Address, obj *objectSDK.Object) error {
if n == max {
if n == maxIter {
return errReplication
}

Expand Down
4 changes: 2 additions & 2 deletions pkg/morph/client/notary.go
Original file line number Diff line number Diff line change
Expand Up @@ -637,8 +637,8 @@ func (c *Client) notaryTxValidationLimit() (uint32, error) {
return 0, fmt.Errorf("can't get current blockchain height: %w", err)
}

min := bc + c.notary.txValidTime
rounded := (min/c.notary.roundTime + 1) * c.notary.roundTime
minIndex := bc + c.notary.txValidTime
rounded := (minIndex/c.notary.roundTime + 1) * c.notary.roundTime

return rounded, nil
}
Expand Down
6 changes: 3 additions & 3 deletions pkg/services/audit/auditor/pdp.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,11 +90,11 @@ func (c *Context) splitPayload(id oid.ID) []uint64 {

for i := uint64(0); i < hashRangeNumber; i++ {
if i < hashRangeNumber-1 {
max := size - prev - (hashRangeNumber - i)
if max == 0 {
maxL := size - prev - (hashRangeNumber - i)
if maxL == 0 {
prev++
} else {
prev += rand.Uint64()%max + 1
prev += rand.Uint64()%maxL + 1
}
} else {
prev = size
Expand Down
Loading