#1773·perkeep

cmd/pk: use sqlite for havecache?

Author: bradfitzCreated Dec 26, 2025Updated Dec 26, 2025

The client uses leveldb for the HaveCache. Maybe it's time to use modernc sqlite instead?

func NewKvHaveCache(gen string) *KvHaveCache {
	cleanCacheDir()
	fullPath := filepath.Join(osutil.CacheDir(), "pk-put.havecache."+escapeGen(gen)+".leveldb")
	db, err := leveldb.OpenFile(fullPath, nil)
	if err != nil {
		log.Fatalf("Could not create/open new have cache at %v, %v", fullPath, err)
	}

	if err := maybeRunCompaction("HaveCache", db); err != nil {
		log.Fatal(err)
	}

	return &KvHaveCache{
		filename: fullPath,
		db:       db,
	}
}