cmd: print a warning to abandon the freelist if present in 'surgery copy-page' command

Signed-off-by: Benjamin Wang <wachao@vmware.com>
pull/483/head
Benjamin Wang 2023-05-06 06:25:23 +08:00
parent 7cf280547b
commit b027e485ce
2 changed files with 13 additions and 3 deletions

View File

@ -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
@ -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
}

View File

@ -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
}