10512 Commits

Author SHA1 Message Date
Jerzy Lasyk
320d132925
swarm/metrics: Send the accounting registry to InfluxDB (#18470)
(cherry picked from commit f28da4f602fcd17624cf6d40d070253dd6663121)
2019-02-19 17:34:42 +01:00
lash
7ae2a7bd84
swarm: Reinstate Pss Protocol add call through swarm service (#19117)
* swarm: Reinstate Pss Protocol add call through swarm service

* swarm: Even less self

(cherry picked from commit d88c6ce6b058ccd04b03d079d486b1d55fe5ef61)
2019-02-19 13:18:10 +01:00
Kiel barry
fd34bf594c
contracts/*: golint updates for this or self warning
(cherry picked from commit 53b823afc8c24337290ba2e7889c2dde496e9272)
2019-02-19 13:18:02 +01:00
holisticode
996230174c
cmd/swarm/swarm-smoke: Trigger chunk debug on timeout (#19101)
* cmd/swarm/swarm-smoke: first version trigger has-chunks on timeout

* cmd/swarm/swarm-smoke: finalize trigger to chunk debug

* cmd/swarm/swarm-smoke: fixed httpEndpoint for trigger

* cmd/swarm/swarm-smoke: port

* cmd/swarm/swarm-smoke: ws not rpc

* cmd/swarm/swarm-smoke: added debug output

* cmd/swarm/swarm-smoke: addressed PR comments

* cmd/swarm/swarm-smoke: renamed track-timeout and track-chunks

(cherry picked from commit 62d7688d0a7ddbdb5d7167b264e0ea617578b60d)
2019-02-19 13:11:53 +01:00
Ferenc Szabo
8857707606
p2p, swarm: fix node up races by granular locking (#18976)
* swarm/network: DRY out repeated giga comment

I not necessarily agree with the way we wait for event propagation.
But I truly disagree with having duplicated giga comments.

* p2p/simulations: encapsulate Node.Up field so we avoid data races

The Node.Up field was accessed concurrently without "proper" locking.
There was a lock on Network and that was used sometimes to access
the  field. Other times the locking was missed and we had
a data race.

For example: https://github.com/ethereum/go-ethereum/pull/18464
The case above was solved, but there were still intermittent/hard to
reproduce races. So let's solve the issue permanently.

resolves: ethersphere/go-ethereum#1146

* p2p/simulations: fix unmarshal of simulations.Node

Making Node.Up field private in 13292ee897e345045fbfab3bda23a77589a271c1
broke TestHTTPNetwork and TestHTTPSnapshot. Because the default
UnmarshalJSON does not handle unexported fields.

Important: The fix is partial and not proper to my taste. But I cut
scope as I think the fix may require a change to the current
serialization format. New ticket:
https://github.com/ethersphere/go-ethereum/issues/1177

* p2p/simulations: Add a sanity test case for Node.Config UnmarshalJSON

* p2p/simulations: revert back to defer Unlock() pattern for Network

It's a good patten to call `defer Unlock()` right after `Lock()` so
(new) error cases won't miss to unlock. Let's get back to that pattern.

The patten was abandoned in 85a79b3ad3c5863f8612d25c246bcfad339f36b7,
while fixing a data race. That data race does not exist anymore,
since the Node.Up field got hidden behind its own lock.

* p2p/simulations: consistent naming for test providers Node.UnmarshalJSON

* p2p/simulations: remove JSON annotation from private fields of Node

As unexported fields are not serialized.

* p2p/simulations: fix deadlock in Network.GetRandomDownNode()

Problem: GetRandomDownNode() locks -> getDownNodeIDs() ->
GetNodes() tries to lock -> deadlock

On Network type, unexported functions must assume that `net.lock`
is already acquired and should not call exported functions which
might try to lock again.

* p2p/simulations: ensure method conformity for Network

Connect* methods were moved to p2p/simulations.Network from
swarm/network/simulation. However these new methods did not follow
the pattern of Network methods, i.e., all exported method locks
the whole Network either for read or write.

* p2p/simulations: fix deadlock during network shutdown

`TestDiscoveryPersistenceSimulationSimAdapter` often got into deadlock.
The execution was stuck on two locks, i.e, `Kademlia.lock` and
`p2p/simulations.Network.lock`. Usually the test got stuck once in each
20 executions with high confidence.

`Kademlia` was stuck in `Kademlia.EachAddr()` and `Network` in
`Network.Stop()`.

Solution: in `Network.Stop()` `net.lock` must be released before
calling `node.Stop()` as stopping a node (somehow - I did not find
the exact code path) causes `Network.InitConn()` to be called from
`Kademlia.SuggestPeer()` and that blocks on `net.lock`.

Related ticket: https://github.com/ethersphere/go-ethereum/issues/1223

* swarm/state: simplify if statement in DBStore.Put()

* p2p/simulations: remove faulty godoc from private function

The comment started with the wrong method name.

The method is simple and self explanatory. Also, it's private.
=> Let's just remove the comment.

(cherry picked from commit 50b872bf05b8644f14b9bea340092ced6968dd59)
2019-02-19 13:11:52 +01:00
gluk256
d6c1fcbe04
swarm/pss: refactoring (#19110)
* swarm/pss: split pss and keystore

* swarm/pss: moved whisper to keystore

* swarm/pss: goimports fixed

(cherry picked from commit 12ca3b172a7e1b2b63ef2369e8dc37c75144c81f)
2019-02-19 13:11:52 +01:00
Elad
79cac793c0
swarm/storage/netstore: add fetcher cancellation on shutdown (#19049)
swarm/network/stream: remove netstore internal wg
swarm/network/stream: run individual tests with t.Run

(cherry picked from commit 3ee09ba03511ad9a49e37c58f0c35b9c9771dd6f)
2019-02-19 13:11:52 +01:00
holisticode
5de6b6b529
swarm/network: Saturation check for healthy networks (#19071)
* swarm/network: new saturation for  implementation

* swarm/network: re-added saturation func in Kademlia as it is used elsewhere

* swarm/network: saturation with higher MinBinSize

* swarm/network: PeersPerBin with depth check

* swarm/network: edited tests to pass new saturated check

* swarm/network: minor fix saturated check

* swarm/network/simulations/discovery: fixed renamed RPC call

* swarm/network: renamed to isSaturated and returns bool

* swarm/network: early depth check

(cherry picked from commit 2af24724dd5f3ab1994001854eb32c6a19f9f64a)
2019-02-19 13:11:52 +01:00
Elad
3d2bedf8d0
swarm/storage: fix influxdb gc metrics report (#19102)
(cherry picked from commit 5b8ae7885eaa033aaf1fb1d5959b7f1c86761d6d)
2019-02-19 13:11:52 +01:00
Janoš Guljaš
8ea3d8ad90
swarm: fix network/stream data races (#19051)
* swarm/network/stream: newStreamerTester cleanup only if err is nil

* swarm/network/stream: raise newStreamerTester waitForPeers timeout

* swarm/network/stream: fix data races in GetPeerSubscriptions

* swarm/storage: prevent data race on LDBStore.batchesC

https://github.com/ethersphere/go-ethereum/issues/1198#issuecomment-461775049

* swarm/network/stream: fix TestGetSubscriptionsRPC data race

https://github.com/ethersphere/go-ethereum/issues/1198#issuecomment-461768477

* swarm/network/stream: correctly use Simulation.Run callback

https://github.com/ethersphere/go-ethereum/issues/1198#issuecomment-461783804

* swarm/network: protect addrCountC in Kademlia.AddrCountC function

https://github.com/ethersphere/go-ethereum/issues/1198#issuecomment-462273444

* p2p/simulations: fix a deadlock calling getRandomNode with lock

https://github.com/ethersphere/go-ethereum/issues/1198#issuecomment-462317407

* swarm/network/stream: terminate disconnect goruotines in tests

* swarm/network/stream: reduce memory consumption when testing data races

* swarm/network/stream: add watchDisconnections helper function

* swarm/network/stream: add concurrent counter for tests

* swarm/network/stream: rename race/norace test files and use const

* swarm/network/stream: remove watchSim and its panic

* swarm/network/stream: pass context in watchDisconnections

* swarm/network/stream: add concurrent safe bool for watchDisconnections

* swarm/storage: fix LDBStore.batchesC data race by not closing it

(cherry picked from commit 3fd6db2bf63ce90232de445c7f33943406a5e634)
2019-02-19 13:11:52 +01:00
Elad
a0127019c3
swarm: fix uptime gauge update goroutine leak by introducing cleanup functions (#19040)
(cherry picked from commit d596bea2d501d20b92e0fd4baa8bba682157dfa7)
2019-02-19 13:11:51 +01:00
holisticode
7a333e4104
swarm/storage: fix HashExplore concurrency bug ethersphere#1211 (#19028)
* swarm/storage: fix HashExplore concurrency bug ethersphere#1211

*  swarm/storage: lock as value not pointer

* swarm/storage: wait for  to complete

* swarm/storage: fix linter problems

* swarm/storage: append to nil slice

(cherry picked from commit 3d22a46c94f1d842dbada665b36a453362adda74)
2019-02-19 13:11:51 +01:00
gluk256
799fe99537
swarm/pss: mutex lifecycle fixed (#19045)
(cherry picked from commit b30109df3c7c56cb0d1752fc03f478474c3c190a)
2019-02-19 13:11:51 +01:00
Rafael Matias
3b02b0ba4b
swarm/docker: add global-store and split docker images (#19038)
(cherry picked from commit 6cb7d52a29c68cdc4eafabb6dfe7594c288d151e)
2019-02-19 13:11:51 +01:00
Janoš Guljaš
85217b08bd
cmd/swarm/global-store: global store cmd (#19014)
(cherry picked from commit 33d0a0efa61fed2b16797fd12161519943943282)
2019-02-19 13:11:51 +01:00
Ferenc Szabo
dcff622d43
swarm: CI race detector test adjustments (#19017)
(cherry picked from commit 27e3f968194e2723279b60f71c79d4da9fc7577f)
2019-02-19 13:11:51 +01:00
Anton Evangelatov
a3db00f270
swarm/network: refactor simulation tests bootstrap (#18975)
(cherry picked from commit 597597e8b27ee60a25b4533771702892e72898a5)
2019-02-19 13:11:50 +01:00
holisticode
769e43e334
swarm: GetPeerSubscriptions RPC (#18972)
(cherry picked from commit 43e1b7b124d2bcfba98fbe54972a35c022d85bf2)
2019-02-19 13:11:50 +01:00
gluk256
8d8ddea1a3
swarm/pss: transition to whisper v6 (#19023)
(cherry picked from commit cde02e017ef2fb254f9b91888f4a14645c24890a)
2019-02-19 13:09:10 +01:00
lash
068725c5b0
swarm/network, swarm/storage: Preserve opentracing contexts (#19022)
(cherry picked from commit 0c10d376066cb7e57d3bfc03f950c7750cd90640)
2019-02-19 13:09:09 +01:00
Ferenc Szabo
710775f435
swarm/network: fix data race in fetcher_test.go (#18469)
(cherry picked from commit 19bfcbf9117f39f54f698a0953534d90c08e9930)
2019-02-19 13:09:09 +01:00
lash
0fd0108507
swarm/pss: Remove pss service leak in test (#18992)
(cherry picked from commit 7c60d0a6a2d3925c2862cbbb188988475619fd0d)
2019-02-19 13:06:14 +01:00
Ferenc Szabo
3c62cc6bba
swarm/storage: fix test timeout with -race by increasing mget timeout
(cherry picked from commit 1c3aa8d9b12d6104ccddecc1711bc6be2f5b269d)
2019-02-19 13:06:14 +01:00
Janoš Guljaš
333b1bfb6c
swarm/storage/localstore: new localstore package (#19015)
(cherry picked from commit 4f3d22f06c546f36487b33dfb6b5cb4df3ecf073)
2019-02-19 13:06:14 +01:00
holisticode
d1ace4f344
swarm: Debug API and HasChunks() API endpoint (#18980)
(cherry picked from commit 41597c2856d6ac7328baca1340c3e36ab0edd382)
2019-02-19 13:06:13 +01:00
Anton Evangelatov
637a75d61a
cmd/swarm/swarm-smoke: refactor generateEndpoints (#19006)
(cherry picked from commit d212535ddd5bf63a0c0b194525246480ae46c537)
2019-02-19 13:05:55 +01:00
Anton Evangelatov
355d55bd34
cmd/swarm/swarm-smoke: remove wrong metrics (#18970)
(cherry picked from commit c5c9cef5c0baf1652b6642858ad2426794823699)
2019-02-19 13:05:37 +01:00
Elad
7038b5734c
cmd/swarm/swarm-smoke: sliding window test (#18967)
(cherry picked from commit b91bf08876ca4da0c2a843a9ed3e88d64427cfb8)
2019-02-19 13:05:26 +01:00
holisticode
1ecf2860cf
cmd/swarm: hashes command (#19008)
(cherry picked from commit 7f55b0cbd8618a1b0de8d7e37d2b0143ebae4abf)
2019-02-19 12:57:53 +01:00
holisticode
034f65e9e8
swarm/storage: Get all chunk references for a given file (#19002)
(cherry picked from commit 3eff652a7b606f25d43bef6ccb998b8e306f8a75)
2019-02-19 12:57:53 +01:00
lash
607a1968e6
swarm/network: Remove extra random peer, connect test sanity, comments (#18964)
(cherry picked from commit f9401ae011ddf7f8d2d95020b7446c17f8d98dc1)
2019-02-19 12:57:53 +01:00
Janoš Guljaš
3f54994db0
swarm: fix flaky delivery tests (#18971)
(cherry picked from commit 592bf6a59cac9697f0491b24e5093cb759d7e44c)
2019-02-19 12:57:53 +01:00
Elad
2695aa9e0d
p2p/testing, swarm: remove unused testing.T in protocol tester (#18500)
(cherry picked from commit 2abeb35d5425d72c2f7fdfe4209f7a94fac52a8e)
2019-02-19 12:56:31 +01:00
gluk256
e247dcc141
swarm/version: commit version added (#18510)
(cherry picked from commit ad13d2d407d2f614c39af92430fda0a926da2a8a)
2019-02-19 12:56:31 +01:00
Janoš Guljaš
b774d0a507
swarm: fix a data race on startTime (#18511)
(cherry picked from commit fa34429a2695f57bc0a96cd78f25e86700d8ee44)
2019-02-19 12:56:30 +01:00
Anton Evangelatov
4976fcc91a
swarm: bootnode-mode, new bootnodes and no p2p package discovery (#18498)
(cherry picked from commit bbd120354a8d226b446591eeda9f9462cb9b690a)
2019-02-19 12:56:30 +01:00
Anton Evangelatov
878aa58ec6
cmd/swarm: use resetting timer to measure fetch time (#18474)
(cherry picked from commit a0b0db63055e1dd350215f9fe04b0abf19f3488a)
2019-02-19 12:56:30 +01:00
Elad
475a0664c5
p2p/simulations: fix data race on swarm/network/simulations (#18464)
(cherry picked from commit 85a79b3ad3c5863f8612d25c246bcfad339f36b7)
2019-02-19 12:56:30 +01:00
holisticode
4625b1257f
cmd/swarm/swarm-smoke: use ResettingTimer instead of Counters for times (#18479)
(cherry picked from commit 560957799a089042e471320d179ef2e96caf4f8d)
2019-02-19 12:56:30 +01:00
Elad
21d54bcaac
cmd/swarm/swarm-snapshot: disable tests on windows (#18478)
(cherry picked from commit 632135ce4c1d8d3d9a36771aab4137260018e84b)
2019-02-19 12:56:30 +01:00
holisticode
7383db4dac
Upload speed (#18442)
(cherry picked from commit 257bfff316e4efb8952fbeb67c91f86af579cb0a)
2019-02-19 12:56:30 +01:00
Elad
afb65f6ace
swarm/network: fix data race warning on TestBzzHandshakeLightNode (#18459)
(cherry picked from commit 81e26d5a4837077d5fff17e7b461061b134a4a00)
2019-02-19 12:55:18 +01:00
Viktor Trón
1f1c751b6e
swarm/network: rewrite of peer suggestion engine, fix skipped tests (#18404)
* swarm/network: fix skipped tests related to suggestPeer

* swarm/network: rename depth to radius

* swarm/network: uncomment assertHealth and improve comments

* swarm/network: remove commented code

* swarm/network: kademlia suggestPeer algo correction

* swarm/network: kademlia suggest peer

 * simplify suggest Peer code
 * improve peer suggestion algo
 * add comments
 * kademlia testing improvements
   * assertHealth -> checkHealth (test helper)
   * testSuggestPeer -> checkSuggestPeer (test helper)
   * remove testSuggestPeerBug and TestKademliaCase

* swarm/network: kademlia suggestPeer cleanup, improved comments

* swarm/network: minor comment, discovery test default arg

(cherry picked from commit bcb2594151c849d65108dd94e54b69067d117d7d)
2019-02-19 12:55:07 +01:00
Elad
a3f31f51f3
cmd/swarm/swarm-snapshot: swarm snapshot generator (#18453)
* cmd/swarm/swarm-snapshot: add binary to create network snapshots

* cmd/swarm/swarm-snapshot: refactor and extend tests

* p2p/simulations: remove unused triggerChecks func and fix linter

* internal/cmdtest: raise the timeout for killing TestCmd

* cmd/swarm/swarm-snapshot: add more comments and other minor adjustments

* cmd/swarm/swarm-snapshot: remove redundant check in createSnapshot

* cmd/swarm/swarm-snapshot: change comment wording

* p2p/simulations: revert Simulation.Run from master

https://github.com/ethersphere/go-ethereum/pull/1077/files#r247078904

* cmd/swarm/swarm-snapshot: address pr comments

* swarm/network/simulations/discovery: removed snapshot write to file

* cmd/swarm/swarm-snapshot, swarm/network/simulations: removed redundant connection event check, fixed lint error

(cherry picked from commit 34f11e752f61b81c13cdde0649a3c7b14f801c69)
2019-02-19 12:54:56 +01:00
Janoš Guljaš
e63995b3f3
swarm/network: fix data race in TestNetworkID test (#18460)
(cherry picked from commit 96c7c18b184ae894f1c6bd5fbfc45fbcfa9ace77)
2019-02-19 12:54:10 +01:00
Janoš Guljaš
dd3e894747
swarm/storage: fix mockNetFetcher data races (#18462)
fixes: ethersphere/go-ethereum#1117
(cherry picked from commit f728837ee6b48a2413437f54057b4552b7e77494)
2019-02-19 12:54:10 +01:00
Péter Szilágyi
df355eceb4
build: explicitly force .xz compression (old debuild picks gzip) (#19118)
(cherry picked from commit c0b9c763bb1572c202a60b82e7dcdc48dc3c280a)
2019-02-19 11:00:46 +02:00
Péter Szilágyi
84cb00a94d
travis.yml: add launchpad SSH public key (#19115)
(cherry picked from commit 75a931470ee006623f7f172d2a50e7723ca26187)
2019-02-19 11:00:38 +02:00
Martin Holst Swende
992a7bbad5
vendor: update bigcache
(cherry picked from commit 37e5a908e7368d84beef14a3ee8c534f34aa636f)
2019-02-19 11:00:31 +02:00
Martin Holst Swende
a458153098
trie: fix error in node decoding (#19111) 2019-02-19 10:59:57 +02:00