25 Commits

Author SHA1 Message Date
Benjamin Wang
b91d901b74 test: perform check in view(readonly) mode
Signed-off-by: Benjamin Wang <wachao@vmware.com>
2023-03-20 11:00:38 +08:00
Benjamin Wang
15d561e54f move inode operations(read/write) into package internal/common
Signed-off-by: Benjamin Wang <wachao@vmware.com>
2023-03-15 08:44:19 +08:00
Benjamin Wang
a3a9877de6 encapsulate the logic of checking the page type
Signed-off-by: Benjamin Wang <wachao@vmware.com>
2023-03-08 10:47:59 +08:00
Benjamin Wang
852b1df32f refactor: move inode to internal/common package
Signed-off-by: Benjamin Wang <wachao@vmware.com>
2023-03-04 04:22:09 +08:00
Benjamin Wang
ea511567eb refactor both bolt and guts_cli based on the common package
Signed-off-by: Benjamin Wang <wachao@vmware.com>
2023-03-04 04:22:09 +08:00
Benjamin Wang
34595e7231 create a common package
Points:
1. There are lots of duplicated definitions between bolt and
   guts_cli, which is definitely not good.
2. The implementation in guts_cli also has issue, please
   refer to https://github.com/etcd-io/bbolt/issues/391.
   This refactoring can fix the issue.

Signed-off-by: Benjamin Wang <wachao@vmware.com>
2023-03-04 04:22:09 +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
Benjamin Wang
834868d65d add 'surgery clear-page' command
Signed-off-by: Benjamin Wang <wachao@vmware.com>
2023-01-20 18:46:07 +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
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
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
Benjamin Wang
a938f00609
Merge pull request #373 from fuweid/fix-213
fix data race on tx.Stats
2023-01-05 06:46:28 +08:00
Wei Fu
dd4458ce3a TxStats: provides Getter/Inc functions
Signed-off-by: Wei Fu <fuweid89@gmail.com>
2023-01-04 20:06:51 +08:00
Piotr Tabor
bf9b712eb2 Add Test whether XRay finds path to a bucket as well.
Signed-off-by: Piotr Tabor <ptab@google.com>
2023-01-03 19:02:55 +01:00
Piotr Tabor
9f841cc213 Fix goimports and scripts.
Signed-off-by: Piotr Tabor <ptab@google.com>
2023-01-03 19:02:55 +01:00
Piotr Tabor
8961219de8 Execution of ./scripts/fix.sh
Signed-off-by: Piotr Tabor <ptab@google.com>
2022-12-30 12:59:02 +01:00
Piotr Tabor
9a6782574d Add library that allows to perform low-level changes/inspection on bbolt file.
For sake of usage it in tests and CLI (so internal).

Signed-off-by: Piotr Tabor <ptab@google.com>
2022-12-30 12:59:02 +01:00
Piotr Tabor
fc83b20869 Factor out low-lever access to pages out of CLI into internal/guts.
Long-term guts_cli should get replaced by the main code from bbolt main code.

Signed-off-by: Piotr Tabor <ptab@google.com>
2022-12-28 16:53:03 +01:00
Piotr Tabor
37d72cc1cd Use require.NoError in btesting.go
Signed-off-by: Piotr Tabor <ptab@google.com>
2022-12-28 15:18:46 +01:00
Piotr Tabor
93380c59e8 testing: group (reorder) imports.
Signed-off-by: Piotr Tabor <ptab@google.com>
2022-12-28 15:18:46 +01:00
Piotr Tabor
26cc5e3e8b Tests: Migrate from test DB to btesting.DB
Signed-off-by: Piotr Tabor <ptab@google.com>
2022-12-28 15:18:46 +01:00
Piotr Tabor
46cdbf5b6c Factor out (bolt)testing library.
Thanks to putting it outside the bbolt_test package it can be used to test other packages.
The replacement of the bbolt_test variant inlined in db_test.go is to be performed in a follow up PR.

Signed-off-by: Piotr Tabor <ptab@google.com>
2022-12-28 15:18:46 +01:00