提交 6cadf698 作者: Juan Batiz-Benet

Merge pull request #1161 from ipfs/blocks-put-exists

blocks: Don't re-Put blocks we already have
...@@ -64,10 +64,11 @@ func (bs *blockstore) Get(k u.Key) (*blocks.Block, error) { ...@@ -64,10 +64,11 @@ func (bs *blockstore) Get(k u.Key) (*blocks.Block, error) {
} }
func (bs *blockstore) Put(block *blocks.Block) error { func (bs *blockstore) Put(block *blocks.Block) error {
// Has is cheaper than
k := block.Key().DsKey() k := block.Key().DsKey()
// Has is cheaper than Put, so see if we already have it
exists, err := bs.datastore.Has(k) exists, err := bs.datastore.Has(k)
if err != nil && exists { if err == nil && exists {
return nil // already stored. return nil // already stored.
} }
return bs.datastore.Put(k, block.Data) return bs.datastore.Put(k, block.Data)
......
...@@ -116,7 +116,6 @@ func main() { ...@@ -116,7 +116,6 @@ func main() {
} }
} }
// ok now handle parse error (which means cli input was wrong, // ok now handle parse error (which means cli input was wrong,
// e.g. incorrect number of args, or nonexistent subcommand) // e.g. incorrect number of args, or nonexistent subcommand)
if parseErr != nil { if parseErr != nil {
......
...@@ -14,8 +14,8 @@ const ( ...@@ -14,8 +14,8 @@ const (
requiredArg = "<%v>" requiredArg = "<%v>"
optionalArg = "[<%v>]" optionalArg = "[<%v>]"
variadicArg = "%v..." variadicArg = "%v..."
shortFlag = "-%v" shortFlag = "-%v"
longFlag = "--%v" longFlag = "--%v"
optionType = "(%v)" optionType = "(%v)"
whitespace = "\r\n\t " whitespace = "\r\n\t "
......
...@@ -40,11 +40,20 @@ Please run the ipfs migration tool before continuing. ...@@ -40,11 +40,20 @@ Please run the ipfs migration tool before continuing.
` + migrationInstructions ` + migrationInstructions
var ( var (
ErrNoRepo = func (path string) error { return fmt.Errorf("no ipfs repo found in '%s'. please run: ipfs init ", path) }
ErrNoVersion = errors.New("no version file found, please run 0-to-1 migration tool.\n" + migrationInstructions) ErrNoVersion = errors.New("no version file found, please run 0-to-1 migration tool.\n" + migrationInstructions)
ErrOldRepo = errors.New("ipfs repo found in old '~/.go-ipfs' location, please run migration tool.\n" + migrationInstructions) ErrOldRepo = errors.New("ipfs repo found in old '~/.go-ipfs' location, please run migration tool.\n" + migrationInstructions)
) )
type NoRepoError struct {
Path string
}
var _ error = NoRepoError{}
func (err NoRepoError) Error() string {
return fmt.Sprintf("no ipfs repo found in '%s'. please run: ipfs init ", err.Path)
}
const ( const (
leveldbDirectory = "datastore" leveldbDirectory = "datastore"
flatfsDirectory = "blocks" flatfsDirectory = "blocks"
...@@ -172,7 +181,7 @@ func checkInitialized(path string) error { ...@@ -172,7 +181,7 @@ func checkInitialized(path string) error {
if isInitializedUnsynced(alt) { if isInitializedUnsynced(alt) {
return ErrOldRepo return ErrOldRepo
} }
return ErrNoRepo(path) return NoRepoError{Path: path}
} }
return nil return nil
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论