• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ipfs / ipfs-cluster
68%
master: 65%

Build:
Build:
LAST BUILD BRANCH: feat/expvar
DEFAULT BRANCH: master
Repo Added 08 Dec 2016 04:18PM UTC
Files 37
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH feat/promote-consensus
branch: feat/promote-consensus
CHANGE BRANCH
x
Reset
  • feat/promote-consensus
  • 0.2.0/changelog
  • 0.2.1/changelog
  • 0.3.0/changelog
  • 0.3.2/changelog
  • 0.3.3/changelog
  • 0.3.4/changelog
  • 0.3.5/changelog
  • 0.4.0/changelog
  • 0.5.0/changelog
  • 0.6.0/changelog
  • 0.7.0/changelog
  • 0.8.0/changelog
  • 0.9.0
  • 162-new-configs
  • 192-docs
  • 45-peer-failure
  • 97-default-data-folder
  • add-config-alloc-default
  • add-proxy-hijack
  • autosyncs
  • captain-log-update
  • captain-log-update-2
  • catch-sighup
  • catch-sigup
  • changelog_v0.3.1
  • codeclimate
  • connect-ipfs-nodes
  • disk-informer
  • doc/add-swagger-config
  • doc/add-use-cases
  • doc/cluster-guide-broken-link
  • doc/composite-cluster-usecases
  • doc/dag-sharding-rfc
  • doc/readme-go-version
  • doc/user-registry
  • docker-compose
  • docker/run-daemon-default
  • docs/cluster-secret-links
  • docs/move-to-website
  • documentation/architecture.md-updates
  • feat/131-new-raft
  • feat/201-version-subcmd
  • feat/219-peers
  • feat/260-api-client
  • feat/269-shell-client
  • feat/277-min-max-repl-factor
  • feat/339-faster-tests
  • feat/632-stream-channels
  • feat/632-stream-channels-client
  • feat/SHARDING-files-over-rest
  • feat/api-basic-auth
  • feat/api-headers
  • feat/auto-migration
  • feat/backups-upgrade-path
  • feat/client-add
  • feat/client_features
  • feat/cmd/svc/force-quit
  • feat/code_quality
  • feat/component-env-cfg
  • feat/connectivity-graph
  • feat/ctl-cmd/no-status-flag
  • feat/datastore
  • feat/dht
  • feat/docker-gx-make
  • feat/docker-test
  • feat/env-cfg
  • feat/error-msgs-bootstrap
  • feat/expvar
  • feat/fix-testclusterspeerrejoin
  • feat/flush-adder-output
  • feat/free-space-allocation-metric
  • feat/fs-lock
  • feat/gossipsub
  • feat/https-api-endpoint
  • feat/improve-pin-serial
  • feat/ipfs-block
  • feat/ipld-bubble
  • feat/migration-framework
  • feat/new-pin-options
  • feat/new-pintype-tests
  • feat/peer-add-hide
  • feat/pin-method-default-refs
  • feat/pin-priority-peers
  • feat/pin-refs
  • feat/pinning-mods
  • feat/pintracker-revamp
  • feat/pnet
  • feat/pubsub-monitoring
  • feat/raft-state-backups
  • feat/recursive-pins
  • feat/remove-legacy
  • feat/rest/client/wait
  • feat/restapi-libp2p
  • feat/service/lock-msg
  • feat/sharding
  • feat/sharding-clean-add
  • feat/sharding-component
  • feat/sharding-frontend-tests
  • feat/sharding-state-format
  • feat/sharding-use-pin-feats
  • feat/sharding-v1
  • feat/state-cmds
  • feat/state-update-guide
  • feat/travis-cache
  • feat/try-jenkins
  • feat/use-ipfs-to-download-gx
  • feat/use-stdlib-reverse-proxy
  • feat/wrong-secrets
  • fix-realloc
  • fix-service-docs
  • fix/105-panic-rpc-calls
  • fix/154-dockerfile
  • fix/182-check-err
  • fix/202-32-bit
  • fix/203-peers-ignored
  • fix/208-repl-factor
  • fix/213-save
  • fix/224-pin-progress
  • fix/240-logging
  • fix/297-state-unmarshal
  • fix/340-races
  • fix/408-TestClustersPin-final
  • fix/412-template-for-issues
  • fix/433-floodsub-panic
  • fix/462-dns-ipfs-api
  • fix/466-proxy-repo-stat
  • fix/495-proxy-add
  • fix/520-snapcraft-stages
  • fix/543-add-unhealthy
  • fix/548-keepalives
  • fix/552-stateless-test
  • fix/554-snap-deploy
  • fix/639-cors-restapi
  • fix/StatusSync
  • fix/access-control-headers
  • fix/add-output-format
  • fix/add-with-spaces-in-name
  • fix/api-client
  • fix/api-consts
  • fix/bad-subcommand
  • fix/cancelled-context-repo-stat
  • fix/cg-tests-jenkins
  • fix/client-cid-pointer
  • fix/client-ipfs
  • fix/client-resolve-panic
  • fix/client/timeout
  • fix/config-errors
  • fix/config/disable-repinnings
  • fix/cors-and-headers
  • fix/ctl-descriptions
  • fix/ctl-https
  • fix/daemon-error
  • fix/data-folder
  • fix/dockerfile-again
  • fix/downcase_api_config_id
  • fix/empty-cluster-secret
  • fix/empty-config-option
  • fix/error-msgs
  • fix/fast-repo-stat
  • fix/fmt-pnet_test
  • fix/go-1.11
  • fix/godoc-wait-for
  • fix/govet
  • fix/health-metrics
  • fix/host-nat
  • fix/ipfsconn-with-POST
  • fix/ipfsconn/api-compat
  • fix/jenkins
  • fix/libp2p
  • fix/lock-service
  • fix/make-test
  • fix/minor-fixes
  • fix/minor-version-compat
  • fix/move-index-up
  • fix/official-builds
  • fix/peer-rm
  • fix/pin-context-timeout
  • fix/pin-ls-check
  • fix/pinls
  • fix/pintracker-data-races
  • fix/post-sharding
  • fix/proxy-headers
  • fix/proxy-paths
  • fix/query-encode-filter
  • fix/recover-pin
  • fix/remote-error
  • fix/sharding-state-upgrade
  • fix/sharness-jq-typo
  • fix/snaps-again2
  • fix/snapshot-wait-for-index
  • fix/start-panic
  • fix/status-output
  • fix/status-when-peer-down
  • fix/svc/init/lock
  • fix/tests
  • fix/tracing-service-name
  • fix/type-errors
  • fix/update-go-cid
  • fix/update-go-dot
  • fix/update-json-config
  • fix/upgrade-empty-state
  • fix/validate-state
  • fix/wait
  • fix/webfile-gx
  • go-1.10
  • godocs
  • guide
  • gx/files2
  • gx/update-mudygh
  • gx/update-psxsm3
  • issue_445
  • issue_450
  • issue_485
  • issue_587
  • issue_616
  • issue_646
  • libp2p-6.0.19
  • libp2p-6.0.23
  • libp2p-6.0.29
  • log/cluster/version-difference-err
  • master
  • migrator
  • no-map-pintracker
  • pin-bot
  • pin-ls-cid
  • pin-ls-recursive
  • race-fixes-picks
  • readme-improv
  • release-fixes
  • remove-go-ipfs-dep
  • remove/snaps
  • rfc/collaborative-pinsets
  • set-proxy-status
  • sharding/move-zg0-dex-to-cluster
  • sharness/basic-auth
  • small-fixes
  • small-fixes-2
  • ssl-params
  • statelesstracker
  • style
  • submodules
  • test/clean-shard-testing
  • test/sharness-api-https
  • test/sharness-https-api
  • test/squash
  • tests/shards
  • tests/update-sharness-configs
  • travis-sharness
  • update-deps
  • update/go-ipfs-files
  • update/go-libp2p-pubsub
  • update/gx
  • update/gx-versions
  • update/gx-versions3
  • update/libp2p
  • update/libp2p-6
  • update/libp2p-6.0.33
  • update/libp2p-6.0.35
  • use-multiaddr-net
  • v0.0.11
  • v0.0.12
  • v0.1.0
  • v0.2.0
  • v0.2.1
  • v0.3.1
  • v0.3.2
  • v0.3.3
  • v0.3.4
  • v0.3.5
  • v0.4.0
  • v0.4.0-rc1
  • v0.4.0-rc2
  • v0.5.0
  • v0.5.0-rc1
  • v0.6.0
  • v0.6.0-rc1
  • v0.7.0
  • v0.7.0-rc1
  • v0.8.0-rc1
  • v0.9.0
  • v0.9.0-rc1

pending completion
2284

push

travis-ci

hsanjuan
Feat: emancipate Consensus from the Cluster component

This commit promotes the Consensus component (and Raft) to become a fully
independent thing like other components, passed to NewCluster during
initialization. Cluster (main component) no longer creates the consensus
layer internally. This has triggered a number of breaking changes
that I will explain below.

Motivation: Future work will require the possibility of running Cluster
with a consensus layer that is not Raft. The "consensus" layer is in charge
of maintaining two things:
  * The current cluster peerset, as required by the implementation
  * The current cluster pinset (shared state)

While the pinset maintenance has always been in the consensus layer, the
peerset maintenance was handled by the main component (starting by the "peers"
key in the configuration) AND the Raft component (internally)
and this generated lots of confusion: if the user edited the peers in the
configuration they would be greeted with an error.

The bootstrap process (adding a peer to an existing cluster) and configuration
key also complicated many things, since the main component did it, but only
when the consensus was initialized and in single peer mode.

In all this we also mixed the peerstore (list of peer addresses in the libp2p
host) with the peerset, when they need not to be linked.

By initializing the consensus layer before calling NewCluster, all the
difficulties in maintaining the current implementation in the same way
have come to light. Thus, the following changes have been introduced:

* Remove "peers" and "bootstrap" keys from the configuration: we no longer
edit or save the configuration files. This was a very bad practice, requiring
write permissions by the process to the file containing the private key and
additionally made things like Puppet deployments of cluster difficult as
configuration would mutate from its initial version. Needless to say all the
maintenance associated to making sure peers and... (continued)

4846 of 7161 relevant lines covered (67.67%)

390.2 hits per line

Relevant lines Covered
Build:
Build:
7161 RELEVANT LINES 4846 COVERED LINES
390.2 HITS PER LINE
Source Files on feat/promote-consensus
  • List 0
  • Changed 13
  • Source Changed 3
  • Coverage Changed 12
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
2284 feat/promote-consensus Feat: emancipate Consensus from the Cluster component This commit promotes the Consensus component (and Raft) to become a fully independent thing like other components, passed to NewCluster during initialization. Cluster (main component) no longe... push 07 May 2018 05:50AM UTC hsanjuan travis-ci pending completion  
2270 feat/promote-consensus Address review (to be squashed) License: MIT Signed-off-by: Hector Sanjuan <code@hector.link> push 03 May 2018 08:46AM UTC hsanjuan travis-ci pending completion  
2229 feat/promote-consensus Remove debug println License: MIT Signed-off-by: Hector Sanjuan <code@hector.link> push 02 May 2018 07:10AM UTC hsanjuan travis-ci pending completion  
2201 feat/promote-consensus Feat: emancipate Consensus from the Cluster component This commit promotes the Consensus component (and Raft) to become a fully independent thing like other components, passed to NewCluster during initialization. Cluster (main component) no longe... push 30 Apr 2018 04:10PM UTC hsanjuan travis-ci pending completion  
2195 feat/promote-consensus wip License: MIT Signed-off-by: Hector Sanjuan <code@hector.link> push 30 Apr 2018 12:34PM UTC hsanjuan travis-ci pending completion  
2193 feat/promote-consensus wip License: MIT Signed-off-by: Hector Sanjuan <code@hector.link> push 30 Apr 2018 08:30AM UTC hsanjuan travis-ci pending completion  
2163 feat/promote-consensus wip License: MIT Signed-off-by: Hector Sanjuan <code@hector.link> push 29 Apr 2018 09:03AM UTC hsanjuan travis-ci pending completion  
See All Builds (2373)
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc