Skip to content

Commit

Permalink
cmd: print a warning to abandon the freelist if present in 'surgery c…
Browse files Browse the repository at this point in the history
…opy-page' command

Signed-off-by: Benjamin Wang <[email protected]>
  • Loading branch information
ahrtr committed May 5, 2023
1 parent 7cf2805 commit b027e48
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 3 deletions.
12 changes: 9 additions & 3 deletions cmd/bbolt/command_surgery_cobra.go
Original file line number Diff line number Diff line change
Expand Up @@ -119,8 +119,14 @@ func surgeryCopyPageFunc(cmd *cobra.Command, args []string) error {
return fmt.Errorf("copy-page command failed: %w", err)
}

fmt.Fprintf(os.Stdout, "WARNING: the free list might have changed.\n")
fmt.Fprintf(os.Stdout, "Please consider executing `./bbolt surgery abandon-freelist ...`\n")
meta, err := readMetaPage(srcDBPath)
if err != nil {
return err
}
if meta.IsFreelistPersisted() {
fmt.Fprintf(os.Stdout, "WARNING: the free list might have changed.\n")
fmt.Fprintf(os.Stdout, "Please consider executing `./bbolt surgery abandon-freelist ...`\n")
}

fmt.Fprintf(os.Stdout, "The page %d was successfully copied to page %d\n", surgerySourcePageId, surgeryDestinationPageId)
return nil
Expand Down Expand Up @@ -267,7 +273,7 @@ func surgeryFreelistRebuildFunc(cmd *cobra.Command, args []string) error {
if err != nil {
return err
}
if meta.Freelist() != common.PgidNoFreelist {
if meta.IsFreelistPersisted() {
return ErrSurgeryFreelistAlreadyExist
}

Expand Down
4 changes: 4 additions & 0 deletions internal/common/meta.go
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,10 @@ func (m *Meta) SetFreelist(v Pgid) {
m.freelist = v
}

func (m *Meta) IsFreelistPersisted() bool {
return m.freelist != PgidNoFreelist
}

func (m *Meta) Pgid() Pgid {
return m.pgid
}
Expand Down

0 comments on commit b027e48

Please sign in to comment.