You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							39 lines
						
					
					
						
							828 B
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							39 lines
						
					
					
						
							828 B
						
					
					
				| package main | |
| 
 | |
| import ( | |
| 	"flag" | |
| 	"log" | |
| 
 | |
| 	"github.com/syndtr/goleveldb/leveldb" | |
| 	"github.com/syndtr/goleveldb/leveldb/errors" | |
| 	"github.com/syndtr/goleveldb/leveldb/opt" | |
| 	"github.com/syndtr/goleveldb/leveldb/util" | |
| ) | |
| 
 | |
| var ( | |
| 	dir = flag.String("dir", ".", "data directory to store leveldb files") | |
| ) | |
| 
 | |
| func main() { | |
| 
 | |
| 	flag.Parse() | |
| 
 | |
| 	opts := &opt.Options{ | |
| 		BlockCacheCapacity:            32 * 1024 * 1024, // default value is 8MiB | |
| 		WriteBuffer:                   16 * 1024 * 1024, // default value is 4MiB | |
| 		CompactionTableSizeMultiplier: 10, | |
| 		OpenFilesCacheCapacity:        -1, | |
| 	} | |
| 
 | |
| 	db, err := leveldb.OpenFile(*dir, opts) | |
| 	if errors.IsCorrupted(err) { | |
| 		db, err = leveldb.RecoverFile(*dir, opts) | |
| 	} | |
| 	if err != nil { | |
| 		log.Fatal(err) | |
| 	} | |
| 	defer db.Close() | |
| 	if err := db.CompactRange(util.Range{}); err != nil { | |
| 		log.Fatal(err) | |
| 	} | |
| }
 |