Skip to content

Instantly share code, notes, and snippets.

@mschoch
Created March 10, 2020 14:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mschoch/2101e4f5a434b6c1c818218a67952cb6 to your computer and use it in GitHub Desktop.
Save mschoch/2101e4f5a434b6c1c818218a67952cb6 to your computer and use it in GitHub Desktop.
reproduce deleted files still open (as shown by lsof)
package main
import (
"github.com/blevesearch/bleve"
"github.com/blevesearch/bleve/index/scorch"
"log"
)
func main() {
m := bleve.NewIndexMapping()
idx, err := bleve.NewUsing("rollback.bleve", m, "scorch", "scorch", nil)
if err != nil {
log.Fatal(err)
}
err = idx.Index("1", map[string]string{
"name": "1",
})
if err != nil{
log.Fatal(err)
}
err = idx.Index("2", map[string]string{
"name": "1",
})
if err != nil{
log.Fatal(err)
}
// originally i had a sleep here, but removing it
// was key to demonstrating the issue
//log.Printf("sleeping for 5")
//time.Sleep(5*time.Second)
idxInternal, _, err := idx.Advanced()
if err != nil {
log.Fatal(err)
}
idxScorch := idxInternal.(*scorch.Scorch)
rps, err := idxScorch.RollbackPoints()
if err != nil {
log.Fatal(err)
}
log.Printf("rps: %v", rps)
log.Printf("starting rollback")
err = idxScorch.Rollback(rps[0])
if err != nil {
log.Fatal(err)
}
log.Printf("finished rollback")
log.Printf("waiting forever")
select {}
}
@mschoch
Copy link
Author

mschoch commented Mar 10, 2020

Run the program, it will say running forever, in another terminal, find the pid, and observe that segments 2 and 3 are still open, but in the DEL state, looking at the file system they are gone.

$ lsof -p 20343
COMMAND     PID    USER   FD      TYPE DEVICE SIZE/OFF     NODE NAME
rollbacke 20343 mschoch  cwd       DIR  259,5     4096  6660235 /home/mschoch/dev/go/src/github.com/mschoch/rollbacker
rollbacke 20343 mschoch  rtd       DIR  259,5     4096        2 /
rollbacke 20343 mschoch  txt       REG  259,5 14479706 14943466 /home/mschoch/dev/go/src/github.com/mschoch/rollbacker/rollbacker
rollbacke 20343 mschoch  mem-W     REG  259,5    65536  6591775 /home/mschoch/dev/go/src/github.com/mschoch/rollbacker/rollback.bleve/store/root.bolt
rollbacke 20343 mschoch  mem       REG  259,5  1996592 16254016 /lib/x86_64-linux-gnu/libc-2.28.so
rollbacke 20343 mschoch  mem       REG  259,5   149696 16257717 /lib/x86_64-linux-gnu/libpthread-2.28.so
rollbacke 20343 mschoch  mem       REG  259,5      432  6592222 /home/mschoch/dev/go/src/github.com/mschoch/rollbacker/rollback.bleve/store/000000000004.zap
rollbacke 20343 mschoch  DEL       REG  259,5           6592210 /home/mschoch/dev/go/src/github.com/mschoch/rollbacker/rollback.bleve/store/000000000003.zap
rollbacke 20343 mschoch  DEL       REG  259,5           6592207 /home/mschoch/dev/go/src/github.com/mschoch/rollbacker/rollback.bleve/store/000000000002.zap
rollbacke 20343 mschoch  mem       REG  259,5   174936 16254012 /lib/x86_64-linux-gnu/ld-2.28.so
rollbacke 20343 mschoch    0u      CHR 136,10      0t0       13 /dev/pts/10
rollbacke 20343 mschoch    1u      CHR 136,10      0t0       13 /dev/pts/10
rollbacke 20343 mschoch    2u      CHR 136,10      0t0       13 /dev/pts/10
rollbacke 20343 mschoch    3uW     REG  259,5    65536  6591775 /home/mschoch/dev/go/src/github.com/mschoch/rollbacker/rollback.bleve/store/root.bolt
rollbacke 20343 mschoch    4u  a_inode   0,13        0    10754 [eventpoll]
rollbacke 20343 mschoch    7r      REG  259,5      432  6592222 /home/mschoch/dev/go/src/github.com/mschoch/rollbacker/rollback.bleve/store/000000000004.zap
rollbacke 20343 mschoch    8r      REG  259,5      392  6592207 /home/mschoch/dev/go/src/github.com/mschoch/rollbacker/rollback.bleve/store/000000000002.zap (deleted)
rollbacke 20343 mschoch    9r      REG  259,5      392  6592210 /home/mschoch/dev/go/src/github.com/mschoch/rollbacker/rollback.bleve/store/000000000003.zap (deleted)
$ ls ~/dev/go/src/github.com/mschoch/rollbacker/rollback.bleve/store
000000000004.zap  root.bolt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment