Commit Graph

102 Commits

Author SHA1 Message Date
Hector Sanjuan
2bd401c5c6 Feat: Arbitrary-depth recursive pin levels.
This implements #5133 introducing an option to limit how deep we fetch and store
the DAG associated to a recursive pin ("--max-depth"). This feature
comes motivated by the need to fetch and pin partial DAGs in order to do
DAG sharding with IPFS Cluster.

This means that, when pinning something to --max-depth, the DAG will be
fetched only to that depth and not more.

In order to get this, the PR introduces new recursive pin types: "recursive1"
means: the given CID is pinned along with its direct children (maxDepth=1)

"recursive2" means: the given CID is pinned along with its direct children
and its grandchildren.

And so on...

This required introducing "maxDepth" limits to all the functions walking down
DAGs (in merkledag, pin, core/commands, core/coreapi, exchange/reprovide modules).

maxDepth == -1 effectively acts as no-limit, and all these functions behave like
they did before.

In order to facilitate the task, a new CID Set type has been added:
thirdparty/recpinset. This set carries the MaxDepth associated to every Cid.
This allows to shortcut exploring already explored branches just like the original
cid.Set does. It also allows to store the Recursive pinset (and replaces cid.Set).
recpinset should be moved outside to a different repo eventually.

TODO: tests
TODO: refs -r with --max-depth

License: MIT
Signed-off-by: Hector Sanjuan <code@hector.link>
2018-06-21 14:35:42 +02:00
Rob Brackett
319f006386
Add package overview comments to coreapi
License: MIT
Signed-off-by: Rob Brackett <rob@robbrackett.com>
2018-06-12 15:56:15 -07:00
Steven Allen
85acad9a01 gx update go-log, sys, go-crypto
* go-log
* sys
* go-crypto

License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2018-06-08 22:36:24 -07:00
Steven Allen
39f927aa04 update gx imports
License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2018-06-05 23:55:08 -07:00
Steven Allen
c9c9986c9e update multiplexers
License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2018-06-04 10:05:20 -07:00
Steven Allen
a030455f3d fix key_test for peer ID inlining patch
License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2018-05-31 18:29:22 -07:00
Steven Allen
1089eda84b cleanup namesys a bit
Remove ~50 lines of code, some casting, and a superfluous map (when go starts
looking like python, something's wrong).

License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2018-05-31 18:29:22 -07:00
Steven Allen
1e9e2f453c update deps
License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2018-05-31 17:59:17 -07:00
Whyrusleeping
076fd91e5f
Merge pull request #4835 from ipfs/fix/typos
misc: Fix a few typos
2018-04-20 23:35:58 +09:00
Hector Sanjuan
df59b29fdc Extract exchange/offline to go-ipfs-exchange offline
License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2018-04-19 12:07:36 +02:00
Łukasz Magiera
b290286dd7 misc: Fix a few typos
License: MIT
Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
2018-03-30 09:47:22 +02:00
Łukasz Magiera
2ee5cfb90f fix error style
License: MIT
Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
2018-03-30 09:43:27 +02:00
Whyrusleeping
9ed9ab5772
Merge pull request #4807 from ipfs/feat/coreapi/refactor-opts
coreapi: Refactor options
2018-03-29 16:53:42 -07:00
Hector Sanjuan
69a6bd2770 Revert go-libp2p-kad-dht and related changes to a working version
This uses a working libp2p-kad-dht and libp2p-record libraries,
reverts the changes that were introduced to support the newer versions

License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2018-03-26 22:12:14 +02:00
Hector Sanjuan
30cf14ef9e Replace the rest of thirdparty/datastore2 with go-datastore
License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2018-03-26 22:12:14 +02:00
Hector Sanjuan
3ee1d76d88 Update to latest go-datastore
License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2018-03-26 22:12:14 +02:00
Łukasz Magiera
12c3179614 coreapi: don't use underscores in opt reciever funcs
License: MIT
Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
2018-03-25 14:09:59 +02:00
Łukasz Magiera
c354e19628 coreapi: use defined functions for pin type option
License: MIT
Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
2018-03-25 13:58:29 +02:00
Łukasz Magiera
79f56c1831 coreapi: remove options from interfaces
License: MIT
Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
2018-03-24 23:25:11 +01:00
Whyrusleeping
41d82eeeb5
Merge pull request #4733 from dirkmc/feat/namesys-value-count
Add options for record count and timeout for resolving DHT paths
2018-03-23 09:59:26 -07:00
Łukasz Magiera
e54a4f8dd5 coreapi: var block for errors
License: MIT
Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
2018-03-10 22:17:27 +01:00
Łukasz Magiera
fa0fef336d coreapi: minor doc fixes
License: MIT
Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
2018-03-10 18:52:10 +01:00
Łukasz Magiera
f218b69e47 coreapi: split the interface into multiple files
License: MIT
Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
2018-03-10 18:46:45 +01:00
Łukasz Magiera
eff69bbf37 coreapi: don't alias ipld types
License: MIT
Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
2018-03-10 18:31:28 +01:00
Łukasz Magiera
20b59ec1ec coreapi: move unixfs errors to the top
License: MIT
Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
2018-03-10 18:27:21 +01:00
Dirk McCormick
5202f76d1f Syntactic changes
License: MIT
Signed-off-by: Dirk McCormick <dirkmdev@gmail.com>
2018-03-01 15:09:25 -05:00
Dirk McCormick
e8f79c8803 Use variadic options
License: MIT
Signed-off-by: Dirk McCormick <dirkmdev@gmail.com>
2018-02-28 16:57:58 -05:00
Dirk McCormick
1abf8366ee Add options for record count and timeout for resolving DHT paths
License: MIT
Signed-off-by: Dirk McCormick <dirkmdev@gmail.com>
2018-02-23 11:47:30 -05:00
Steven Allen
45756b6d64 fix a bunch of go vet errors
License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2018-02-20 17:37:35 -08:00
Whyrusleeping
2ee4543c3e
Merge pull request #4713 from ipfs/feat/split-path-resolver
Feat: Separate "path" from "path/resolver"
2018-02-20 09:55:36 -08:00
Jeromy
d01bb650b3 dont use bitswap session for cat just yet
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2018-02-15 16:44:18 -08:00
Hector Sanjuan
93d1a695d4 Feat: Separate "path" from "path/resolver"
Currently the "path" module does two very different things:

* Defines how ipfs paths look like and provides tools to parse/split etc.
* Provides a resolver to resolve paths.

This moves the resolver stuff to `path/resolver` and leaves the
path utilities in `path`.

The result is that now the IPFS `path` package just defines what a path
looks like and becomes a module that can be exported/re-used without problems.
Currently there are circular dependency cycles (resolve_test -> merkledag/utils,
merkledag->path), which the prevent the export of merkledag itself.

License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2018-02-16 00:20:30 +01:00
Hector Sanjuan
758e00bc4c Extract blocks/blockstore package to go-ipfs-blockstore
This extracts the blocks/blockstore package and renames the
blocks/blockstore/util package to /blocks/blockstoreutil
(because util depends on Pin and I don't plan to extract
Pin and its depedencies).

The history of blocks/blockstore has been preserved. It has
been gx'ed and imported. Imports have been rewritten accordingly
and re-ordered.

License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2018-02-15 18:03:41 +01:00
Hector Sanjuan
54d87b4ce0 Extract: routing package to github.com/ipfs/go-ipfs-routing
This extracts the routing package to its own repository
(https://github.com/ipfs/go-ipfs-routing). History has
been preserved. The new module has been gx'ed and published.

Imports have been rewritten and re-ordered accordingly.

An internal dependency to go-ipfs/repo has been removed
by substituting it with the go-datastore.Batching interface.

License: MIT
Signed-off-by: Hector Sanjuan <hector@protocol.ai>
2018-02-14 18:33:52 +01:00
Łukasz Magiera
242c98f44f coreapi: update after rebase
License: MIT
Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
2018-02-04 15:29:50 +01:00
Łukasz Magiera
5ea9a3cde2 coreapi: pin tests
License: MIT
Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
2018-02-04 15:29:50 +01:00
Łukasz Magiera
c8cfed5c84 coreapi: implement pin api
License: MIT
Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
2018-02-04 15:29:50 +01:00
Łukasz Magiera
064c194b4f coreapi: pin draft
License: MIT
Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
2018-02-04 15:29:50 +01:00
Whyrusleeping
d58da74746
Merge pull request #4548 from ipfs/feat/coreapi/block
coreapi: Block API
2018-02-03 15:38:11 -08:00
Whyrusleeping
d1a3fccd34
Merge pull request #4637 from ipfs/gx/update-go-log
gx: update go-log
2018-02-03 15:30:42 -08:00
Łukasz Magiera
e77b938161 coreapi: update block after update
License: MIT
Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
2018-02-02 22:57:54 +01:00
Jeromy
1de040d0b7 Use a bitswap session for 'Cat'
License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
2018-02-02 12:25:20 -08:00
Steven Allen
b2cbfd299c gx: update go-log
License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2018-01-31 21:54:22 -08:00
Steven Allen
41d9daf653 minor drive-by code cleanup
We'll dedup the code later, for now:

1. Don't drop errors on the floor.
2. Don't modify anything returned by `Links()` directly...

License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2018-01-30 20:51:05 -08:00
Łukasz Magiera
bb6bf4ce53 coreapi: block tests
License: MIT
Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
2018-01-31 00:31:08 +01:00
Łukasz Magiera
b125c89ac7 corapi: block docs
License: MIT
Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
2018-01-31 00:31:08 +01:00
Łukasz Magiera
bdc9f6a96a coreapi: implement block API
License: MIT
Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
2018-01-31 00:31:08 +01:00
Łukasz Magiera
219eae7614 coreapi: draft block API
License: MIT
Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
2018-01-31 00:31:08 +01:00
Steven Allen
9c67eb4cf0 fix the coreapi/object import grouping
(while we're at it)

License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2018-01-30 14:22:39 -08:00
Steven Allen
fbf8f5ddbd rename go-ipld-format package name from node to ipld
...to match the recent mass rename in #4610.

License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
2018-01-30 14:21:24 -08:00