Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
c419a489
提交
c419a489
authored
4月 09, 2015
作者:
Jeromy
提交者:
Juan Batiz-Benet
4月 20, 2015
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
make ipfs understand the new migration
上级
96a22c5b
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
41 行增加
和
30 行删除
+41
-30
daemon.go
cmd/ipfs/daemon.go
+5
-10
fsrepo.go
repo/fsrepo/fsrepo.go
+35
-19
main.go
repo/fsrepo/migrations/1-to-2/main.go
+1
-1
没有找到文件。
cmd/ipfs/daemon.go
浏览文件 @
c419a489
...
...
@@ -103,21 +103,16 @@ func daemonFunc(req cmds.Request, res cmds.Response) {
}
}
// To ensure that IPFS has been initialized, fetch the config. Do this
// _before_ acquiring the daemon lock so the user gets an appropriate error
// message.
// NB: It's safe to read the config without the daemon lock, but not safe
// to write.
ctx
:=
req
.
Context
()
cfg
,
err
:=
ctx
.
GetConfig
()
// acquire the repo lock _before_ constructing a node. we need to make
// sure we are permitted to access the resources (datastore, etc.)
repo
,
err
:=
fsrepo
.
Open
(
req
.
Context
()
.
ConfigRoot
)
if
err
!=
nil
{
res
.
SetError
(
err
,
cmds
.
ErrNormal
)
return
}
// acquire the repo lock _before_ constructing a node. we need to make
// sure we are permitted to access the resources (datastore, etc.)
repo
,
err
:=
fsrepo
.
Open
(
req
.
Context
()
.
ConfigRoot
)
ctx
:=
req
.
Context
()
cfg
,
err
:=
ctx
.
GetConfig
()
if
err
!=
nil
{
res
.
SetError
(
err
,
cmds
.
ErrNormal
)
return
...
...
repo/fsrepo/fsrepo.go
浏览文件 @
c419a489
...
...
@@ -4,10 +4,10 @@ import (
"errors"
"fmt"
"io"
"io/ioutil"
"os"
"path"
"strconv"
"strings"
"sync"
ds
"github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore"
...
...
@@ -28,8 +28,13 @@ import (
ds2
"github.com/ipfs/go-ipfs/util/datastore2"
)
// version number that we are currently expecting to see
var
RepoVersion
=
"2"
var
incorrectRepoFormat
=
"Repo has incorrect version: '%s'
\n
Program version is: '%s'
\n
Please run the appropriate migration tool before continuing"
var
ErrNoVersion
=
errors
.
New
(
"version check failed, no version file found, please run 0-to-1 migration tool."
)
const
(
leveldbDirectory
=
"datastore"
flatfsDirectory
=
"blocks"
...
...
@@ -87,13 +92,14 @@ func open(repoPath string) (repo.Repo, error) {
packageLock
.
Lock
()
defer
packageLock
.
Unlock
()
expPath
,
err
:=
u
.
TildeExpansion
(
path
.
Clean
(
repoPath
)
)
r
,
err
:=
newFSRepo
(
repoPath
)
if
err
!=
nil
{
return
nil
,
err
}
r
:=
&
FSRepo
{
path
:
expPath
,
// Check if its initialized
if
err
:=
checkInitialized
(
r
.
path
);
err
!=
nil
{
return
nil
,
err
}
r
.
lockfile
,
err
=
lockfile
.
Lock
(
r
.
path
)
...
...
@@ -108,30 +114,20 @@ func open(repoPath string) (repo.Repo, error) {
}
}()
if
!
isInitializedUnsynced
(
r
.
path
)
{
return
nil
,
errors
.
New
(
"ipfs not initialized, please run 'ipfs init'"
)
}
// Check version, and error out if not matching
ver
,
err
:=
ioutil
.
ReadFile
(
path
.
Join
(
expPath
,
"version"
)
)
ver
,
err
:=
mfsr
.
RepoPath
(
r
.
path
)
.
Version
(
)
if
err
!=
nil
{
if
os
.
IsNotExist
(
err
)
{
return
nil
,
errors
.
New
(
"version check failed, no version file found, please run 0-to-1 migration tool."
)
return
nil
,
ErrNoVersion
}
return
nil
,
err
}
vers
:=
string
(
ver
)[
:
1
]
if
vers
!=
RepoVersion
{
return
nil
,
fmt
.
Errorf
(
"Repo has incorrect version: '%s'
\n
Program version is: '%s'
\n
Please run the appropriate migration tool before continuing"
,
vers
,
RepoVersion
)
if
ver
!=
RepoVersion
{
return
nil
,
fmt
.
Errorf
(
incorrectRepoFormat
,
ver
,
RepoVersion
)
}
// check repo path, then check all constituent parts.
// TODO acquire repo lock
// TODO if err := initCheckDir(logpath); err != nil { // }
if
err
:=
dir
.
Writable
(
r
.
path
);
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -144,13 +140,33 @@ func open(repoPath string) (repo.Repo, error) {
return
nil
,
err
}
//
log.Debugf("writing eventlogs to ...", c.path)
//
setup eventlogger
configureEventLoggerAtRepoPath
(
r
.
config
,
r
.
path
)
keepLocked
=
true
return
r
,
nil
}
func
newFSRepo
(
rpath
string
)
(
*
FSRepo
,
error
)
{
expPath
,
err
:=
u
.
TildeExpansion
(
path
.
Clean
(
rpath
))
if
err
!=
nil
{
return
nil
,
err
}
return
&
FSRepo
{
path
:
expPath
},
nil
}
func
checkInitialized
(
path
string
)
error
{
if
!
isInitializedUnsynced
(
path
)
{
alt
:=
strings
.
Replace
(
path
,
".ipfs"
,
".go-ipfs"
,
1
)
if
isInitializedUnsynced
(
alt
)
{
return
debugerror
.
New
(
"ipfs repo found in old '.go-ipfs' location, please run migration tool"
)
}
return
debugerror
.
New
(
"ipfs not initialized, please run 'ipfs init'"
)
}
return
nil
}
// ConfigAt returns an error if the FSRepo at the given path is not
// initialized. This function allows callers to read the config file even when
// another process is running and holding the lock.
...
...
repo/fsrepo/migrations/1-to-2/main.go
浏览文件 @
c419a489
...
...
@@ -124,7 +124,7 @@ func transferBlocksToFlatDB(repopath string) error {
blockspath
:=
path
.
Join
(
repopath
,
"blocks"
)
err
=
os
.
Mkdir
(
blockspath
,
0777
)
if
err
!=
nil
{
if
err
!=
nil
&&
!
os
.
IsExist
(
err
)
{
return
err
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论