Skip to content

Commit 3329509

Browse files
authored
Merge pull request #2077 from iotaledger/develop
Release v0.8.7
2 parents 3f26ba8 + 3dec812 commit 3329509

File tree

27 files changed

+358
-63
lines changed

27 files changed

+358
-63
lines changed

CHANGELOG.md

+17
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,20 @@
1+
# v0.8.7 - 2022-02-24
2+
3+
> This release introduces several small bug fixes and improvements.
4+
5+
The snapshot has been taken at 2022-02-21 17:30 CET.
6+
- Try to adjust rate limit better (#2053)
7+
- /healthz to reflect Synced status (#2075)
8+
- clean test cache (#2045)
9+
- expose port ES to outside (#2052)
10+
- Build(deps): bump url-parse from 1.5.3 to 1.5.7 in dashboards and DAGs visualizer (#2059)
11+
- DAGs Vis: Add legend (#2056)
12+
- Check vertex data before accessing it in graphs (#2054)
13+
- Build(deps): bump follow-redirects from 1.14.7 to 1.14.8 in /plugins/analysis/dashboard/frontend (#2041)
14+
- Build(deps): bump follow-redirects from 1.14.7 to 1.14.8 in /plugins/dashboard/frontend (#2040)
15+
- DAGs Vis: color dags on confirmation and hide aggr branches (#2037)
16+
- Fix output link to dashboard (#2044)
17+
118
# v0.8.6 - 2022-02-11
219

320
> This release introduces the "Merge to Master" functionality to avoid propagation of Confirmed branches to the future cone and introduces an amazing new DAGs Visualizer tool! The new visualizer is exposed on port 8061 by default, check it out!

deploy/ansible/roles/metrics/templates/docker-compose.yml.j2

+2-2
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ services:
5050
- type: volume
5151
source: elasticsearch_data
5252
target: /usr/share/elasticsearch/data
53-
expose:
54-
- "9200"
53+
ports:
54+
- "9200:9200"
5555
environment:
5656
ES_JAVA_OPTS: "-Xmx2g -Xms2g"
5757
# Use single node discovery in order to disable production mode and avoid bootstrap checks

packages/firewall/firewall.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,12 @@ func (fd *FaultinessDetails) toKVList() []interface{} {
4545

4646
// HandleFaultyPeer handles a faulty peer and takes appropriate actions.
4747
func (f *Firewall) HandleFaultyPeer(peerID identity.ID, details *FaultinessDetails) {
48-
f.log.Info("Peer is faulty, executing firewall logic to handle the peer",
49-
"peerId", peerID, details.toKVList())
48+
logKVList := append([]interface{}{"peerId", peerID}, details.toKVList()...)
49+
f.log.Infow("Peer is faulty, executing firewall logic to handle the peer", logKVList...)
5050
f.incrPeerFaultinessCount(peerID)
5151
nbr, err := f.gossipMgr.GetNeighbor(peerID)
5252
if err != nil {
53-
f.log.Errorw("Can't get neighbor info from the gossip manager", "peerId", peerID)
53+
f.log.Errorw("Can't get neighbor info from the gossip manager", "peerId", peerID, "err", err)
5454
return
5555
}
5656
if nbr.Group == gossip.NeighborsGroupAuto {
@@ -63,7 +63,7 @@ func (f *Firewall) HandleFaultyPeer(peerID identity.ID, details *FaultinessDetai
6363
}
6464
} else if nbr.Group == gossip.NeighborsGroupManual {
6565
f.log.Warnw("To the node operator. One of neighbors connected via manual peering acts faulty, no automatic actions taken. Consider removing it from the known peers list.",
66-
"neighborId", peerID, details.toKVList())
66+
logKVList...)
6767
}
6868
}
6969

packages/gossip/manager.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,8 @@ func (m *Manager) RequestMessage(messageID []byte, to ...identity.ID) {
236236
recipients := m.send(packet, to...)
237237
if m.messagesRateLimiter != nil {
238238
for _, nbr := range recipients {
239-
m.messagesRateLimiter.ExtendLimit(nbr.Peer)
239+
// Increase the limit by 2 for every message request to make rate limiter more forgiving during node sync.
240+
m.messagesRateLimiter.ExtendLimit(nbr.Peer, 2)
240241
}
241242
}
242243
}

packages/ratelimiter/rate_limiter.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@ func (prl *PeerRateLimiter) Count(p *peer.Peer) {
7373
}
7474

7575
// ExtendLimit extends the activity limit of the peer.
76-
func (prl *PeerRateLimiter) ExtendLimit(p *peer.Peer) {
77-
if err := prl.doExtendLimit(p); err != nil {
76+
func (prl *PeerRateLimiter) ExtendLimit(p *peer.Peer, val int) {
77+
if err := prl.doExtendLimit(p, val); err != nil {
7878
prl.log.Warnw("Rate limiter failed to extend peer activity limit",
7979
"peerId", p.ID())
8080
}
@@ -116,12 +116,12 @@ func (prl *PeerRateLimiter) doCount(p *peer.Peer) error {
116116
return nil
117117
}
118118

119-
func (prl *PeerRateLimiter) doExtendLimit(p *peer.Peer) error {
119+
func (prl *PeerRateLimiter) doExtendLimit(p *peer.Peer, val int) error {
120120
peerRecord, err := prl.getPeerRecord(p)
121121
if err != nil {
122122
return errors.WithStack(err)
123123
}
124-
peerRecord.limitExtensionCounter.Incr(1)
124+
peerRecord.limitExtensionCounter.Incr(int64(val))
125125
return nil
126126
}
127127

packages/ratelimiter/rate_limiter_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ func TestPeerRateLimiter_ExtendLimit(t *testing.T) {
4545
testPeer := newTestPeer()
4646
limitExtensionCount := 3
4747
for i := 0; i < limitExtensionCount; i++ {
48-
prl.ExtendLimit(testPeer)
48+
prl.ExtendLimit(testPeer, 1)
4949
}
5050
testCount(t, prl, testPeer, defaultTestLimit+limitExtensionCount)
5151
}

pkged.go

+1-1
Large diffs are not rendered by default.

plugins/analysis/dashboard/frontend/yarn.lock

+6-6
Original file line numberDiff line numberDiff line change
@@ -2614,9 +2614,9 @@ flush-write-stream@^1.0.0:
26142614
readable-stream "^2.3.6"
26152615

26162616
follow-redirects@^1.0.0:
2617-
version "1.14.7"
2618-
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.7.tgz#2004c02eb9436eee9a21446a6477debf17e81685"
2619-
integrity sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==
2617+
version "1.14.8"
2618+
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc"
2619+
integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==
26202620

26212621
for-in@^1.0.2:
26222622
version "1.0.2"
@@ -6165,9 +6165,9 @@ url-loader@^4.1.0:
61656165
schema-utils "^2.6.5"
61666166

61676167
url-parse@^1.4.3:
6168-
version "1.5.3"
6169-
resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.3.tgz#71c1303d38fb6639ade183c2992c8cc0686df862"
6170-
integrity sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==
6168+
version "1.5.7"
6169+
resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.7.tgz#00780f60dbdae90181f51ed85fb24109422c932a"
6170+
integrity sha512-HxWkieX+STA38EDk7CE9MEryFeHCKzgagxlGvsdS7WBImq9Mk+PGwiT56w82WI3aicwJA8REp42Cxo98c8FZMA==
61716171
dependencies:
61726172
querystringify "^2.1.1"
61736173
requires-port "^1.0.0"

plugins/autopeering/discovery/parameters.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import "github.com/iotaledger/hive.go/configuration"
55
// ParametersDefinitionDiscovery contains the definition of configuration parameters used by the autopeering peer discovery.
66
type ParametersDefinitionDiscovery struct {
77
// NetworkVersion defines the config flag of the network version.
8-
NetworkVersion uint32 `default:"47" usage:"autopeering network version"`
8+
NetworkVersion uint32 `default:"48" usage:"autopeering network version"`
99

1010
// EntryNodes defines the config flag of the entry nodes.
1111
EntryNodes []string `default:"2PV5487xMw5rasGBXXWeqSi4hLz7r19YBt8Y1TGAsQbj@analysisentry-01.devnet.shimmer.iota.cafe:15626,5EDH4uY78EA6wrBkHHAVBWBMDt7EcksRq6pjzipoW15B@entry-0.devnet.tanglebay.com:14646,CAB87iQZR6BjBrCgEBupQJ4gpEBgvGKKv3uuGVRBKb4n@entry-1.devnet.tanglebay.com:14646" usage:"list of trusted entry nodes for auto peering"`

plugins/banner/plugin.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ var (
1515
Plugin = node.NewPlugin(PluginName, nil, node.Enabled, configure, run)
1616

1717
// AppVersion version number
18-
AppVersion = "v0.8.6"
18+
AppVersion = "v0.8.7"
1919
// SimplifiedAppVersion is the version number without commit hash
2020
SimplifiedAppVersion = simplifiedVersion(AppVersion)
2121
)

plugins/dagsvisualizer/frontend/src/components/BranchDAG.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import InputGroup from 'react-bootstrap/InputGroup';
1414
import FormControl from 'react-bootstrap/FormControl';
1515
import 'styles/style.css';
1616
import GlobalStore from '../stores/GlobalStore';
17+
import { BranchLegend } from './Legend';
1718

1819
interface Props {
1920
branchStore?: BranchStore;
@@ -171,6 +172,7 @@ export default class BranchDAG extends React.Component<Props, any> {
171172
<BranchInfo />
172173
<div id="branchVisualizer" />
173174
</div>
175+
<BranchLegend />
174176
</div>
175177
</Collapse>
176178
<br />
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
import * as React from 'react';
2+
import { COLOR } from '../styles/tangleStyles';
3+
import { BRANCH, UTXO } from '../styles/cytoscapeStyles';
4+
5+
export class TangleLegend extends React.Component<any, any> {
6+
render() {
7+
const nodeLabels = [
8+
'MSG Confirmed',
9+
'MSG Pending',
10+
'TX Confirmed',
11+
'TX Pending',
12+
'Tip',
13+
'Unknown'
14+
];
15+
const nodeColors = [
16+
COLOR.MESSAGE_CONFIRMED,
17+
COLOR.MESSAGE_PENDING,
18+
COLOR.TRANSACTION_CONFIRMED,
19+
COLOR.TRANSACTION_PENDING,
20+
COLOR.TIP,
21+
COLOR.NODE_UNKNOWN
22+
];
23+
const linkLabels = [
24+
'Strong',
25+
'Weak',
26+
'Shallow Liked',
27+
'Shallow Disliked'
28+
];
29+
const linksColors = [
30+
COLOR.LINK_STRONG,
31+
COLOR.LINK_WEAK,
32+
COLOR.LINK_SHALLOW_LIKED,
33+
COLOR.LINK_SHALLOW_DISLIKED
34+
];
35+
const linkTypes = ['solid', 'dashed', 'dotted', 'dotted'];
36+
37+
const legendItemsNodes = [];
38+
const legendItemsLinks = [];
39+
40+
for (const i in nodeLabels) {
41+
legendItemsNodes.push(
42+
<div className={'legend-item'}>
43+
<div
44+
className="legend-color"
45+
style={{
46+
backgroundColor: nodeColors[i]
47+
}}
48+
/>
49+
<div className="legend-label">{nodeLabels[i]}</div>
50+
</div>
51+
);
52+
}
53+
legendItemsLinks.push(
54+
<div className={'legend-item'}>
55+
<div
56+
className="legend-color"
57+
style={{
58+
backgroundColor: COLOR.MESSAGE_CONFIRMED
59+
}}
60+
>
61+
<div className={'legend-marker'} />
62+
</div>
63+
<div className="legend-label">Marker</div>
64+
</div>
65+
);
66+
for (const i in linkLabels) {
67+
legendItemsLinks.push(
68+
<div className={'legend-item'}>
69+
<div
70+
className="link-type"
71+
style={{
72+
borderBottom: `${linkTypes[i]} 2px ${linksColors[i]}`
73+
}}
74+
/>
75+
<div className="legend-label">{linkLabels[i]}</div>
76+
</div>
77+
);
78+
}
79+
return (
80+
<>
81+
<div className="legend">{legendItemsNodes}</div>
82+
<div className="legend">{legendItemsLinks}</div>
83+
</>
84+
);
85+
}
86+
}
87+
88+
export class UTXOLegend extends React.Component<any, any> {
89+
render() {
90+
const nodeLabels = ['TX Confirmed', 'TX Pending'];
91+
const nodeColors = [UTXO.COLOR_CONFIRMED, UTXO.PARENT_COLOR];
92+
93+
const legendItemsNodes = [];
94+
95+
for (const i in nodeLabels) {
96+
legendItemsNodes.push(
97+
<div className={'legend-item'}>
98+
<div
99+
className="legend-color"
100+
style={{
101+
backgroundColor: nodeColors[i]
102+
}}
103+
/>
104+
<div className="legend-label">{nodeLabels[i]}</div>
105+
</div>
106+
);
107+
}
108+
return (
109+
<>
110+
<div className="legend">{legendItemsNodes}</div>
111+
</>
112+
);
113+
}
114+
}
115+
116+
export class BranchLegend extends React.Component<any, any> {
117+
render() {
118+
const nodeLabels = [
119+
'Conflict branch confirmed',
120+
'Conflict branch pending/rejected',
121+
'Master branch'
122+
];
123+
const nodeColors = [
124+
BRANCH.COLOR_CONFIRMED,
125+
BRANCH.COLOR,
126+
BRANCH.MASTER_COLOR
127+
];
128+
129+
const legendItemsNodes = [];
130+
131+
for (const i in nodeLabels) {
132+
legendItemsNodes.push(
133+
<div className={'legend-item'}>
134+
<div
135+
className="legend-color"
136+
style={{
137+
backgroundColor: nodeColors[i]
138+
}}
139+
/>
140+
<div className="legend-label">{nodeLabels[i]}</div>
141+
</div>
142+
);
143+
}
144+
return (
145+
<>
146+
<div className="legend">{legendItemsNodes}</div>
147+
</>
148+
);
149+
}
150+
}

plugins/dagsvisualizer/frontend/src/components/TangleDAG.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import OverlayTrigger from 'react-bootstrap/OverlayTrigger';
1414
import InputGroup from 'react-bootstrap/InputGroup';
1515
import FormControl from 'react-bootstrap/FormControl';
1616
import GlobalStore from '../stores/GlobalStore';
17+
import { TangleLegend } from './Legend';
1718

1819
interface Props {
1920
tangleStore?: TangleStore;
@@ -171,6 +172,7 @@ export default class TangleDAG extends React.Component<Props, any> {
171172
<MessageInfo />
172173
<div id="tangleVisualizer" />
173174
</div>
175+
<TangleLegend />
174176
</div>
175177
</Collapse>
176178
<br />

plugins/dagsvisualizer/frontend/src/components/TransactionInfo.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ export class TransactionInfo extends React.Component<Props, any> {
5757
{selectedTx.outputs.map((p, i) => (
5858
<ListGroup.Item key={i}>
5959
<LinkToDashboard
60-
route={`/explorer/output/${p}`}
60+
route={`explorer/output/${p}`}
6161
title={p}
6262
/>
6363
</ListGroup.Item>

plugins/dagsvisualizer/frontend/src/components/UTXODAG.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import OverlayTrigger from 'react-bootstrap/OverlayTrigger';
1313
import InputGroup from 'react-bootstrap/InputGroup';
1414
import FormControl from 'react-bootstrap/FormControl';
1515
import GlobalStore from '../stores/GlobalStore';
16+
import { UTXOLegend } from './Legend';
1617

1718
interface Props {
1819
utxoStore?: UTXOStore;
@@ -170,6 +171,7 @@ export default class UTXODAG extends React.Component<Props, any> {
170171
<TransactionInfo />
171172
<div id="utxoVisualizer" />
172173
</div>
174+
<UTXOLegend />
173175
</div>
174176
</Collapse>
175177
<br />

0 commit comments

Comments
 (0)