Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit ff96a37

Browse files
committedJul 8, 2015
move locking out of GC branch
License: MIT Signed-off-by: Jeromy <jeromyj@gmail.com>
1 parent 05cd3fc commit ff96a37

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed
 

‎core/commands/add.go

+4
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,10 @@ remains to be implemented.
110110
go func() {
111111
defer close(outChan)
112112

113+
// lock blockstore to prevent rogue GC
114+
unlock := n.Blockstore.RLock()
115+
defer unlock()
116+
113117
for {
114118
file, err := req.Files().NextFile()
115119
if err != nil && err != io.EOF {

‎core/coreunix/add.go

+9
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ var log = eventlog.Logger("coreunix")
2424
// Add builds a merkledag from the a reader, pinning all objects to the local
2525
// datastore. Returns a key representing the root node.
2626
func Add(n *core.IpfsNode, r io.Reader) (string, error) {
27+
unlock := n.Blockstore.RLock()
28+
defer unlock()
29+
2730
// TODO more attractive function signature importer.BuildDagFromReader
2831
dagNode, err := importer.BuildDagFromReader(
2932
r,
@@ -44,6 +47,9 @@ func Add(n *core.IpfsNode, r io.Reader) (string, error) {
4447

4548
// AddR recursively adds files in |path|.
4649
func AddR(n *core.IpfsNode, root string) (key string, err error) {
50+
unlock := n.Blockstore.RLock()
51+
defer unlock()
52+
4753
f, err := os.Open(root)
4854
if err != nil {
4955
return "", err
@@ -79,6 +85,9 @@ func AddR(n *core.IpfsNode, root string) (key string, err error) {
7985
// Returns the path of the added file ("<dir hash>/filename"), the DAG node of
8086
// the directory, and and error if any.
8187
func AddWrapped(n *core.IpfsNode, r io.Reader, filename string) (string, *merkledag.Node, error) {
88+
unlock := n.Blockstore.RLock()
89+
defer unlock()
90+
8291
file := files.NewReaderFile(filename, ioutil.NopCloser(r), nil)
8392
dir := files.NewSliceFile("", []files.File{file})
8493
dagnode, err := addDir(n, dir)

0 commit comments

Comments
 (0)
Please sign in to comment.