<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dexon/swarm/state, branch yilan</title>
<subtitle>DEXON full node (https://github.com/dexon-foundation/dexon)
</subtitle>
<id>https://lant.com.tw/~lantw44/cgit/cgit.cgi/dexon/atom?h=yilan</id>
<link rel='self' href='https://lant.com.tw/~lantw44/cgit/cgit.cgi/dexon/atom?h=yilan'/>
<link rel='alternate' type='text/html' href='https://lant.com.tw/~lantw44/cgit/cgit.cgi/dexon/'/>
<updated>2019-02-19T12:11:52+00:00</updated>
<entry>
<title>p2p, swarm: fix node up races by granular locking (#18976)</title>
<updated>2019-02-19T12:11:52+00:00</updated>
<author>
<name>Ferenc Szabo</name>
<email>frncmx@gmail.com</email>
</author>
<published>2019-02-18T06:38:14+00:00</published>
<link rel='alternate' type='text/html' href='https://lant.com.tw/~lantw44/cgit/cgit.cgi/dexon/commit/?id=88577076069664b026736d8afb9b708fb26da54a'/>
<id>urn:sha1:88577076069664b026736d8afb9b708fb26da54a</id>
<content type='text'>
* 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 -&gt; getDownNodeIDs() -&gt;
GetNodes() tries to lock -&gt; 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.
=&gt; Let's just remove the comment.

(cherry picked from commit 50b872bf05b8644f14b9bea340092ced6968dd59)
</content>
</entry>
<entry>
<title>swarm: remove unused/dead code (#18351)</title>
<updated>2018-12-23T16:31:32+00:00</updated>
<author>
<name>Anton Evangelatov</name>
<email>anton.evangelatov@gmail.com</email>
</author>
<published>2018-12-23T16:31:32+00:00</published>
<link rel='alternate' type='text/html' href='https://lant.com.tw/~lantw44/cgit/cgit.cgi/dexon/commit/?id=9e9fc87e70accf2b81be8772ab2ab0c914e95666'/>
<id>urn:sha1:9e9fc87e70accf2b81be8772ab2ab0c914e95666</id>
<content type='text'>
</content>
</entry>
<entry>
<title>swarm/state: refactor InmemoryStore (#18143)</title>
<updated>2018-11-21T13:36:56+00:00</updated>
<author>
<name>Anton Evangelatov</name>
<email>anton.evangelatov@gmail.com</email>
</author>
<published>2018-11-21T13:36:56+00:00</published>
<link rel='alternate' type='text/html' href='https://lant.com.tw/~lantw44/cgit/cgit.cgi/dexon/commit/?id=4c181e4fb98bb88503cccd6147026b6c2b7b56f6'/>
<id>urn:sha1:4c181e4fb98bb88503cccd6147026b6c2b7b56f6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>swarm, cmd/swarm: address ineffectual assignments (#18048)</title>
<updated>2018-11-07T19:39:08+00:00</updated>
<author>
<name>Anton Evangelatov</name>
<email>anton.evangelatov@gmail.com</email>
</author>
<published>2018-11-07T19:39:08+00:00</published>
<link rel='alternate' type='text/html' href='https://lant.com.tw/~lantw44/cgit/cgit.cgi/dexon/commit/?id=cf3b187bdef59078ba6570a2f5ee046ab87bcefd'/>
<id>urn:sha1:cf3b187bdef59078ba6570a2f5ee046ab87bcefd</id>
<content type='text'>
* swarm, cmd/swarm: address ineffectual assignments

* swarm/network: remove unused vars from testHandshake

* swarm/storage/feed: revert cursor changes
</content>
</entry>
<entry>
<title>swarm: network rewrite merge</title>
<updated>2018-06-21T19:10:31+00:00</updated>
<author>
<name>ethersphere</name>
<email>thesw@rm.eth</email>
</author>
<published>2018-06-20T12:06:27+00:00</published>
<link rel='alternate' type='text/html' href='https://lant.com.tw/~lantw44/cgit/cgit.cgi/dexon/commit/?id=e187711c6545487d4cac3701f0f506bb536234e2'/>
<id>urn:sha1:e187711c6545487d4cac3701f0f506bb536234e2</id>
<content type='text'>
</content>
</entry>
</feed>
