Commit Graph

329 Commits

Author SHA1 Message Date
Hector Sanjuan
f4c3fc4ce5 State import: allow replication factor and allocations overwrite on import 2021-12-14 11:21:19 +01:00
Hector Sanjuan
5a1d835d90
Set development version v0.14.2-next 2021-12-09 10:02:37 +01:00
Hector Sanjuan
c7cbdee01f
Release v0.14.2 2021-12-09 10:01:33 +01:00
Hector Sanjuan
54d696da60 ipfs-cluster-ctl: improve printing of health metrics
Make sure we print the value in all cases. Use the weight for the free-space
metric, no need to parse the value anymore.
2021-12-08 12:01:59 +01:00
Hector Sanjuan
ea8b392b72
Release candidate v0.14.2-rc1 2021-12-01 02:04:07 +01:00
Hector Sanjuan
7cf40de354 pintracker: Fix attempt count not increasing. Expose priority queueing.
"RetryCount" has been renamed to "AttemptCount", because it counts attempts.
2021-11-30 04:20:35 +01:00
Hector Sanjuan
29c277b67f Pintracker: add and track retry counts in the operation manager.
Report retry count in the PinStatus
2021-11-30 04:20:35 +01:00
Hector Sanjuan
a74b6faf96
Merge pull request #1484 from ipfs/feat/pin-time
Add: include a timestamp that tracks when a Pin was added to the state
2021-10-27 10:42:59 +02:00
Hector Sanjuan
c776051397 ctl: Include "added" column in pin ls command
Also, change format from humanize to "yyyy-mm-dd HH:MM:SS" for times.
2021-10-20 16:55:57 +02:00
Hector Sanjuan
3f895df8cf Fix: backwards compatibility for allocator default settings
When the allocator is not defined in the configuration, it will take defaults
and assume there is a "tags" informer. That is not the case. When not defined,
we assume it should allocate only by "freespace".
2021-10-20 16:55:35 +02:00
Hector Sanjuan
af9313d4fe Remove test files that should have not been committed 2021-10-19 13:51:17 +02:00
Hector Sanjuan
96db605c50
Merge pull request #1468 from ipfs/fix/159-improved-allocators
Add tags informer and enable partition-based peer allocations for intelligent distribution
2021-10-06 14:35:16 +02:00
Hector Sanjuan
26e229df94 Rename allocator/metrics to allocator/balanced 2021-10-06 11:26:38 +02:00
Hector Sanjuan
63972f2b2e API: Refactor REST API. Extract all functionality.
This is a preparatory PR to add additional APIs (Pinning Service API) easily
to cluster.

Instead of copy-pasting most of what the REST API does, I have refactored so
that the whole configuration, routing and request-handling utilities can be
re-used.

The worst part has been to divide the test between tests that test core
(common.API) functionality and tests that test specific REST API endpoint
functionality. I could not get away without an additional common/test package
to provide functions that are used from both places. This is a side effect of
testing both http and libp2p endpoints for every request etc.
2021-09-16 15:52:25 +02:00
Hector Sanjuan
cf4fb74993 service/follow: Enable new metrics allocator 2021-09-15 21:49:26 +02:00
Hector Sanjuan
267deeff28
Set development version v0.14.1-next 2021-08-16 18:03:18 +02:00
Hector Sanjuan
0162df60eb
Release v0.14.1 2021-08-16 18:02:52 +02:00
Hector Sanjuan
e2659af8f6 ctl: WaitFor replication factor min to be reached
Fixes #1427. Currently, if --wait is used when pinning it will wait until all
statuses reported for a pin are either Pinned or Remote. If a peer was lagging
behind and not syncing the state properly (reporting "unpinned" for example),
that would be enough to block waiting.

This modifies the behaviour of wait to return when replication_factor_min is
reached, regardless of what other statuses are.
2021-08-13 11:35:28 +02:00
Hector Sanjuan
2f21724d1d logging: correctly use defaults for LoggingFacilitiesExtra 2021-08-06 11:31:05 +02:00
Hector Sanjuan
ea4dd7ed98
Set development version v0.14.0-next 2021-07-09 00:25:18 +02:00
Hector Sanjuan
f7e6f4a26c
Release v0.14.0 2021-07-09 00:24:00 +02:00
Hector Sanjuan
7a954e4fd2
Merge pull request #1405 from ipfs/feat/speed-up-pin-ls
restapi: allocationsHandler: skip filtering pins when not needed.
2021-07-08 23:56:07 +02:00
Hector Sanjuan
3ba7d79d0a restapi: allocationsHandler: skip filtering pins when not needed.
The restapi component supports filters for the pinset. This was done to keep
expected output when sharding was fully supported by filtering out "internal"
pins.

However this filter requires looping on the full pinset and re-allocating  and
usually does nothing. The useless copy is significant for really big pinsets.

Additionally, ipfs-cluster-ctl set the filter by default to "pins". By setting
it to "all" instead we can skip the whole filtering step and, in practice, get the
same results.
2021-07-08 23:27:55 +02:00
Hector Sanjuan
33c7b5d81a Fix #1403: ctl: ssl errors when talking to https remote peers
When using SSL and not talking to libp2p-http endpoints, we should not
resolve the dns names in the multiaddresses as otherwise we cannot
verify the https certificates used by the remote endpoint.
2021-07-08 23:21:36 +02:00
Hector Sanjuan
3ba27bebb4
Release candidate v0.14.0-rc3 2021-07-08 12:48:30 +02:00
Hector Sanjuan
46a14f9602 Set badger as default datastore for ipfs-cluster-service
This goes back to badger as the default. Testing performed on 0.14.0-rc2
showed very successful GC behaviour on large clusters.

Being that we run with badger at scale and that the main problem seems
resolved, it seems appropiate to default to badger.
2021-07-08 00:37:03 +02:00
Hector Sanjuan
493089d6d0
Release candidate v0.14.0-rc2 2021-07-06 16:56:53 +02:00
Hector Sanjuan
a5ae9fffc4
Release candidate v0.14.0-rc1 2021-07-06 14:07:21 +02:00
Hector Sanjuan
099e23cbd1 Run tests also using leveldb backend 2021-06-11 18:43:54 +02:00
Hector Sanjuan
0eef0ede89 Support a levelDB backend for cluster
Badger can take 1000x the amount of needed space if not GC'ed or compacted
(#1320), even for non heavy usage. Cluster has no provisions to run datastore
GC operations and while they could be added, they are not ensured to
help. Improvements on Badger v3 might help but would still need to GC
explicitally.

Cluster was however designed to support any go-datastore as backend.

This commit adds LevelDB support. LevelDB go-datastore wrapper is mature, does
not need GC and should work well for most cluster usecases, which are not
overly demanding.

A new `--datastore` flag has been added on init. The store backend is selected
based on the value in the configuration, similar to how raft/crdt is. The
default is set to leveldb. From now on it should be easier to add additional
backends, i.e. badgerv3.
2021-06-09 19:40:36 +02:00
Hector Sanjuan
bfe179e943
Set development version v0.13.3-next 2021-05-14 19:04:01 +02:00
Hector Sanjuan
dd87dba323
Release v0.13.3 2021-05-14 19:03:15 +02:00
Hector Sanjuan
656317d523
Release candidate v0.13.3-rc1 2021-05-03 17:56:24 +02:00
Hector Sanjuan
072f0bc722 Feat: support adding CAR files
This commit adds a new add option: "format".

This option specifies how IPFS Cluster is expected to build the DAG when
adding content. By default, it takes a "unixfs", which chunks and DAG-ifies as
it did before, resulting in a UnixFSv1 DAG.

Alternatively, it can be set to "car". In this case, Cluster will directly
read blocks from the CAR file and add them.

Adding CAR files or doing normal processing is independent from letting
cluster do sharding or not. If sharding is ever enabled, Cluster could
potentially shard a large CAR file among peers.

Currently, importing CAR files is limited to a single CAR file with a single
root (the one that is pinned). Future iterations may support multiple CARs
and/or multiple roots by transparently wrapping them.
2021-04-21 13:55:06 +02:00
Hector Sanjuan
51eed2f679
Set development version v0.13.2-next 2021-04-06 14:09:40 +02:00
Hector Sanjuan
812c8e3631
Release v0.13.2 2021-04-06 14:08:45 +02:00
Hector Sanjuan
d1700dbe81 Fixes #1319: Status wrongly shows pins as REMOTE
The Allocations of a pin that has been added with default replication factor
are kept even when the replication factor turns out to be -1.

This resulted in the Status(cid) code skipping calls to a number of peers
and setting the pin directly as REMOTE.

The fix, on one side makes sure Allocations is always nil when the replication
factor is -1. On the other size, lets the globalPinInfoCid method check the
replication factor value, rather than the number of allocations to decide if
any nodes are bound to be remote.

On the plus side, the pin tracker used the IsRemotePin method, which uses the
replication factor, so things were pinned even if the Status(cid) method shows
them as remote.
2021-03-24 00:47:15 +01:00
Oli Evans
5f9d2c90f8
chore: make wait step reachable regardless of flags
License: MIT
Signed-off-by: Oli Evans <oli@tableflip.io>
2021-01-21 21:38:05 +00:00
Oli Evans
9cd70599aa
chore: wait after last CID is printed
License: MIT
Signed-off-by: Oli Evans <oli@tableflip.io>
2021-01-21 20:43:47 +00:00
Oli Evans
fdd685b219
feat: add --wait flag to ipfs-cluster-ctl add
A "simplest thing that could work" implementation of adding a `--wait` flag to the ipfs-cluster-ctl add command.

Allows CI to wait for cluster to fully replicate the files just added before continuting, or fail if replication fails.

Fixes #1285

License: MIT
Signed-off-by: Oli Evans <oli@tableflip.io>
2021-01-21 09:58:27 +00:00
Hector Sanjuan
78b3111ed6
Set development version v0.13.1-next 2021-01-14 14:07:49 +01:00
Hector Sanjuan
7d0f5368cb
Release v0.13.1 2021-01-14 14:07:09 +01:00
Hector Sanjuan
299ce9ca0f
Release candidate v0.13.1-rc1 2021-01-14 00:32:38 +01:00
Hector Sanjuan
90208b45f9 health/alerts endpoint: brush up old PR 2021-01-13 22:09:21 +01:00
Hector Sanjuan
4bcb91ee2b Merge branch 'master' into feat/alerts 2021-01-13 21:08:49 +01:00
Hector Sanjuan
c78f7839a2
Merge pull request #1264 from ipfs/fix/help-line-ctl
Improve ipfs-cluster-ctl docs regarding --host
2020-10-20 16:11:18 +02:00
Hector Sanjuan
b65c848130 Improve ipfs-cluster-ctl docs regarding --host 2020-10-20 15:05:34 +02:00
Hector Sanjuan
a56ce73f92 Switch to building with -trimpath instead of asm and gc trimpath flags
Kudos to https://github.com/ipfs/distributions/pull/314
2020-10-20 14:32:20 +02:00
Omkar Prabhu
8f24691df4 moved to new line 2020-10-14 10:43:23 +05:30
Omkar Prabhu
904c2688ec host help character count reduced 2020-10-13 14:23:24 +05:30
Omkar Prabhu
fa8b0845d0 hosts input format changed 2020-10-08 22:44:03 +05:30
Omkar Prabhu
dc5ca5bd2b simplifies resolveaddr, multiple hosts as input 2020-10-07 10:21:04 +05:30
Omkar Prabhu
2fd2412b20 integrated lb client in ipfs-cluster-ctl 2020-10-04 16:36:58 +05:30
Omkar Prabhu
ac21fde762 fix #1184: adds pin update options in ipfs-cluster-ctl 2020-07-21 16:49:27 +05:30
@RubenKelevra
d2a83e45f1
help text: fix copy and paste error in pin update --ns (#1183) 2020-07-01 13:10:23 +02:00
@RubenKelevra
1d98410745
fix typo (#1181) 2020-07-01 12:34:59 +02:00
Hector Sanjuan
1806273f2f
Set development version v0.13.0-next 2020-05-19 10:10:08 +02:00
Hector Sanjuan
f213fe3dfa
Set development version v0.13.0-dev 2020-05-19 10:08:09 +02:00
Hector Sanjuan
6b25d6fd3e
Release 0.13.0 2020-05-18 23:21:54 +02:00
Hector Sanjuan
f45118ff1d
Release 0.13.0-rc1 2020-05-16 02:31:49 +02:00
Hector Sanjuan
e967238848
Merge pull request #1129 from ipfs/fix/1013-follow-list
Improvements to ipfs-cluster-follow * list
2020-05-16 02:31:06 +02:00
Hector Sanjuan
c026299b95 Include Name as GlobalPinInfo key and consolidate redundant keys
GlobalPinInfo objects carried redundant information (Cid, Peer) that takes
space and time to serialize.

This has been addressed by having GlobalPinInfo embed PinInfoShort rather than
PinInfo. This new types ommits redundant fields.
2020-05-16 02:27:24 +02:00
Hector Sanjuan
4a0c8195eb ipfs-cluster-ctl: print pin name on status 2020-05-15 02:13:43 +02:00
Kishan Mohanbhai Sagathiya
ae8e74453b Fix #937: Print full working configuration at startup
Only when using debug mode

Co-authored-by: Hector Sanjuan <code@hector.link>
2020-05-15 01:33:04 +02:00
Hector Sanjuan
7378183b36 Speed up and improve "ipfs-cluster-follow * list"
For the online case we were unnecessarily loading the configuration from IPFS, a very
slow operation if IPFS is very busy (when syncing).

For the offline case, we required IPFS to be online (for remote
configurations) slow things down as well and is uncovenient. Instead, simply
open the database with default parameters and list it.
2020-05-15 01:08:30 +02:00
Hector Sanjuan
7e9cece29c Include pin Names in PinInfo objects
Fixes #1013 by avoiding to have to make a specific request to allocations.
2020-05-15 00:18:14 +02:00
Hector Sanjuan
68db5027e1 Fix #1009: Add Mode={direct,recursive} PinOption
This adds a new pin option: Mode that can be set to "direct" or "recursive".

The Mode is used to set the MaxDepth Pin field accordingly. When set to 0, we
will call pin/add using the type=direct.
2020-04-21 17:23:55 +02:00
Hector Sanjuan
717ed85823 gofmt -s fixes 2020-04-14 23:44:18 +02:00
Hector Sanjuan
7ffd18e41b Feat: upgrade to dual DHT 2020-04-14 22:03:24 +02:00
Hector Sanjuan
f83ff9b655 staticcheck: fix all staticcheck warnings in the project 2020-04-14 20:16:10 +02:00
Hector Sanjuan
3a54b2ef0c
Merge pull request #1066 from gargdeepak/fix/ipfs-cluster-ctl/expiry-time
Fixes #998 Added object expiry time to pin ls cmd.
2020-04-14 15:57:43 +02:00
deepakgarg
6213898a77 Fixes #998 Moved the ExpireAt value to the end and humanized the outout 2020-04-11 01:28:35 -07:00
Hector Sanjuan
65ad4bd632 cluster/daemons: Close the datastore AFTER the DHT.
Avoids panics.

This also removes the abnormality of cluster closing a datastore
that it did not create.
2020-04-02 16:29:41 +02:00
Hector Sanjuan
ab74987bc8 clusterhost: place dht records in persistened DHT
With this cluster peers will start remembering provider records accross
re-starts.
2020-04-01 20:15:48 +02:00
deepakgarg
bcbea62efe Fixes #998 Added object expiry time to pin ls cmd. 2020-03-27 18:05:26 -07:00
Hector Sanjuan
b3853caf36 Dependency ugprade: changes needed
* Libp2p protectors no longer needed, use PSK directly
* Generate cluster 32-byte secret here (helper gone from pnet)
* Switch to go-log/v2 in all places
* DHT bootstrapping not needed. Adjust DHT options for tests.
* Do not rely on dissappeared CidToDsKey and DsKeyToCid functions fro dshelp.
* Disable QUIC (does not support private networks)
* Fix tests: autodiscovery started working properly
2020-03-22 14:50:25 +01:00
Hector Sanjuan
c80a207e41 Fix #1012: Trim paths on Makefile builds
This results in more reproduceable builds.

Additionally, sources command to list all go-files and not just those
one directory below.
2020-03-06 14:49:19 +01:00
Hector Sanjuan
5d44275d0e
Chore: Add license file with URLS (#1014)
* Chore: Add license file with URLS

Source: 59df5e58a2

* Chore: license copyright updates
2020-03-06 13:52:19 +01:00
Hector Sanjuan
531379b1d9
Feature: Support multiple listeners in configuration
* add ipv6 listening addresses to the default config

* ipfsproxy: support multiple listeners. Add default ipv6.

* mm

* restapi: support multiple listen addresses. enable ipv6

* cluster_config: format default listen addresses

* commands: update for multiple listeners. Fix randomports for udp and ipv6.

* ipfs-cluster-service: fix randomports test

* multiple listeners: fix remaining tests

* golint

* Disable ipv6 in defaults

It is not supported by docker by default. It is not supported in travis-CI
build environments. User can enable it now manually.

* proxy: disable ipv6 in test

* ipfshttp: fix test

Co-authored-by: @RubenKelevra <cyrond@gmail.com>
2020-02-28 11:16:16 -05:00
Yang Hau
7986d94242
fix: Fix typos (#1001)
Fix typos in files
2020-02-03 10:30:04 +01:00
Hector Sanjuan
3cdcb44af2
Release 0.12.1 2019-12-24 01:13:23 +01:00
Hector Sanjuan
1accd0e415 follow: close the RepoGCLocal RPC endpoint
Trusted peers should not be able to GC a follower.
2019-12-23 23:45:26 +01:00
Hector Sanjuan
db2ef9231a Fix #991: fix panic on "info" when IPFS not running 2019-12-23 23:45:14 +01:00
Hector Sanjuan
f20a524bbc Fix #992: Ensure the gateway variable is set on the run --init command 2019-12-23 23:32:06 +01:00
Kishan Mohanbhai Sagathiya
68abae9287 Merge branch 'master' into feat/alerts 2019-12-23 12:45:22 +05:30
Hector Sanjuan
09e4007c31
Release 0.12.0 2019-12-20 14:45:59 +01:00
Hector Sanjuan
60ce5b3228 Update copyrights to 2020x 2019-12-20 14:40:34 +01:00
Hector Sanjuan
0fa01d5435 Distribute the correct dual license with ctl and service 2019-12-20 14:04:48 +01:00
Hector Sanjuan
aad179ab29 follow: Missing line break in message 2019-12-19 20:40:06 +01:00
Hector Sanjuan
912a6f43fa follow: improve return error. Remove logger (unused) 2019-12-19 20:39:20 +01:00
Hector Sanjuan
0ae04c42c8 Follow: treat errors from Default() methods 2019-12-19 20:39:20 +01:00
Hector Sanjuan
eef37027e9 follow: Handle IPFS_GATEWAY as a flag option 2019-12-19 20:02:40 +01:00
Hector Sanjuan
274f52b46a follow: do not ignore ShowAppHelp() error 2019-12-19 19:56:49 +01:00
Hector Sanjuan
212b3b00d2 follow: handle error from ApplyEnvVars 2019-12-19 19:55:19 +01:00
Hector Sanjuan
10e90616f5 follow: rename listCmd to listClustersCmd and pinsetCmd to listCmd 2019-12-19 19:53:30 +01:00
Hector Sanjuan
130965d07f follow: show the notInitialized message when not initialized. 2019-12-19 19:50:46 +01:00
Hector Sanjuan
bf2c950016 Fix #986: Ensure ctrl-c always kills ipfs-cluster-follow 2019-12-19 18:34:18 +01:00
Hector Sanjuan
d12bc7daf7 Merge branch 'master' into feat/ipfs-cluster-follow 2019-12-18 13:49:00 +01:00
Hector Sanjuan
66abca4e32
Release 0.12.0-rc1 2019-12-16 17:58:30 +01:00
Hector Sanjuan
2391d2d246
Merge pull request #960 from ipfs/feat/log-env-flags
Environment variable to set loglevels for individual identifiers
2019-12-16 17:20:17 +01:00