1214 Commits

Author SHA1 Message Date
Benjamin Wang
e102fcf8a2
Merge pull request #639 from fuweid/cp-copy-key-before-seek
[1.3] bucket.Put: copy key before seek
2023-12-18 16:53:49 +00:00
Wei Fu
fabe2fb55e *: copy key before comparing during CreateBucket
It's follow-up of #637.

Signed-off-by: Wei Fu <fuweid89@gmail.com>
(cherry picked from commit 62d80260de277168b2d59779bfb03c6ebfda08f4)
Signed-off-by: Wei Fu <fuweid89@gmail.com>
2023-12-18 23:39:03 +08:00
Wei Fu
50ddad0f00 bucket: copy key before Put
Application might change key value after seeking and before real put.
This unexpected behaviour could corrupt database. When users file issue,
maintainers doesn't know application behaviour. It could be caused by
data race. This patch is to prevent such case and save maintainers' time.

Signed-off-by: Wei Fu <fuweid89@gmail.com>
(cherry picked from commit a05ec68aaafcf77e22b9da83bd4069cad8cba39d)
Signed-off-by: Wei Fu <fuweid89@gmail.com>
2023-12-18 23:34:58 +08:00
Wei Fu
b3bdd17686 tests/robustness: add issue72 reproducer
Signed-off-by: Wei Fu <fuweid89@gmail.com>
(cherry picked from commit 1b080787075bb3ec06a414c754da9ef66bda4071)
Signed-off-by: Wei Fu <fuweid89@gmail.com>
2023-12-18 23:33:23 +08:00
Wei Fu
d520aaac7c *: introduce failpoint beforeBucketPut
Signed-off-by: Wei Fu <fuweid89@gmail.com>
(cherry picked from commit 324df9cd264b7f2c4504ea61758a4ea89373e4ce)
Signed-off-by: Wei Fu <fuweid89@gmail.com>
2023-12-18 23:31:06 +08:00
Evgenii Stratonikov
0a521c0b48 bucket: allow to allocate key on stack in Put()
As per `go build -gcflags -m ./... 2>&1`:

Old behaviour:
```
./bucket.go:148:31: leaking param: key
./bucket.go:192:42: leaking param: key
./bucket.go:271:22: leaking param: key
```

Now:
```
./bucket.go:148:31: key does not escape
./bucket.go:192:42: key does not escape
./bucket.go:271:22: key does not escape
```

Signed-off-by: Evgenii Stratonikov <fyfyrchik@runbox.com>
(cherry picked from commit 71a59caf31ca42c3deb8967ceee0a4804d220bf4)
Signed-off-by: Wei Fu <fuweid89@gmail.com>
2023-12-14 08:34:43 +08:00
Marek Siarkowicz
defa564feb
Merge pull request #600 from Richabanker/release-1.3
Backport concurrent_test.go to release-1.3 branch
2023-11-08 05:58:11 +01:00
Richa Banker
fe23f523fd Backport concurrent_test.go to release-1.3 branch
Signed-off-by: Richa Banker <richabanker@google.com>
2023-11-07 15:43:19 -08:00
Benjamin Wang
42a914d8be
Merge pull request #586 from ahrtr/1.3_64bit_align_20231025
[1.3] Ensure the stats is always 64bit aligned
v1.3.8
2023-10-25 20:10:10 +01:00
Benjamin Wang
f9d290fdfd ensure the stats is always 64bit aligned
The first word in an allocated struct can be relied upon to be
64-bit aligned. Refer to https://pkg.go.dev/sync/atomic#pkg-note-BUG.

Signed-off-by: Benjamin Wang <wachao@vmware.com>
2023-10-25 16:19:38 +01:00
Benjamin Wang
4a1773274a
Merge pull request #444 from jmhbnz/backport-failpoints-injection-2
[1.3] Backport perform unmap when mlock fails or both meta pages corrupted
2023-03-31 06:20:08 +08:00
James Blair
95acc50921
Backport add test cases to simulate mlock failure.
Signed-off-by: James Blair <mail@jamesblair.net>
2023-03-30 21:54:14 +13:00
James Blair
7a13798511
Backport perform unmap when failing to mlock or both meta pages corrupted.
Signed-off-by: James Blair <mail@jamesblair.net>
2023-03-30 21:54:05 +13:00
Benjamin Wang
ad36005fa6
Merge pull request #439 from jmhbnz/backport-failpoints-injection
[1.3] Backport change to error handling logic
2023-03-29 06:40:49 +08:00
James Blair
8165a40522
Backport change to error handling logic in db.close().
Signed-off-by: James Blair <mail@jamesblair.net>
2023-03-26 11:50:05 +13:00
Benjamin Wang
e4e06d2245 update the usage of surgery command
Signed-off-by: Benjamin Wang <wachao@vmware.com>
2023-02-18 10:36:42 +08:00
Josh Rickmar
110891517d Avoid syscall.Syscall use on OpenBSD
Syscall numbers are not stable on OpenBSD, and hardcoding the msync
syscall number will break bbolt on future versions of OpenBSD.  Use
the libc wrapper provided by golang.org/x/sys/unix instead.

Signed-off-by: Josh Rickmar <jrick@zettaport.com>
2023-02-16 10:25:51 +08:00
Benjamin Wang
da2f2a53f6 remove changelog from release-1.3
Signed-off-by: Benjamin Wang <wachao@vmware.com>
v1.3.7
2023-01-31 05:21:49 +08:00
Benjamin Wang
fc361799ce added summary on the changes in v1.3.7
Signed-off-by: Benjamin Wang <wachao@vmware.com>
2023-01-29 20:51:54 +08:00
Benjamin Wang
1651561091 Update changelog-1.3 to prepare for v1.3.7 release
Signed-off-by: Benjamin Wang <wachao@vmware.com>
2023-01-29 20:51:54 +08:00
Benjamin Wang
35c4569bf9 revert the signature of tx.Check and add tx.CheckWithStringer
Signed-off-by: Benjamin Wang <wachao@vmware.com>
2023-01-29 19:53:07 +08:00
dependabot[bot]
afa8b89da8 Bump golangci/golangci-lint-action from 3.3.1 to 3.4.0
Bumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action) from 3.3.1 to 3.4.0.
- [Release notes](https://github.com/golangci/golangci-lint-action/releases)
- [Commits](0ad9a0988b...08e2f20817)

---
updated-dependencies:
- dependency-name: golangci/golangci-lint-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-29 10:58:20 +08:00
dependabot[bot]
046c7b9e5b Bump golang.org/x/sys from 0.3.0 to 0.4.0
Bumps [golang.org/x/sys](https://github.com/golang/sys) from 0.3.0 to 0.4.0.
- [Release notes](https://github.com/golang/sys/releases)
- [Commits](https://github.com/golang/sys/compare/v0.3.0...v0.4.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sys
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-29 10:50:50 +08:00
Marek Siarkowicz
613ea3dffa Add support for using sha256 sum for obfuscating values
Signed-off-by: Marek Siarkowicz <siarkowicz@google.com>
2023-01-28 07:08:58 +08:00
Benjamin Wang
6ee9f1d9a7
Merge pull request #389 from ahrtr/surgery_write_empty_page_20230120
Add `surgery clear-page` command
2023-01-21 07:09:25 +08:00
Benjamin Wang
834868d65d add 'surgery clear-page' command
Signed-off-by: Benjamin Wang <wachao@vmware.com>
2023-01-20 18:46:07 +08:00
Piotr Tabor
774edab623
Merge pull request #387 from uvletter/fix_grow
fix db.grow is unusable when NoFreelistSync is on
2023-01-19 19:21:15 +01:00
luv
460b77759e fix db.grow is unusable when NoFreelistSync is on
Signed-off-by: tian <skylypig@gmail.com>
2023-01-19 22:33:51 +08:00
Benjamin Wang
f9051642f7
Merge pull request #383 from ahrtr/failpoint_20230113
Support injecting failpoints to mimic syscall errors
2023-01-19 19:43:10 +08:00
Benjamin Wang
1508097501
Merge pull request #388 from ahrtr/surgery_copy_page_20230118
Add `bbolt surgery copy-page` command
2023-01-19 19:07:05 +08:00
Benjamin Wang
d89daae9d5 add 'surgery copy-page' command
Signed-off-by: Benjamin Wang <wachao@vmware.com>
2023-01-18 08:40:57 +08:00
Benjamin Wang
8c794d23aa
Merge pull request #386 from ahrtr/unexport_cmds_20230117
unexport all bbolt command structs
2023-01-18 08:12:53 +08:00
Benjamin Wang
645d5e9ea9 unexport all bbolt command structs
Signed-off-by: Benjamin Wang <wachao@vmware.com>
2023-01-17 15:07:15 +08:00
Benjamin Wang
f10bad3c8f support injecting failpoints and add failpoint github workflow
Implemented first demo "TestFailpoint_MapFail"

Signed-off-by: Benjamin Wang <wachao@vmware.com>
2023-01-16 20:32:16 +08:00
Benjamin Wang
6652d8269e
Merge pull request #385 from ahrtr/add_surgery_revert_meta_page_20230116
Add `bbolt surgery revert-meta-page` command
2023-01-16 20:30:24 +08:00
Benjamin Wang
ff467f2ff5 addresed review comments
Signed-off-by: Benjamin Wang <wachao@vmware.com>
2023-01-16 19:08:53 +08:00
Benjamin Wang
8df4afc24b add 'bbolt surgery revert-meta-page' command
Signed-off-by: Benjamin Wang <wachao@vmware.com>
2023-01-16 18:32:41 +08:00
Benjamin Wang
da3f312335
Merge pull request #384 from ahrtr/base_command_20230116
move all common fields into baseCommand
2023-01-16 18:23:17 +08:00
Benjamin Wang
376af859cb move all common fields into baseCommand
Signed-off-by: Benjamin Wang <wachao@vmware.com>
2023-01-16 14:58:01 +08:00
Piotr Tabor
51370e425a
Merge pull request #225 from ptabor/extend_checker2
Recursive checker implementation.
2023-01-14 12:03:10 +01:00
Piotr Tabor
eb0deb9550 Refactor common code within key-order checker.
Signed-off-by: Piotr Tabor <ptab@google.com>
2023-01-13 19:14:45 +01:00
Piotr Tabor
80edaf14f0 Rename: pgid pgid => pgId pgid to avoid confusion.
Signed-off-by: Piotr Tabor <ptab@google.com>
2023-01-13 19:14:45 +01:00
Piotr Tabor
f16e2522ce Address review comments.
Signed-off-by: Piotr Tabor <ptab@google.com>
2023-01-13 19:14:45 +01:00
Piotr Tabor
ee27a544ca Recursive checker: Final touches.
Signed-off-by: Piotr Tabor <ptab@google.com>
2023-01-13 19:14:45 +01:00
Piotr Tabor
710c33fe89 Tests for recursive checker (working on a corrupted files).
Signed-off-by: Piotr Tabor <ptab@google.com>
2023-01-13 19:14:45 +01:00
Piotr Tabor
0c8d75db1e Recursive checker implementation.
Recursive checker confirms database consistency with respect to b-tree
key order constraints:
  - keys on pages must be sorted
  - keys on children pages are between 2 consecutive keys on parent
branch page).

Signed-off-by: Piotr Tabor <ptab@google.com>
2023-01-13 19:14:45 +01:00
Piotr Tabor
0ccb16dc02 Mechanical move of Check functions to tx_check.go file.
Signed-off-by: Piotr Tabor <ptab@google.com>
2023-01-13 19:14:45 +01:00
Benjamin Wang
ece0e3dec2
Merge pull request #362 from ahrtr/protect_rollback_20221221
Add protection when `mmap` somehow fails
2023-01-13 06:45:07 +08:00
Benjamin Wang
eabffad75a add protection when mmap somehow fails
Signed-off-by: Benjamin Wang <wachao@vmware.com>
2023-01-12 07:58:02 +08:00
Benjamin Wang
63d0cb428d cleanup data and dataaz when unmapping db on Windows platform
Signed-off-by: Benjamin Wang <wachao@vmware.com>
2023-01-12 07:17:08 +08:00