mirror of https://github.com/etcd-io/bbolt.git
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
parent
7cf280547b
commit
b027e485ce
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue